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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/v3/schemas/tokens.ts","../../src/v3/schemas/api.ts","../../src/v3/schemas/resources.ts","../../src/v3/schemas/messages.ts","../../src/v3/schemas/common.ts","../../src/v3/schemas/schemas.ts","../../src/v3/schemas/style.ts","../../src/v3/schemas/fetch.ts","../../src/v3/schemas/eventFilter.ts","../../src/v3/schemas/openTelemetry.ts","../../src/v3/apiClient/index.ts","../../src/zodfetch.ts","../../src/v3/utils/flattenAttributes.ts","../../src/v3/utils/safeAsyncLocalStorage.ts","../../src/v3/semanticInternalAttributes.ts","../../src/v3/tasks/taskContextManager.ts","../../src/v3/utils/getEnv.ts","../../src/v3/zodMessageHandler.ts","../../src/v3/zodSocket.ts","../../src/v3/zodNamespace.ts","../../src/v3/zodIpc.ts","../../src/v3/errors.ts","../../src/v3/utils/platform.ts","../../src/v3/utils/globals.ts","../../src/v3/runtime/noopRuntimeManager.ts","../../src/v3/runtime/index.ts","../../src/v3/runtime-api.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/logger/index.ts","../../src/v3/logger-api.ts","../../src/v3/limits.ts","../../src/v3/utils/durations.ts","../../src/v3/runtime/devRuntimeManager.ts","../../src/v3/runtime/prodRuntimeManager.ts","../../src/v3/clock/preciseWallClock.ts","../../src/v3/tracer.ts","../../src/v3/consoleInterceptor.ts","../../src/retry.ts","../../src/v3/utils/retries.ts","../../src/v3/utils/styleAttributes.ts","../../src/eventFilterMatches.ts","../../src/v3/utils/omit.ts","../../src/v3/otel/index.ts","../../src/v3/otel/tracingSDK.ts","../../src/v3/workers/taskExecutor.ts","../../src/v3/utils/ioSerialization.ts","../../package.json","../../src/v3/utils/detectDependencyVersion.ts","../../src/v3/index.ts"],"names":["z","CreateAuthorizationCodeResponseSchema","object","url","string","authorizationCode","GetPersonalAccessTokenRequestSchema","GetPersonalAccessTokenResponseSchema","token","obfuscatedToken","nullable","TaskRunBuiltInError","type","literal","name","message","stackTrace","TaskRunCustomErrorObject","raw","TaskRunStringError","TaskRunErrorCodes","COULD_NOT_FIND_EXECUTOR","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","TaskRunInternalError","code","enum","optional","TaskRunError","discriminatedUnion","TaskRun","id","payload","payloadType","context","any","tags","array","isTest","boolean","default","createdAt","coerce","date","TaskRunExecutionTask","filePath","exportName","TaskRunExecutionAttempt","number","startedAt","backgroundWorkerId","backgroundWorkerTaskId","status","TaskRunExecutionEnvironment","slug","TaskRunExecutionOrganization","TaskRunExecutionProject","ref","TaskRunExecutionQueue","TaskRunExecutionBatch","TaskRunExecution","task","attempt","run","queue","environment","organization","project","batch","TaskRunContext","omit","TaskRunExecutionRetry","timestamp","delay","error","unknown","TaskRunFailedExecutionResult","ok","retry","skippedRetrying","TaskRunSuccessfulExecutionResult","output","outputType","TaskRunExecutionResult","BatchTaskRunExecutionResult","items","EnvironmentType","MachineCpu","union","MachineMemory","Machine","version","cpu","memory","TaskRunExecutionPayload","execution","traceContext","record","ProdTaskRunExecution","extend","worker","contentHash","ProdTaskRunExecutionPayload","BackgroundWorkerServerMessages","payloads","taskAttemptId","taskRunId","image","machine","envId","envType","orgId","projectId","runId","serverWebsocketMessages","SERVER_READY","BACKGROUND_WORKER_MESSAGE","data","BackgroundWorkerClientMessages","completion","BackgroundWorkerProperties","clientWebsocketMessages","READY_FOR_TASKS","BACKGROUND_WORKER_DEPRECATED","workerToChildMessages","EXECUTE_TASK_RUN","metadata","TASK_RUN_COMPLETED_NOTIFICATION","CLEANUP","flush","kill","FixedWindowRateLimit","limit","window","seconds","minutes","hours","SlidingWindowRateLimit","RateLimitOptions","RetryOptions","maxAttempts","int","factor","minTimeoutInMs","maxTimeoutInMs","randomize","QueueOptions","concurrencyLimit","min","max","rateLimit","TaskMetadata","packageVersion","partial","TaskMetadataWithFilePath","UncaughtExceptionMessage","stack","origin","childToWorkerMessages","TASK_RUN_COMPLETED","result","TASKS_READY","tasks","TASK_HEARTBEAT","READY_TO_DISPOSE","undefined","WAIT_FOR_DURATION","ms","WAIT_FOR_TASK","WAIT_FOR_BATCH","runs","UNCAUGHT_EXCEPTION","ProdChildToWorkerMessages","READY_FOR_CHECKPOINT","CANCEL_CHECKPOINT","now","callback","willCheckpointAndRestore","friendlyId","batchFriendlyId","runFriendlyIds","ProdWorkerToChildMessages","void","WAIT_COMPLETED_NOTIFICATION","TaskResource","BackgroundWorkerMetadata","cliPackageVersion","ImageDetailsMetadata","imageTag","WhoAmIResponseSchema","userId","email","dashboardUrl","GetProjectResponseBody","externalRef","title","GetProjectsResponseBody","GetProjectEnvResponse","apiKey","apiUrl","CreateBackgroundWorkerRequestBody","localOnly","CreateBackgroundWorkerResponse","TriggerTaskRequestBody","options","dependentAttempt","dependentBatch","lockToVersion","concurrencyKey","test","TriggerTaskResponse","BatchTriggerTaskRequestBody","BatchTriggerTaskResponse","batchId","GetBatchResponseBody","GetEnvironmentVariablesResponseBody","variables","StartDeploymentIndexingRequestBody","imageReference","StartDeploymentIndexingResponseBody","ExternalBuildData","buildId","buildToken","InitializeDeploymentResponseBody","shortCode","externalBuildData","registryHost","InitializeDeploymentRequestBody","GetDeploymentResponseBody","errorData","CreateUploadPayloadUrlResponseBody","presignedUrl","PostStartCauses","PreStopCauses","RegexSchema","custom","val","Config","triggerDirectories","triggerUrl","projectDir","tsconfigPath","retries","enabledInDev","additionalPackages","additionalFiles","dependenciesToBundle","WaitReason","ProviderToPlatformMessages","LOG","LOG_WITH_ACK","PlatformToProviderMessages","HEALTH","INDEX","success","RESTORE","location","reason","imageRef","checkpointId","DELETE","GET","CoordinatorToPlatformMessages","text","CREATE_WORKER","projectRef","deploymentId","READY_FOR_EXECUTION","totalCompletions","READY_FOR_RESUME","attemptFriendlyId","checkpoint","docker","CHECKPOINT_CREATED","attemptNumber","INDEXING_FAILED","PlatformToCoordinatorMessages","RESUME_AFTER_DEPENDENCY","attemptId","completions","executions","RESUME_AFTER_DURATION","REQUEST_ATTEMPT_CANCELLATION","READY_FOR_RETRY","ClientToSharedQueueMessages","SharedQueueToClientMessages","ProdWorkerToCoordinatorMessages","INDEX_TASKS","shouldExit","CoordinatorToProdWorkerMessages","executionPayload","REQUEST_EXIT","ProdWorkerSocketData","podName","deploymentVersion","PRIMARY_VARIANT","Variant","AccessoryItem","variant","Accessory","style","TaskEventStyle","icon","accessory","stringPatternMatchers","$endsWith","$startsWith","$ignoreCaseEquals","EventMatcher","$exists","$isNull","$anythingBut","$gt","$lt","$gte","$lte","$between","tuple","$includes","$not","EventFilter","lazy","FetchRetryHeadersStrategy","strategy","limitHeader","remainingHeader","resetHeader","bodyFilter","resetFormat","FetchRetryBackoffStrategy","FetchRetryStrategy","FetchRetryByStatusOptions","FetchTimeoutOptions","durationInMs","FetchRetryOptions","byStatus","timeout","connectionError","ExceptionEventProperties","stacktrace","ExceptionSpanEvent","time","properties","exception","CancellationSpanEvent","OtherSpanEvent","SpanEvent","SpanEvents","isExceptionSpanEvent","event","isCancellationSpanEvent","SpanMessagingEvent","system","client_id","operation","destination","propagation","zodfetch","schema","requestInit","response","fetch","method","statusText","body","json","jsonBody","parsedResult","safeParse","JSON","stringify","Error","flattenAttributes","obj","prefix","key","value","Object","entries","newPrefix","Array","isArray","i","length","assign","isRecord","unflattenAttributes","parts","split","reduce","acc","part","detectIsArrayIndex","push","filter","Boolean","current","cleanPart","substring","nextIsArray","lastPart","cleanLastPart","parseInt","match","primitiveValueOrflattenedAttributes","attributes","AsyncLocalStorage","SafeAsyncLocalStorage","constructor","storage","runWith","fn","getStore","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","TaskContextManager","_storage","isInsideTask","ctx","store","contextAttributes","workerAttributes","taskContextManager","TaskContextSpanProcessor","innerProcessor","_innerProcessor","onStart","span","parentContext","setAttributes","onEnd","shutdown","forceFlush","TaskContextLogProcessor","onEmit","logRecord","getEnvVar","process","env","ApiClient","baseUrl","accessToken","replace","triggerTask","taskId","headers","spanParentAsLink","batchTriggerTask","createUploadPayloadUrl","filename","getPayloadUrl","Authorization","inject","active","_getStore","getStore_fn","ApiClientManager","baseURL","client","apiClientManager","ZodMessageSchema","ZodMessageHandler","messages","handleMessage","parsedMessage","parseMessage","handler","console","String","ack","parsedPayload","registerHandlers","emitter","logger","log","info","eventName","keys","on","hasCallback","_schema","ZodMessageSender","sender","send","forwardMessage","io","messageSchema","_handlers","ZodSocketMessageHandler","handlers","ZodSocketMessageSender","socket","emit","sendWithAck","callbackResult","emitWithAck","_sender","ZodSocketConnection","opts","uri","secure","host","port","namespace","SimpleStructuredLogger","LogLevel","transports","auth","authToken","extraHeaders","reconnectionDelay","reconnectionDelayMax","child","socketId","serverMessages","clientMessages","onError","onConnection","description","onDisconnect","close","connect","bind","level","includes","DEBUG","debug","fields","args","warn","loggerFunction","structuredLog","Date","_logger","_handler","ZodNamespace","of","Promise","resolve","reject","err","preAuth","use","next","socketStage","handshake","disconnect","postAuth","fetchSockets","randomUUID","ZodIpcMessageHandler","Packet","sessionId","ZodIpcConnection","Map","listenSchema","emitSchema","timeoutInMs","currentId","defaultTimeoutInMs","setTimeout","set","clearTimeout","packet","parsedPacket","get","nodePath","parseError","e","createErrorTaskError","parse","correctErrorStackTrace","errorLine","traceLines","removeFirstLine","map","line","correctStackTraceLine","join","regex","exec","_","identifier","path","lineNum","colNum","basename","_globalThis","globalThis","global","GLOBAL_TRIGGER_DOT_DEV_KEY","Symbol","for","_global","registerGlobal","instance","allowOverride","api","getGlobal","unregisterGlobal","NoopRuntimeManager","disable","registerTasks","getTaskMetadata","waitForDuration","waitUntil","waitForTask","params","waitForBatch","API_NAME","NOOP_RUNTIME_MANAGER","RuntimeAPI","getInstance","_instance","setGlobalRuntimeManager","runtimeManager","runtime","SeverityNumber","iconStringForSeverity","severityNumber","UNSPECIFIED","TRACE","TRACE2","TRACE3","TRACE4","DEBUG2","DEBUG3","DEBUG4","INFO","INFO2","INFO3","INFO4","WARN","WARN2","WARN3","WARN4","ERROR","ERROR2","ERROR3","ERROR4","FATAL","FATAL2","FATAL3","FATAL4","PreciseDate","SimpleClock","preciseNow","nowStruct","toStruct","nanos","reset","SIMPLE_CLOCK","ClockAPI","setGlobalClock","clock","logLevels","OtelTaskLogger","_config","_level","indexOf","trace","tracer","startActiveSpan","severityText","NoopTaskLogger","NOOP_TASK_LOGGER","LoggerAPI","setGlobalTaskLogger","taskLogger","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","imposeAttributeLimits","newAttributes","calculateAttributeValueLength","v","humanizeDuration","dateDifference","date1","date2","Math","abs","getTime","formatDuration","start","end","formatDurationMilliseconds","nanosecondsToMilliseconds","nanoseconds","millisecondsToNanoseconds","milliseconds","formatDurationNanoseconds","aboveOneSecondUnits","belowOneSecondUnits","duration","units","maxDecimalPoints","largest","formatDurationInDays","DevRuntimeManager","_taskWaits","_batchWaits","_tasks","_pendingCompletionNotifications","pendingCompletion","delete","promise","all","results","resumeTask","wait","ProdRuntimeManager","ipc","resolveAfterDuration","waitThresholdInMs","waitForRestore","_waitForRestore","race","resumeAfterRestore","PreciseWallClock","_origin","clockTime","hrtime","preciseDate","elapsedHrTime","elapsedNanoseconds","BigInt","getFullTime","dateStruct","SpanStatusCode","logs","TriggerTracer","_tracer","getTracer","getLogger","extractContext","extract","startTime","startSpan","spanContext","spanId","recordException","setStatus","util","_getTimestampInHrTime","getTimestampInHrTime_fn","ConsoleInterceptor","intercept","originalConsole","format","parsed","tryParseJSON","getLogMessage","fallback","calculateResetAt","resets","calculateISO8601DurationOpenAIVariantResetAt","calculateISO8601ResetAt","calculateUnixTimestampResetAt","calculateUnixTimestampInMsResetAt","resetAt","isNaN","pattern","days","parseFloat","setDate","getDate","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","floor","setMilliseconds","getMilliseconds","defaultRetryOptions","defaultFetchRetryOptions","calculateNextRetryDelay","random","pow","round","calculateResetAtInternal","accessoryAttributes","eventFilterMatches","patternKey","patternValue","payloadValue","every","item","objectArray","contentFiltersMatches","some","actualValue","contentFilters","contentFilter","contentFilterMatches","endsWith","startsWith","localeCompare","sensitivity","DiagConsoleLogger","DiagLogLevel","diag","OTLPLogExporter","OTLPTraceExporter","registerInstrumentations","Resource","detectResourcesSync","processDetectorSync","BatchLogRecordProcessor","LoggerProvider","SimpleLogRecordProcessor","BatchSpanProcessor","NodeTracerProvider","SimpleSpanProcessor","SemanticResourceAttributes","_a","AsyncResourceDetector","_resolved","_promise","resolver","_resolver","detect","resolveWithAttributes","TracingSDK","config","asyncResourceDetector","setLogLevel","diagLogLevel","envResourceAttributesSerialized","envResourceAttributes","commonResources","detectors","merge","CLOUD_PROVIDER","resource","traceProvider","forceFlushTimeoutMillis","spanLimits","attributeCountLimit","attributeValueLengthLimit","eventCountLimit","attributePerEventCountLimit","linkCountLimit","attributePerLinkCountLimit","spanExporter","timeoutMillis","addSpanProcessor","maxExportBatchSize","scheduledDelayMillis","exportTimeoutMillis","maxQueueSize","register","instrumentations","tracerProvider","logExporter","loggerProvider","logRecordLimits","addLogRecordProcessor","_logProvider","_spanExporter","_traceProvider","setGlobalLoggerProvider","NONE","VERBOSE","ALL","setLogger","recordSpanException","SpanKind","parsePacket","dataType","loadSuperJSON","stringifyIO","conditionallyExportPacket","pathPrefix","needsOffloading","size","packetRequiresOffloading","exportPacket","byteLength","byteSize","Buffer","getPacketExtension","presignedResponse","uploadResponse","conditionallyImportPacket","importPacket","setAttribute","createPacketAttributes","dataKey","dataTypeKey","jsonified","safeReplacer","createPackageAttributesAsJson","deserialize","deserialized","jsonify","prettyPrintPacket","rawData","toString","RegExp","Set","from","forEach","k","TaskExecutor","_tracingSDK","tracingSDK","_consoleInterceptor","consoleInterceptor","projectConfig","_importedConfig","importedConfig","_handleErrorFn","handleErrorFn","execute","attemptMessage","originalPacket","initOutput","payloadPacket","stringifiedOutput","finalOutput","stringifyError","runError","handleErrorResult","handleErrorError","kind","CONSUMER","init","runFn","fns","middlewareFn","middleware","initFn","cleanupFn","cleanup","retriesConfig","handleError","retryDelayInMs","retryAt","skipRetrying","detectDependencyVersion","dependency","dependencies","parseTriggerTaskRequestBody","parseBatchTriggerTaskRequestBody"],"mappings":"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","sourcesContent":["import { z } from \"zod\";\n\nexport const CreateAuthorizationCodeResponseSchema = z.object({\n url: z.string().url(),\n authorizationCode: z.string(),\n});\n\nexport type CreateAuthorizationCodeResponse = z.infer<typeof CreateAuthorizationCodeResponseSchema>;\n\nexport const GetPersonalAccessTokenRequestSchema = z.object({\n authorizationCode: z.string(),\n});\nexport type GetPersonalAccessTokenRequest = z.infer<typeof GetPersonalAccessTokenRequestSchema>;\n\nexport const GetPersonalAccessTokenResponseSchema = z.object({\n token: z\n .object({\n token: z.string(),\n obfuscatedToken: z.string(),\n })\n .nullable(),\n});\nexport type GetPersonalAccessTokenResponse = z.infer<typeof GetPersonalAccessTokenResponseSchema>;\n","import { z } from \"zod\";\nimport { BackgroundWorkerMetadata, ImageDetailsMetadata } from \"./resources\";\nimport { QueueOptions } from \"./messages\";\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 test: z.boolean().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});\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 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: z\n .object({\n name: z.string(),\n message: z.string(),\n stack: z.string().optional(),\n })\n .optional()\n .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","import { z } from \"zod\";\nimport { Machine, QueueOptions, RetryOptions } from \"./messages\";\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});\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 { TaskRunExecution, TaskRunExecutionResult } from \"./common\";\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 BackgroundWorkerServerMessages = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"EXECUTE_RUNS\"),\n payloads: z.array(TaskRunExecutionPayload),\n }),\n z.object({\n type: z.literal(\"CANCEL_ATTEMPT\"),\n taskAttemptId: z.string(),\n taskRunId: z.string(),\n }),\n z.object({\n type: z.literal(\"SCHEDULE_ATTEMPT\"),\n image: z.string(),\n version: z.string(),\n machine: Machine,\n // identifiers\n id: z.string(), // attempt\n envId: z.string(),\n envType: EnvironmentType,\n orgId: z.string(),\n projectId: z.string(),\n runId: z.string(),\n }),\n]);\n\nexport type BackgroundWorkerServerMessages = z.infer<typeof BackgroundWorkerServerMessages>;\n\nexport const serverWebsocketMessages = {\n SERVER_READY: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n id: z.string(),\n }),\n BACKGROUND_WORKER_MESSAGE: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n data: BackgroundWorkerServerMessages,\n }),\n};\n\nexport const BackgroundWorkerClientMessages = z.discriminatedUnion(\"type\", [\n z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n type: z.literal(\"TASK_RUN_COMPLETED\"),\n completion: TaskRunExecutionResult,\n execution: TaskRunExecution,\n }),\n z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n type: z.literal(\"TASK_HEARTBEAT\"),\n id: z.string(),\n }),\n]);\n\nexport type BackgroundWorkerClientMessages = z.infer<typeof BackgroundWorkerClientMessages>;\n\nexport const BackgroundWorkerProperties = z.object({\n id: z.string(),\n version: z.string(),\n contentHash: z.string(),\n});\n\nexport type BackgroundWorkerProperties = z.infer<typeof BackgroundWorkerProperties>;\n\nexport const clientWebsocketMessages = {\n READY_FOR_TASKS: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n }),\n BACKGROUND_WORKER_DEPRECATED: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n }),\n BACKGROUND_WORKER_MESSAGE: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n data: BackgroundWorkerClientMessages,\n }),\n};\n\nexport const workerToChildMessages = {\n EXECUTE_TASK_RUN: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n execution: TaskRunExecution,\n traceContext: z.record(z.unknown()),\n metadata: BackgroundWorkerProperties,\n }),\n TASK_RUN_COMPLETED_NOTIFICATION: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n completion: TaskRunExecutionResult,\n execution: TaskRunExecution,\n }),\n CLEANUP: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n flush: z.boolean().default(false),\n kill: z.boolean().default(true),\n }),\n};\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 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 type RateLimitOptions = z.infer<typeof RateLimitOptions>;\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(1).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 exportName: z.string(),\n packageVersion: z.string(),\n queue: QueueOptions.optional(),\n retry: RetryOptions.optional(),\n machine: Machine.partial().optional(),\n});\n\nexport type TaskMetadata = z.infer<typeof TaskMetadata>;\n\nexport const TaskMetadataWithFilePath = TaskMetadata.extend({\n filePath: z.string(),\n});\n\nexport type TaskMetadataWithFilePath = z.infer<typeof TaskMetadataWithFilePath>;\n\nexport const UncaughtExceptionMessage = z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n error: z.object({\n name: z.string(),\n message: z.string(),\n stack: z.string().optional(),\n }),\n origin: z.enum([\"uncaughtException\", \"unhandledRejection\"]),\n});\n\nexport const childToWorkerMessages = {\n TASK_RUN_COMPLETED: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n execution: TaskRunExecution,\n result: TaskRunExecutionResult,\n }),\n TASKS_READY: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n tasks: TaskMetadataWithFilePath.array(),\n }),\n TASK_HEARTBEAT: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n id: z.string(),\n }),\n READY_TO_DISPOSE: z.undefined(),\n WAIT_FOR_DURATION: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n ms: z.number(),\n }),\n WAIT_FOR_TASK: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n id: z.string(),\n }),\n WAIT_FOR_BATCH: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n id: z.string(),\n runs: z.string().array(),\n }),\n UNCAUGHT_EXCEPTION: UncaughtExceptionMessage,\n};\n\nexport const ProdChildToWorkerMessages = {\n TASK_RUN_COMPLETED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n execution: TaskRunExecution,\n result: TaskRunExecutionResult,\n }),\n },\n TASKS_READY: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n tasks: TaskMetadataWithFilePath.array(),\n }),\n },\n TASK_HEARTBEAT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n id: z.string(),\n }),\n },\n READY_TO_DISPOSE: {\n message: z.undefined(),\n },\n READY_FOR_CHECKPOINT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n },\n CANCEL_CHECKPOINT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n },\n WAIT_FOR_DURATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n ms: z.number(),\n now: z.number(),\n }),\n callback: z.object({\n willCheckpointAndRestore: z.boolean(),\n }),\n },\n WAIT_FOR_TASK: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n friendlyId: z.string(),\n }),\n },\n WAIT_FOR_BATCH: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n batchFriendlyId: z.string(),\n runFriendlyIds: z.string().array(),\n }),\n },\n UNCAUGHT_EXCEPTION: {\n message: UncaughtExceptionMessage,\n },\n};\n\nexport const ProdWorkerToChildMessages = {\n EXECUTE_TASK_RUN: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n execution: TaskRunExecution,\n traceContext: z.record(z.unknown()),\n metadata: BackgroundWorkerProperties,\n }),\n },\n TASK_RUN_COMPLETED_NOTIFICATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n completion: TaskRunExecutionResult,\n execution: TaskRunExecution,\n }),\n },\n CLEANUP: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n flush: z.boolean().default(false),\n kill: z.boolean().default(true),\n }),\n callback: z.void(),\n },\n WAIT_COMPLETED_NOTIFICATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n },\n};\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 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} as const;\n\nexport const TaskRunInternalError = z.object({\n type: z.literal(\"INTERNAL_ERROR\"),\n code: z.enum([\n \"COULD_NOT_FIND_EXECUTOR\",\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 ]),\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});\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 { z } from \"zod\";\nimport { RequireKeys } from \"../types\";\nimport { TaskRunExecution, TaskRunExecutionResult } from \"./common\";\nimport {\n BackgroundWorkerClientMessages,\n BackgroundWorkerServerMessages,\n ProdTaskRunExecution,\n ProdTaskRunExecutionPayload,\n RetryOptions,\n Machine,\n EnvironmentType,\n} from \"./messages\";\nimport { TaskResource } from \"./resources\";\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});\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\nexport const ProviderToPlatformMessages = {\n LOG: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n data: z.string(),\n }),\n },\n LOG_WITH_ACK: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n data: z.string(),\n }),\n callback: z.object({\n status: z.literal(\"ok\"),\n }),\n },\n};\n\nexport const PlatformToProviderMessages = {\n HEALTH: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n callback: z.object({\n status: z.literal(\"ok\"),\n }),\n },\n INDEX: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n imageTag: z.string(),\n shortCode: z.string(),\n apiKey: z.string(),\n apiUrl: z.string(),\n // identifiers\n envId: z.string(),\n envType: EnvironmentType,\n orgId: z.string(),\n projectId: z.string(),\n }),\n callback: z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(false),\n error: z.object({\n name: z.string(),\n message: z.string(),\n stack: z.string().optional(),\n }),\n }),\n z.object({\n success: z.literal(true),\n }),\n ]),\n },\n // TODO: this should be a shared queue message instead\n RESTORE: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n type: z.enum([\"DOCKER\", \"KUBERNETES\"]),\n location: z.string(),\n reason: z.string().optional(),\n imageRef: z.string(),\n machine: Machine,\n // identifiers\n checkpointId: z.string(),\n envId: z.string(),\n envType: EnvironmentType,\n orgId: z.string(),\n projectId: z.string(),\n runId: z.string(),\n }),\n },\n DELETE: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n name: z.string(),\n }),\n callback: z.object({\n message: z.string(),\n }),\n },\n GET: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n name: z.string(),\n }),\n },\n};\n\nexport const CoordinatorToPlatformMessages = {\n LOG: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n metadata: z.any(),\n text: z.string(),\n }),\n },\n CREATE_WORKER: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n projectRef: z.string(),\n envId: z.string(),\n deploymentId: z.string(),\n metadata: z.object({\n cliPackageVersion: z.string().optional(),\n contentHash: z.string(),\n packageVersion: z.string(),\n tasks: TaskResource.array(),\n }),\n }),\n callback: z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(false),\n }),\n z.object({\n success: z.literal(true),\n }),\n ]),\n },\n READY_FOR_EXECUTION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n runId: z.string(),\n totalCompletions: z.number(),\n }),\n callback: z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(false),\n }),\n z.object({\n success: z.literal(true),\n payload: ProdTaskRunExecutionPayload,\n }),\n ]),\n },\n READY_FOR_RESUME: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptFriendlyId: z.string(),\n type: WaitReason,\n }),\n },\n TASK_RUN_COMPLETED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n execution: ProdTaskRunExecution,\n completion: TaskRunExecutionResult,\n checkpoint: z\n .object({\n docker: z.boolean(),\n location: z.string(),\n })\n .optional(),\n }),\n },\n TASK_HEARTBEAT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptFriendlyId: z.string(),\n }),\n },\n CHECKPOINT_CREATED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptFriendlyId: z.string(),\n docker: z.boolean(),\n location: z.string(),\n reason: z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"WAIT_FOR_DURATION\"),\n ms: z.number(),\n now: z.number(),\n }),\n z.object({\n type: z.literal(\"WAIT_FOR_BATCH\"),\n batchFriendlyId: z.string(),\n runFriendlyIds: z.string().array(),\n }),\n z.object({\n type: z.literal(\"WAIT_FOR_TASK\"),\n friendlyId: z.string(),\n }),\n z.object({\n type: z.literal(\"RETRYING_AFTER_FAILURE\"),\n attemptNumber: z.number(),\n }),\n ]),\n }),\n },\n INDEXING_FAILED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n deploymentId: z.string(),\n error: z.object({\n name: z.string(),\n message: z.string(),\n stack: z.string().optional(),\n }),\n }),\n },\n};\n\nexport const PlatformToCoordinatorMessages = {\n RESUME_AFTER_DEPENDENCY: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n runId: z.string(),\n attemptId: z.string(),\n attemptFriendlyId: z.string(),\n completions: TaskRunExecutionResult.array(),\n executions: TaskRunExecution.array(),\n }),\n },\n RESUME_AFTER_DURATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptId: z.string(),\n attemptFriendlyId: z.string(),\n }),\n },\n REQUEST_ATTEMPT_CANCELLATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptId: z.string(),\n attemptFriendlyId: z.string(),\n }),\n },\n READY_FOR_RETRY: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n runId: z.string(),\n }),\n },\n};\n\nexport const ClientToSharedQueueMessages = {\n READY_FOR_TASKS: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n }),\n },\n BACKGROUND_WORKER_DEPRECATED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n }),\n },\n BACKGROUND_WORKER_MESSAGE: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n data: BackgroundWorkerClientMessages,\n }),\n },\n};\n\nexport const SharedQueueToClientMessages = {\n SERVER_READY: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n id: z.string(),\n }),\n },\n BACKGROUND_WORKER_MESSAGE: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n data: BackgroundWorkerServerMessages,\n }),\n },\n};\n\nexport const ProdWorkerToCoordinatorMessages = {\n LOG: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n text: z.string(),\n }),\n callback: z.void(),\n },\n INDEX_TASKS: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n deploymentId: z.string(),\n tasks: TaskResource.array(),\n packageVersion: z.string(),\n }),\n callback: z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(false),\n }),\n z.object({\n success: z.literal(true),\n }),\n ]),\n },\n READY_FOR_EXECUTION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n runId: z.string(),\n totalCompletions: z.number(),\n }),\n },\n READY_FOR_RESUME: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptFriendlyId: z.string(),\n type: WaitReason,\n }),\n },\n READY_FOR_CHECKPOINT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n },\n CANCEL_CHECKPOINT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n },\n TASK_HEARTBEAT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptFriendlyId: z.string(),\n }),\n },\n TASK_RUN_COMPLETED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n execution: ProdTaskRunExecution,\n completion: TaskRunExecutionResult,\n }),\n callback: z.object({\n willCheckpointAndRestore: z.boolean(),\n shouldExit: z.boolean(),\n }),\n },\n WAIT_FOR_DURATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n ms: z.number(),\n now: z.number(),\n attemptFriendlyId: z.string(),\n }),\n callback: z.object({\n willCheckpointAndRestore: z.boolean(),\n }),\n },\n WAIT_FOR_TASK: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n friendlyId: z.string(),\n // This is the attempt that is waiting\n attemptFriendlyId: z.string(),\n }),\n callback: z.object({\n willCheckpointAndRestore: z.boolean(),\n }),\n },\n WAIT_FOR_BATCH: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n batchFriendlyId: z.string(),\n runFriendlyIds: z.string().array(),\n // This is the attempt that is waiting\n attemptFriendlyId: z.string(),\n }),\n callback: z.object({\n willCheckpointAndRestore: z.boolean(),\n }),\n },\n INDEXING_FAILED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n deploymentId: z.string(),\n error: z.object({\n name: z.string(),\n message: z.string(),\n stack: z.string().optional(),\n }),\n }),\n },\n};\n\nexport const CoordinatorToProdWorkerMessages = {\n RESUME_AFTER_DEPENDENCY: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptId: z.string(),\n completions: TaskRunExecutionResult.array(),\n executions: TaskRunExecution.array(),\n }),\n },\n RESUME_AFTER_DURATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptId: z.string(),\n }),\n },\n EXECUTE_TASK_RUN: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n executionPayload: ProdTaskRunExecutionPayload,\n }),\n },\n REQUEST_ATTEMPT_CANCELLATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptId: z.string(),\n }),\n },\n REQUEST_EXIT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n },\n READY_FOR_RETRY: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n runId: z.string(),\n }),\n },\n};\n\nexport const ProdWorkerSocketData = z.object({\n contentHash: z.string(),\n projectRef: z.string(),\n envId: z.string(),\n runId: z.string(),\n attemptFriendlyId: z.string().optional(),\n podName: z.string(),\n deploymentId: z.string(),\n deploymentVersion: z.string(),\n});\n","import { z } from \"zod\";\n\nexport const PRIMARY_VARIANT = \"primary\";\n\nconst Variant = z.enum([PRIMARY_VARIANT]);\nexport type Variant = z.infer<typeof Variant>;\n\nconst AccessoryItem = z.object({\n text: z.string(),\n variant: z.string().optional(),\n url: z.string().optional(),\n});\n\nconst Accessory = z.object({\n items: z.array(AccessoryItem),\n style: z.enum([\"codepath\"]).optional(),\n});\n\nexport type Accessory = z.infer<typeof Accessory>;\n\nexport const TaskEventStyle = z\n .object({\n icon: z.string().optional(),\n variant: Variant.optional(),\n accessory: Accessory.optional(),\n })\n .default({\n icon: undefined,\n variant: undefined,\n });\n\nexport type TaskEventStyle = z.infer<typeof TaskEventStyle>;\n","import { z } from \"zod\";\nimport { RetryOptions } from \"./messages\";\nimport { EventFilter } from \"./eventFilter\";\nimport { Prettify } from \"../types\";\n\nexport const FetchRetryHeadersStrategy = z.object({\n /** The `headers` strategy retries the request using info from the response headers. */\n strategy: z.literal(\"headers\"),\n /** The header to use to determine the maximum number of times to retry the request. */\n limitHeader: z.string(),\n /** The header to use to determine the number of remaining retries. */\n remainingHeader: z.string(),\n /** The header to use to determine the time when the number of remaining retries will be reset. */\n resetHeader: z.string(),\n /** The event filter to use to determine if the request should be retried. */\n bodyFilter: EventFilter.optional(),\n\n /** The format of the `resetHeader` value. */\n resetFormat: z\n .enum([\n \"unix_timestamp\",\n \"unix_timestamp_in_ms\",\n \"iso_8601\",\n \"iso_8601_duration_openai_variant\",\n ])\n .default(\"unix_timestamp\")\n .optional(),\n});\n\nexport type FetchRetryHeadersStrategy = z.infer<typeof FetchRetryHeadersStrategy>;\n\nexport const FetchRetryBackoffStrategy = RetryOptions.extend({\n /** The `backoff` strategy retries the request with an exponential backoff. */\n strategy: z.literal(\"backoff\"),\n /** The event filter to use to determine if the request should be retried. */\n bodyFilter: EventFilter.optional(),\n});\n\n/** The `backoff` strategy retries the request with an exponential backoff. */\nexport type FetchRetryBackoffStrategy = z.infer<typeof FetchRetryBackoffStrategy>;\n\nexport const FetchRetryStrategy = z.discriminatedUnion(\"strategy\", [\n FetchRetryHeadersStrategy,\n FetchRetryBackoffStrategy,\n]);\n\nexport type FetchRetryStrategy = z.infer<typeof FetchRetryStrategy>;\n\nexport const FetchRetryByStatusOptions = z.record(z.string(), FetchRetryStrategy);\n\n/** An object where the key is a status code pattern and the value is a retrying strategy. Supported patterns are:\n - Specific status codes: 429\n - Ranges: 500-599\n - Wildcards: 2xx, 3xx, 4xx, 5xx \n */\nexport type FetchRetryByStatusOptions = Prettify<z.infer<typeof FetchRetryByStatusOptions>>;\n\nexport const FetchTimeoutOptions = z.object({\n /** The maximum time to wait for the request to complete. */\n durationInMs: z.number().optional(),\n retry: RetryOptions.optional(),\n});\n\nexport type FetchTimeoutOptions = z.infer<typeof FetchTimeoutOptions>;\n\nexport const FetchRetryOptions = z.object({\n /** The retrying strategy for specific status codes. */\n byStatus: FetchRetryByStatusOptions.optional(),\n /** The timeout options for the request. */\n timeout: RetryOptions.optional(),\n /**\n * The retrying strategy for connection errors.\n */\n connectionError: RetryOptions.optional(),\n});\n\nexport type FetchRetryOptions = Prettify<z.infer<typeof FetchRetryOptions>>;\n","import { z } from \"zod\";\n\nexport const stringPatternMatchers = [\n z.object({\n $endsWith: z.string(),\n }),\n z.object({\n $startsWith: z.string(),\n }),\n z.object({\n $ignoreCaseEquals: z.string(),\n }),\n] as const;\n\nconst EventMatcher = z.union([\n /** Match against a string */\n z.array(z.string()),\n /** Match against a number */\n z.array(z.number()),\n /** Match against a boolean */\n z.array(z.boolean()),\n z.array(\n z.union([\n ...stringPatternMatchers,\n z.object({\n $exists: z.boolean(),\n }),\n z.object({\n $isNull: z.boolean(),\n }),\n z.object({\n $anythingBut: z.union([z.string(), z.number(), z.boolean()]),\n }),\n z.object({\n $anythingBut: z.union([z.array(z.string()), z.array(z.number()), z.array(z.boolean())]),\n }),\n z.object({\n $gt: z.number(),\n }),\n z.object({\n $lt: z.number(),\n }),\n z.object({\n $gte: z.number(),\n }),\n z.object({\n $lte: z.number(),\n }),\n z.object({\n $between: z.tuple([z.number(), z.number()]),\n }),\n z.object({\n $includes: z.union([z.string(), z.number(), z.boolean()]),\n }),\n z.object({\n $not: z.union([z.string(), z.number(), z.boolean()]),\n }),\n ])\n ),\n]);\n\ntype EventMatcher = z.infer<typeof EventMatcher>;\n\n/** A filter for matching against data */\nexport type EventFilter = { [key: string]: EventMatcher | EventFilter };\n\nexport const EventFilter: z.ZodType<EventFilter> = z.lazy(() =>\n z.record(z.union([EventMatcher, EventFilter]))\n);\n","import { z } from \"zod\";\n\nexport const ExceptionEventProperties = z.object({\n type: z.string().optional(),\n message: z.string().optional(),\n stacktrace: z.string().optional(),\n});\n\nexport type ExceptionEventProperties = z.infer<typeof ExceptionEventProperties>;\n\nexport const ExceptionSpanEvent = z.object({\n name: z.literal(\"exception\"),\n time: z.coerce.date(),\n properties: z.object({\n exception: ExceptionEventProperties,\n }),\n});\n\nexport type ExceptionSpanEvent = z.infer<typeof ExceptionSpanEvent>;\n\nexport const CancellationSpanEvent = z.object({\n name: z.literal(\"cancellation\"),\n time: z.coerce.date(),\n properties: z.object({\n reason: z.string(),\n }),\n});\n\nexport type CancellationSpanEvent = z.infer<typeof CancellationSpanEvent>;\n\nexport const OtherSpanEvent = z.object({\n name: z.string(),\n time: z.coerce.date(),\n properties: z.record(z.unknown()),\n});\n\nexport type OtherSpanEvent = z.infer<typeof OtherSpanEvent>;\n\nexport const SpanEvent = z.union([ExceptionSpanEvent, CancellationSpanEvent, OtherSpanEvent]);\n\nexport type SpanEvent = z.infer<typeof SpanEvent>;\n\nexport const SpanEvents = z.array(SpanEvent);\n\nexport type SpanEvents = z.infer<typeof SpanEvents>;\n\nexport function isExceptionSpanEvent(event: SpanEvent): event is ExceptionSpanEvent {\n return event.name === \"exception\";\n}\n\nexport function isCancellationSpanEvent(event: SpanEvent): event is CancellationSpanEvent {\n return event.name === \"cancellation\";\n}\n\nexport const SpanMessagingEvent = z.object({\n system: z.string().optional(),\n client_id: z.string().optional(),\n operation: z.enum([\"publish\", \"create\", \"receive\", \"deliver\"]),\n message: z.any(),\n destination: z.string().optional(),\n});\n\nexport type SpanMessagingEvent = z.infer<typeof SpanMessagingEvent>;\n","import { context, propagation } from \"@opentelemetry/api\";\nimport { zodfetch } from \"../../zodfetch\";\nimport { taskContextManager } from \"../tasks/taskContextManager\";\nimport { SafeAsyncLocalStorage } from \"../utils/safeAsyncLocalStorage\";\nimport { getEnvVar } from \"../utils/getEnv\";\nimport {\n TriggerTaskRequestBody,\n TriggerTaskResponse,\n BatchTriggerTaskRequestBody,\n BatchTriggerTaskResponse,\n CreateUploadPayloadUrlResponseBody,\n} from \"../schemas\";\n\nexport type TriggerOptions = {\n spanParentAsLink?: boolean;\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 triggerTask(taskId: string, body: TriggerTaskRequestBody, options?: TriggerOptions) {\n return zodfetch(TriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${taskId}/trigger`, {\n method: \"POST\",\n headers: this.#getHeaders(options?.spanParentAsLink ?? false),\n body: JSON.stringify(body),\n });\n }\n\n batchTriggerTask(taskId: string, body: BatchTriggerTaskRequestBody, options?: TriggerOptions) {\n return zodfetch(BatchTriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${taskId}/batch`, {\n method: \"POST\",\n headers: this.#getHeaders(options?.spanParentAsLink ?? false),\n body: JSON.stringify(body),\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 );\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 );\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 (taskContextManager.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\ntype ApiClientContext = {\n baseURL: string;\n accessToken: string;\n};\n\nexport class ApiClientManager {\n private _storage: SafeAsyncLocalStorage<ApiClientContext> =\n new SafeAsyncLocalStorage<ApiClientContext>();\n\n get baseURL(): string | undefined {\n const store = this.#getStore();\n return store?.baseURL ?? getEnvVar(\"TRIGGER_API_URL\") ?? \"https://api.trigger.dev\";\n }\n\n get accessToken(): string | undefined {\n const store = this.#getStore();\n return store?.accessToken ?? 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 runWith<R extends (...args: any[]) => Promise<any>>(\n context: ApiClientContext,\n fn: R\n ): Promise<ReturnType<R>> {\n return this._storage.runWith(context, fn);\n }\n\n #getStore(): ApiClientContext | undefined {\n return this._storage.getStore();\n }\n}\n\nexport const apiClientManager = new ApiClientManager();\n","import { z } from \"zod\";\nimport { context, propagation } from \"@opentelemetry/api\";\n\ntype ApiResult<TSuccessResult> =\n | { ok: true; data: TSuccessResult }\n | {\n ok: false;\n error: string;\n };\n\nexport async function zodfetch<TResponseBody extends any>(\n schema: z.Schema<TResponseBody>,\n url: string,\n requestInit?: RequestInit\n): Promise<ApiResult<TResponseBody>> {\n try {\n const response = await fetch(url, requestInit);\n\n if ((!requestInit || requestInit.method === \"GET\") && response.status === 404) {\n return {\n ok: false,\n error: `404: ${response.statusText}`,\n };\n }\n\n if (response.status >= 400 && response.status < 500) {\n const body = await response.json();\n if (!body.error) {\n return { ok: false, error: \"Something went wrong\" };\n }\n\n return { ok: false, error: body.error };\n }\n\n if (response.status !== 200) {\n return {\n ok: false,\n error: `Failed to fetch ${url}, got status code ${response.status}`,\n };\n }\n\n const jsonBody = await response.json();\n const parsedResult = schema.safeParse(jsonBody);\n\n if (parsedResult.success) {\n return { ok: true, data: parsedResult.data };\n }\n\n if (\"error\" in jsonBody) {\n return {\n ok: false,\n error: typeof jsonBody.error === \"string\" ? jsonBody.error : JSON.stringify(jsonBody.error),\n };\n }\n\n return { ok: false, error: parsedResult.error.message };\n } catch (error) {\n return {\n ok: false,\n error: error instanceof Error ? error.message : JSON.stringify(error),\n };\n }\n}\n","import { Attributes } from \"@opentelemetry/api\";\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) {\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}.` : \"\"}${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 result[`${newPrefix}.[${i}]`] = value[i];\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 }\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(obj: Attributes): Record<string, unknown> {\n if (typeof obj !== \"object\" || obj === null || Array.isArray(obj)) {\n return obj;\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 // Splitting array indices as separate parts\n if (detectIsArrayIndex(part)) {\n acc.push(part);\n } else {\n acc.push(...part.split(/\\.\\[(.*?)\\]/).filter(Boolean));\n }\n return acc;\n }, [] as string[]);\n\n let current: Record<string, unknown> = result;\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n const isArray = detectIsArrayIndex(part);\n const cleanPart = isArray ? part.substring(1, part.length - 1) : part;\n const nextIsArray = detectIsArrayIndex(parts[i + 1]);\n if (!current[cleanPart]) {\n current[cleanPart] = nextIsArray ? [] : {};\n }\n current = current[cleanPart] as Record<string, unknown>;\n }\n const lastPart = parts[parts.length - 1];\n const cleanLastPart = detectIsArrayIndex(lastPart)\n ? parseInt(lastPart.substring(1, lastPart.length - 1), 10)\n : lastPart;\n current[cleanLastPart] = value;\n }\n\n return result;\n}\n\nfunction detectIsArrayIndex(key: string): boolean {\n const match = key.match(/^\\[(\\d+)\\]$/);\n\n if (match) {\n return true;\n }\n\n return false;\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","import { AsyncLocalStorage } from \"node:async_hooks\";\n\nexport class SafeAsyncLocalStorage<T> {\n private storage: AsyncLocalStorage<T>;\n\n constructor() {\n this.storage = new AsyncLocalStorage<T>();\n }\n\n runWith<R extends (...args: any[]) => Promise<any>>(context: T, fn: R): Promise<ReturnType<R>> {\n return this.storage.run(context, fn);\n }\n\n getStore(): T | undefined {\n return this.storage.getStore();\n }\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};\n","import { Attributes, Context } from \"@opentelemetry/api\";\nimport { TaskRunContext, type BackgroundWorkerProperties } from \"../schemas\";\nimport { flattenAttributes } from \"../utils/flattenAttributes\";\nimport { SafeAsyncLocalStorage } from \"../utils/safeAsyncLocalStorage\";\n\ntype TaskContext = {\n ctx: TaskRunContext;\n worker: BackgroundWorkerProperties;\n};\n\nexport class TaskContextManager {\n private _storage: SafeAsyncLocalStorage<TaskContext> = new SafeAsyncLocalStorage<TaskContext>();\n\n get isInsideTask(): boolean {\n return this.#getStore() !== undefined;\n }\n\n get ctx(): TaskRunContext | undefined {\n const store = this.#getStore();\n return store?.ctx;\n }\n\n get worker(): BackgroundWorkerProperties | undefined {\n const store = this.#getStore();\n return store?.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 };\n }\n\n return {};\n }\n\n runWith<R extends (...args: any[]) => Promise<any>>(\n context: TaskContext,\n fn: R\n ): Promise<ReturnType<R>> {\n return this._storage.runWith(context, fn);\n }\n\n #getStore(): TaskContext | undefined {\n return this._storage.getStore();\n }\n}\n\nexport const taskContextManager = new TaskContextManager();\n\nimport { LogRecord, LogRecordProcessor } from \"@opentelemetry/sdk-logs\";\nimport { Span, SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\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 (taskContextManager.ctx) {\n span.setAttributes(\n flattenAttributes(\n {\n [SemanticInternalAttributes.ATTEMPT_ID]: taskContextManager.ctx.attempt.id,\n [SemanticInternalAttributes.ATTEMPT_NUMBER]: taskContextManager.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 (taskContextManager.ctx) {\n logRecord.setAttributes(\n flattenAttributes(\n {\n [SemanticInternalAttributes.ATTEMPT_ID]: taskContextManager.ctx.attempt.id,\n [SemanticInternalAttributes.ATTEMPT_NUMBER]: taskContextManager.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 { StructuredLogger } from \"./zodNamespace\";\n\nexport type ZodMessageValueSchema<TDiscriminatedUnion extends z.ZodDiscriminatedUnion<any, any>> =\n | z.ZodFirstPartySchemaTypes\n | TDiscriminatedUnion;\n\nexport interface ZodMessageCatalogSchema {\n [key: string]: ZodMessageValueSchema<any>;\n}\n\nexport type ZodMessageHandlers<TCatalogSchema extends ZodMessageCatalogSchema> = Partial<{\n [K in keyof TCatalogSchema]: (payload: z.infer<TCatalogSchema[K]>) => Promise<any>;\n}>;\n\nexport type ZodMessageHandlerOptions<TMessageCatalog extends ZodMessageCatalogSchema> = {\n schema: TMessageCatalog;\n messages?: ZodMessageHandlers<TMessageCatalog>;\n};\n\nexport type MessageFromSchema<\n K extends keyof TMessageCatalog,\n TMessageCatalog extends ZodMessageCatalogSchema,\n> = {\n type: K;\n payload: z.input<TMessageCatalog[K]>;\n};\n\nexport type MessageFromCatalog<TMessageCatalog extends ZodMessageCatalogSchema> = {\n [K in keyof TMessageCatalog]: MessageFromSchema<K, TMessageCatalog>;\n}[keyof TMessageCatalog];\n\nexport const ZodMessageSchema = z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n type: z.string(),\n payload: z.unknown(),\n});\n\nexport interface EventEmitterLike {\n on(eventName: string | symbol, listener: (...args: any[]) => void): this;\n}\n\nexport class ZodMessageHandler<TMessageCatalog extends ZodMessageCatalogSchema> {\n #schema: TMessageCatalog;\n #handlers: ZodMessageHandlers<TMessageCatalog> | undefined;\n\n constructor(options: ZodMessageHandlerOptions<TMessageCatalog>) {\n this.#schema = options.schema;\n this.#handlers = options.messages;\n }\n\n public async handleMessage(message: unknown) {\n const parsedMessage = this.parseMessage(message);\n\n if (!this.#handlers) {\n throw new Error(\"No handlers provided\");\n }\n\n const handler = this.#handlers[parsedMessage.type];\n\n if (!handler) {\n console.error(`No handler for message type: ${String(parsedMessage.type)}`);\n return;\n }\n\n const ack = await handler(parsedMessage.payload);\n\n return ack;\n }\n\n public parseMessage(message: unknown): MessageFromCatalog<TMessageCatalog> {\n const parsedMessage = ZodMessageSchema.safeParse(message);\n\n if (!parsedMessage.success) {\n throw new Error(`Failed to parse message: ${JSON.stringify(parsedMessage.error)}`);\n }\n\n const schema = this.#schema[parsedMessage.data.type];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${parsedMessage.data.type}`);\n }\n\n const parsedPayload = schema.safeParse(parsedMessage.data.payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n return {\n type: parsedMessage.data.type,\n payload: parsedPayload.data,\n };\n }\n\n public registerHandlers(emitter: EventEmitterLike, logger?: StructuredLogger) {\n const log = logger ?? console;\n\n if (!this.#handlers) {\n log.info(\"No handlers provided\");\n return;\n }\n\n for (const eventName of Object.keys(this.#schema)) {\n emitter.on(eventName, async (message: any, callback?: any): Promise<void> => {\n log.info(`handling ${eventName}`, {\n payload: message,\n hasCallback: !!callback,\n });\n\n let ack;\n\n // FIXME: this only works if the message doesn't have genuine payload prop\n if (\"payload\" in message) {\n ack = await this.handleMessage({ type: eventName, ...message });\n } else {\n // Handle messages not sent by ZodMessageSender\n const { version, ...payload } = message;\n ack = await this.handleMessage({ type: eventName, version, payload });\n }\n\n if (callback && typeof callback === \"function\") {\n callback(ack);\n }\n });\n }\n }\n}\n\ntype ZodMessageSenderCallback<TMessageCatalog extends ZodMessageCatalogSchema> = (message: {\n type: keyof TMessageCatalog;\n payload: z.infer<TMessageCatalog[keyof TMessageCatalog]>;\n version: \"v1\";\n}) => Promise<void>;\n\nexport type ZodMessageSenderOptions<TMessageCatalog extends ZodMessageCatalogSchema> = {\n schema: TMessageCatalog;\n sender: ZodMessageSenderCallback<TMessageCatalog>;\n};\n\nexport class ZodMessageSender<TMessageCatalog extends ZodMessageCatalogSchema> {\n #schema: TMessageCatalog;\n #sender: ZodMessageSenderCallback<TMessageCatalog>;\n\n constructor(options: ZodMessageSenderOptions<TMessageCatalog>) {\n this.#schema = options.schema;\n this.#sender = options.sender;\n }\n\n public async send<K extends keyof TMessageCatalog>(\n type: K,\n payload: z.input<TMessageCatalog[K]>\n ) {\n const schema = this.#schema[type];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${type as string}`);\n }\n\n const parsedPayload = schema.safeParse(payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n await this.#sender({ type, payload, version: \"v1\" });\n }\n\n public async forwardMessage(message: unknown) {\n const parsedMessage = ZodMessageSchema.safeParse(message);\n\n if (!parsedMessage.success) {\n throw new Error(`Failed to parse message: ${JSON.stringify(parsedMessage.error)}`);\n }\n\n const schema = this.#schema[parsedMessage.data.type];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${parsedMessage.data.type}`);\n }\n\n const parsedPayload = schema.safeParse(parsedMessage.data.payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n await this.#sender({\n type: parsedMessage.data.type,\n payload: parsedPayload.data,\n version: \"v1\",\n });\n }\n}\n\nexport type MessageCatalogToSocketIoEvents<TCatalog extends ZodMessageCatalogSchema> = {\n [K in keyof TCatalog]: (message: z.infer<TCatalog[K]>) => void;\n};\n","import { io, Socket } from \"socket.io-client\";\nimport { z } from \"zod\";\nimport { EventEmitterLike, ZodMessageValueSchema } from \"./zodMessageHandler\";\nimport { LogLevel, SimpleStructuredLogger, StructuredLogger } from \"./zodNamespace\";\n\nexport interface ZodSocketMessageCatalogSchema {\n [key: string]:\n | {\n message: ZodMessageValueSchema<any>;\n }\n | {\n message: ZodMessageValueSchema<any>;\n callback?: ZodMessageValueSchema<any>;\n };\n}\n\nexport type ZodMessageCatalogToSocketIoEvents<TCatalog extends ZodSocketMessageCatalogSchema> = {\n [K in keyof TCatalog]: SocketMessageHasCallback<TCatalog, K> extends true\n ? (\n message: z.infer<GetSocketMessageSchema<TCatalog, K>>,\n callback: (ack: z.infer<GetSocketCallbackSchema<TCatalog, K>>) => void\n ) => void\n : (message: z.infer<GetSocketMessageSchema<TCatalog, K>>) => void;\n};\n\nexport type GetSocketMessageSchema<\n TRPCCatalog extends ZodSocketMessageCatalogSchema,\n TMessageType extends keyof TRPCCatalog,\n> = TRPCCatalog[TMessageType][\"message\"];\n\nexport type InferSocketMessageSchema<\n TRPCCatalog extends ZodSocketMessageCatalogSchema,\n TMessageType extends keyof TRPCCatalog,\n> = z.infer<GetSocketMessageSchema<TRPCCatalog, TMessageType>>;\n\nexport type GetSocketCallbackSchema<\n TRPCCatalog extends ZodSocketMessageCatalogSchema,\n TMessageType extends keyof TRPCCatalog,\n> = TRPCCatalog[TMessageType] extends { callback: any }\n ? TRPCCatalog[TMessageType][\"callback\"]\n : never;\n\nexport type InferSocketCallbackSchema<\n TRPCCatalog extends ZodSocketMessageCatalogSchema,\n TMessageType extends keyof TRPCCatalog,\n> = z.infer<GetSocketCallbackSchema<TRPCCatalog, TMessageType>>;\n\nexport type SocketMessageHasCallback<\n TRPCCatalog extends ZodSocketMessageCatalogSchema,\n TMessageType extends keyof TRPCCatalog,\n> = GetSocketCallbackSchema<TRPCCatalog, TMessageType> extends never ? false : true;\n\nexport type ZodSocketMessageHandlers<TCatalogSchema extends ZodSocketMessageCatalogSchema> =\n Partial<{\n [K in keyof TCatalogSchema]: (\n payload: z.infer<GetSocketMessageSchema<TCatalogSchema, K>>\n ) => Promise<\n SocketMessageHasCallback<TCatalogSchema, K> extends true\n ? z.input<GetSocketCallbackSchema<TCatalogSchema, K>>\n : void\n >;\n }>;\n\nexport type ZodSocketMessageHandlerOptions<TMessageCatalog extends ZodSocketMessageCatalogSchema> =\n {\n schema: TMessageCatalog;\n handlers?: ZodSocketMessageHandlers<TMessageCatalog>;\n };\n\ntype MessageFromSocketSchema<\n K extends keyof TMessageCatalog,\n TMessageCatalog extends ZodSocketMessageCatalogSchema,\n> = {\n type: K;\n payload: z.input<GetSocketMessageSchema<TMessageCatalog, K>>;\n};\n\nexport type MessagesFromSocketCatalog<TMessageCatalog extends ZodSocketMessageCatalogSchema> = {\n [K in keyof TMessageCatalog]: MessageFromSocketSchema<K, TMessageCatalog>;\n}[keyof TMessageCatalog];\n\nconst messageSchema = z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n type: z.string(),\n payload: z.unknown(),\n});\n\nexport class ZodSocketMessageHandler<TRPCCatalog extends ZodSocketMessageCatalogSchema> {\n #schema: TRPCCatalog;\n #handlers: ZodSocketMessageHandlers<TRPCCatalog> | undefined;\n\n constructor(options: ZodSocketMessageHandlerOptions<TRPCCatalog>) {\n this.#schema = options.schema;\n this.#handlers = options.handlers;\n }\n\n public async handleMessage(message: unknown) {\n const parsedMessage = this.parseMessage(message);\n\n if (!this.#handlers) {\n throw new Error(\"No handlers provided\");\n }\n\n const handler = this.#handlers[parsedMessage.type];\n\n if (!handler) {\n console.error(`No handler for message type: ${String(parsedMessage.type)}`);\n return;\n }\n\n const ack = await handler(parsedMessage.payload);\n\n return ack;\n }\n\n public parseMessage(message: unknown): MessagesFromSocketCatalog<TRPCCatalog> {\n const parsedMessage = messageSchema.safeParse(message);\n\n if (!parsedMessage.success) {\n throw new Error(`Failed to parse message: ${JSON.stringify(parsedMessage.error)}`);\n }\n\n const schema = this.#schema[parsedMessage.data.type][\"message\"];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${parsedMessage.data.type}`);\n }\n\n const parsedPayload = schema.safeParse(parsedMessage.data.payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n return {\n type: parsedMessage.data.type,\n payload: parsedPayload.data,\n };\n }\n\n public registerHandlers(emitter: EventEmitterLike, logger?: StructuredLogger) {\n const log = logger ?? console;\n\n if (!this.#handlers) {\n log.info(\"No handlers provided\");\n return;\n }\n\n for (const eventName of Object.keys(this.#handlers)) {\n emitter.on(eventName, async (message: any, callback?: any): Promise<void> => {\n log.info(`handling ${eventName}`, {\n payload: message,\n hasCallback: !!callback,\n });\n\n let ack;\n\n try {\n // FIXME: this only works if the message doesn't have genuine payload prop\n if (\"payload\" in message) {\n ack = await this.handleMessage({ type: eventName, ...message });\n } else {\n // Handle messages not sent by ZodMessageSender\n const { version, ...payload } = message;\n ack = await this.handleMessage({ type: eventName, version, payload });\n }\n } catch (error) {\n log.error(\"Error while handling message\", { error });\n return;\n }\n\n if (callback && typeof callback === \"function\") {\n callback(ack);\n }\n });\n }\n }\n}\n\nexport type ZodSocketMessageSenderOptions<TMessageCatalog extends ZodSocketMessageCatalogSchema> = {\n schema: TMessageCatalog;\n socket: ZodSocket<any, TMessageCatalog>;\n};\n\nexport type GetSocketMessagesWithCallback<TMessageCatalog extends ZodSocketMessageCatalogSchema> = {\n [K in keyof TMessageCatalog]: SocketMessageHasCallback<TMessageCatalog, K> extends true\n ? K\n : never;\n}[keyof TMessageCatalog];\n\nexport type GetSocketMessagesWithoutCallback<\n TMessageCatalog extends ZodSocketMessageCatalogSchema,\n> = {\n [K in keyof TMessageCatalog]: SocketMessageHasCallback<TMessageCatalog, K> extends true\n ? never\n : K;\n}[keyof TMessageCatalog];\n\nexport class ZodSocketMessageSender<TMessageCatalog extends ZodSocketMessageCatalogSchema> {\n #schema: TMessageCatalog;\n #socket: ZodSocket<any, TMessageCatalog>;\n\n constructor(options: ZodSocketMessageSenderOptions<TMessageCatalog>) {\n this.#schema = options.schema;\n this.#socket = options.socket;\n }\n\n public send<K extends GetSocketMessagesWithoutCallback<TMessageCatalog>>(\n type: K,\n payload: z.input<GetSocketMessageSchema<TMessageCatalog, K>>\n ): void {\n const schema = this.#schema[type][\"message\"];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${type as string}`);\n }\n\n const parsedPayload = schema.safeParse(payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n // @ts-expect-error\n this.#socket.emit(type, { payload, version: \"v1\" });\n\n return;\n }\n\n public async sendWithAck<K extends GetSocketMessagesWithCallback<TMessageCatalog>>(\n type: K,\n payload: z.input<GetSocketMessageSchema<TMessageCatalog, K>>\n ): Promise<z.infer<GetSocketCallbackSchema<TMessageCatalog, K>>> {\n const schema = this.#schema[type][\"message\"];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${type as string}`);\n }\n\n const parsedPayload = schema.safeParse(payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n // @ts-expect-error\n const callbackResult = await this.#socket.emitWithAck(type, { payload, version: \"v1\" });\n\n return callbackResult;\n }\n}\n\nexport type ZodSocket<\n TListenEvents extends ZodSocketMessageCatalogSchema,\n TEmitEvents extends ZodSocketMessageCatalogSchema,\n> = Socket<\n ZodMessageCatalogToSocketIoEvents<TListenEvents>,\n ZodMessageCatalogToSocketIoEvents<TEmitEvents>\n>;\n\ninterface ZodSocketConnectionOptions<\n TClientMessages extends ZodSocketMessageCatalogSchema,\n TServerMessages extends ZodSocketMessageCatalogSchema,\n> {\n host: string;\n port?: number;\n secure?: boolean;\n namespace: string;\n clientMessages: TClientMessages;\n serverMessages: TServerMessages;\n extraHeaders?: {\n [header: string]: string;\n };\n handlers?: ZodSocketMessageHandlers<TServerMessages>;\n authToken?: string;\n onConnection?: (\n socket: ZodSocket<TServerMessages, TClientMessages>,\n handler: ZodSocketMessageHandler<TServerMessages>,\n sender: ZodSocketMessageSender<TClientMessages>,\n logger: StructuredLogger\n ) => Promise<void>;\n onDisconnect?: (\n socket: ZodSocket<TServerMessages, TClientMessages>,\n reason: Socket.DisconnectReason,\n description: any,\n logger: StructuredLogger\n ) => Promise<void>;\n onError?: (\n socket: ZodSocket<TServerMessages, TClientMessages>,\n err: Error,\n logger: StructuredLogger\n ) => Promise<void>;\n}\n\nexport class ZodSocketConnection<\n TClientMessages extends ZodSocketMessageCatalogSchema,\n TServerMessages extends ZodSocketMessageCatalogSchema,\n> {\n #sender: ZodSocketMessageSender<TClientMessages>;\n socket: ZodSocket<TServerMessages, TClientMessages>;\n\n #handler: ZodSocketMessageHandler<TServerMessages>;\n #logger: StructuredLogger;\n\n constructor(opts: ZodSocketConnectionOptions<TClientMessages, TServerMessages>) {\n const uri = `${opts.secure ? \"wss\" : \"ws\"}://${opts.host}:${\n opts.port ?? (opts.secure ? \"443\" : \"80\")\n }/${opts.namespace}`;\n\n const logger = new SimpleStructuredLogger(opts.namespace, LogLevel.info);\n logger.log(\"new zod socket\", { uri });\n\n this.socket = io(uri, {\n transports: [\"websocket\"],\n auth: {\n token: opts.authToken,\n },\n extraHeaders: opts.extraHeaders,\n reconnectionDelay: 500,\n reconnectionDelayMax: 1000,\n });\n\n this.#logger = logger.child({\n socketId: this.socket.id,\n });\n\n this.#handler = new ZodSocketMessageHandler({\n schema: opts.serverMessages,\n handlers: opts.handlers,\n });\n this.#handler.registerHandlers(this.socket, this.#logger);\n\n this.#sender = new ZodSocketMessageSender({\n schema: opts.clientMessages,\n socket: this.socket,\n });\n\n this.socket.on(\"connect_error\", async (error) => {\n this.#logger.error(`connect_error: ${error}`);\n\n if (opts.onError) {\n await opts.onError(this.socket, error, this.#logger);\n }\n });\n\n this.socket.on(\"connect\", async () => {\n this.#logger.info(\"connect\");\n\n if (opts.onConnection) {\n await opts.onConnection(this.socket, this.#handler, this.#sender, this.#logger);\n }\n });\n\n this.socket.on(\"disconnect\", async (reason, description) => {\n this.#logger.info(\"disconnect\", { reason, description });\n\n if (opts.onDisconnect) {\n await opts.onDisconnect(this.socket, reason, description, this.#logger);\n }\n });\n }\n\n close() {\n this.socket.close();\n }\n\n connect() {\n this.socket.connect();\n }\n\n get send() {\n return this.#sender.send.bind(this.#sender);\n }\n\n get sendWithAck() {\n return this.#sender.sendWithAck.bind(this.#sender);\n }\n}\n\nfunction createLogger(prefix: string) {\n return (...args: any[]) => console.log(prefix, ...args);\n}\n","import { DisconnectReason, Namespace, Server, Socket } from \"socket.io\";\nimport { ZodMessageSender } from \"./zodMessageHandler\";\nimport {\n ZodMessageCatalogToSocketIoEvents,\n ZodSocketMessageCatalogSchema,\n ZodSocketMessageHandler,\n ZodSocketMessageHandlers,\n} from \"./zodSocket\";\nimport { DefaultEventsMap, EventsMap } from \"socket.io/dist/typed-events\";\nimport { z } from \"zod\";\n\ninterface ExtendedError extends Error {\n data?: any;\n}\n\nexport type ZodNamespaceSocket<\n TClientMessages extends ZodSocketMessageCatalogSchema,\n TServerMessages extends ZodSocketMessageCatalogSchema,\n TServerSideEvents extends EventsMap = DefaultEventsMap,\n TSocketData extends z.ZodObject<any, any, any> = any,\n> = Socket<\n ZodMessageCatalogToSocketIoEvents<TClientMessages>,\n ZodMessageCatalogToSocketIoEvents<TServerMessages>,\n TServerSideEvents,\n z.infer<TSocketData>\n>;\n\ntype StructuredArgs = (Record<string, unknown> | undefined)[];\n\nexport interface StructuredLogger {\n log: (message: string, ...args: StructuredArgs) => any;\n error: (message: string, ...args: StructuredArgs) => any;\n warn: (message: string, ...args: StructuredArgs) => any;\n info: (message: string, ...args: StructuredArgs) => any;\n debug: (message: string, ...args: StructuredArgs) => any;\n child: (fields: Record<string, unknown>) => StructuredLogger;\n}\n\nexport enum LogLevel {\n \"log\",\n \"error\",\n \"warn\",\n \"info\",\n \"debug\",\n}\n\nexport class SimpleStructuredLogger implements StructuredLogger {\n constructor(\n private name: string,\n private level: LogLevel = [\"1\", \"true\"].includes(process.env.DEBUG ?? \"\")\n ? LogLevel.debug\n : LogLevel.info,\n private fields?: Record<string, unknown>\n ) {}\n\n child(fields: Record<string, unknown>, level?: LogLevel) {\n return new SimpleStructuredLogger(this.name, level, { ...this.fields, ...fields });\n }\n\n log(message: string, ...args: StructuredArgs) {\n if (this.level < LogLevel.log) return;\n\n this.#structuredLog(console.log, message, \"log\", ...args);\n }\n\n error(message: string, ...args: StructuredArgs) {\n if (this.level < LogLevel.error) return;\n\n this.#structuredLog(console.error, message, \"error\", ...args);\n }\n\n warn(message: string, ...args: StructuredArgs) {\n if (this.level < LogLevel.warn) return;\n\n this.#structuredLog(console.warn, message, \"warn\", ...args);\n }\n\n info(message: string, ...args: StructuredArgs) {\n if (this.level < LogLevel.info) return;\n\n this.#structuredLog(console.info, message, \"info\", ...args);\n }\n\n debug(message: string, ...args: StructuredArgs) {\n if (this.level < LogLevel.debug) return;\n\n this.#structuredLog(console.debug, message, \"debug\", ...args);\n }\n\n #structuredLog(\n loggerFunction: (message: string, ...args: any[]) => void,\n message: string,\n level: string,\n ...args: StructuredArgs\n ) {\n const structuredLog = {\n ...(args.length === 1 ? args[0] : args),\n ...this.fields,\n timestamp: new Date(),\n name: this.name,\n message,\n level,\n };\n\n loggerFunction(JSON.stringify(structuredLog));\n }\n}\n\ninterface ZodNamespaceOptions<\n TClientMessages extends ZodSocketMessageCatalogSchema,\n TServerMessages extends ZodSocketMessageCatalogSchema,\n TServerSideEvents extends EventsMap = DefaultEventsMap,\n TSocketData extends z.ZodObject<any, any, any> = any,\n> {\n io: Server;\n name: string;\n clientMessages: TClientMessages;\n serverMessages: TServerMessages;\n socketData?: TSocketData;\n handlers?: ZodSocketMessageHandlers<TClientMessages>;\n authToken?: string;\n logger?: StructuredLogger;\n preAuth?: (\n socket: ZodNamespaceSocket<TClientMessages, TServerMessages, TServerSideEvents, TSocketData>,\n next: (err?: ExtendedError) => void,\n logger: StructuredLogger\n ) => Promise<void>;\n postAuth?: (\n socket: ZodNamespaceSocket<TClientMessages, TServerMessages, TServerSideEvents, TSocketData>,\n next: (err?: ExtendedError) => void,\n logger: StructuredLogger\n ) => Promise<void>;\n onConnection?: (\n socket: ZodNamespaceSocket<TClientMessages, TServerMessages, TServerSideEvents, TSocketData>,\n handler: ZodSocketMessageHandler<TClientMessages>,\n sender: ZodMessageSender<TServerMessages>,\n logger: StructuredLogger\n ) => Promise<void>;\n onDisconnect?: (\n socket: ZodNamespaceSocket<TClientMessages, TServerMessages, TServerSideEvents, TSocketData>,\n reason: DisconnectReason,\n description: any,\n logger: StructuredLogger\n ) => Promise<void>;\n onError?: (\n socket: ZodNamespaceSocket<TClientMessages, TServerMessages, TServerSideEvents, TSocketData>,\n err: Error,\n logger: StructuredLogger\n ) => Promise<void>;\n}\n\nexport class ZodNamespace<\n TClientMessages extends ZodSocketMessageCatalogSchema,\n TServerMessages extends ZodSocketMessageCatalogSchema,\n TSocketData extends z.ZodObject<any, any, any> = any,\n TServerSideEvents extends EventsMap = DefaultEventsMap,\n> {\n #logger: StructuredLogger;\n #handler: ZodSocketMessageHandler<TClientMessages>;\n sender: ZodMessageSender<TServerMessages>;\n\n io: Server;\n namespace: Namespace<\n ZodMessageCatalogToSocketIoEvents<TClientMessages>,\n ZodMessageCatalogToSocketIoEvents<TServerMessages>,\n TServerSideEvents,\n z.infer<TSocketData>\n >;\n\n constructor(\n opts: ZodNamespaceOptions<TClientMessages, TServerMessages, TServerSideEvents, TSocketData>\n ) {\n this.#logger = opts.logger ?? new SimpleStructuredLogger(opts.name);\n\n this.#handler = new ZodSocketMessageHandler({\n schema: opts.clientMessages,\n handlers: opts.handlers,\n });\n\n this.io = opts.io;\n\n this.namespace = this.io.of(opts.name);\n\n // FIXME: There's a bug here, this sender should not accept Socket schemas with callbacks\n this.sender = new ZodMessageSender({\n schema: opts.serverMessages,\n sender: async (message) => {\n return new Promise((resolve, reject) => {\n try {\n // @ts-expect-error\n this.namespace.emit(message.type, message.payload);\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n });\n\n if (opts.preAuth) {\n this.namespace.use(async (socket, next) => {\n const logger = this.#logger.child({ socketId: socket.id, socketStage: \"preAuth\" });\n\n if (typeof opts.preAuth === \"function\") {\n await opts.preAuth(socket, next, logger);\n }\n });\n }\n\n if (opts.authToken) {\n this.namespace.use((socket, next) => {\n const logger = this.#logger.child({ socketId: socket.id, socketStage: \"auth\" });\n\n const { auth } = socket.handshake;\n\n if (!(\"token\" in auth)) {\n logger.error(\"no token\");\n return socket.disconnect(true);\n }\n\n if (auth.token !== opts.authToken) {\n logger.error(\"invalid token\");\n return socket.disconnect(true);\n }\n\n logger.info(\"success\");\n\n next();\n });\n }\n\n if (opts.postAuth) {\n this.namespace.use(async (socket, next) => {\n const logger = this.#logger.child({ socketId: socket.id, socketStage: \"auth\" });\n\n if (typeof opts.postAuth === \"function\") {\n await opts.postAuth(socket, next, logger);\n }\n });\n }\n\n this.namespace.on(\"connection\", async (socket) => {\n const logger = this.#logger.child({ socketId: socket.id, socketStage: \"connection\" });\n logger.info(\"connected\");\n\n this.#handler.registerHandlers(socket, logger);\n\n socket.on(\"disconnect\", async (reason, description) => {\n logger.info(\"disconnect\", { reason, description });\n\n if (opts.onDisconnect) {\n await opts.onDisconnect(socket, reason, description, logger);\n }\n });\n\n socket.on(\"error\", async (error) => {\n logger.error(\"error\", { error });\n\n if (opts.onError) {\n await opts.onError(socket, error, logger);\n }\n });\n\n if (opts.onConnection) {\n await opts.onConnection(socket, this.#handler, this.sender, logger);\n }\n });\n }\n\n fetchSockets() {\n return this.namespace.fetchSockets();\n }\n}\n","import { randomUUID } from \"crypto\";\nimport {\n GetSocketCallbackSchema,\n GetSocketMessageSchema,\n GetSocketMessagesWithCallback,\n GetSocketMessagesWithoutCallback,\n MessagesFromSocketCatalog,\n SocketMessageHasCallback,\n ZodSocketMessageCatalogSchema,\n} from \"./zodSocket\";\nimport { z } from \"zod\";\n\ninterface ZodIpcMessageSender<TEmitCatalog extends ZodSocketMessageCatalogSchema> {\n send<K extends GetSocketMessagesWithoutCallback<TEmitCatalog>>(\n type: K,\n payload: z.input<GetSocketMessageSchema<TEmitCatalog, K>>\n ): Promise<void>;\n\n sendWithAck<K extends GetSocketMessagesWithCallback<TEmitCatalog>>(\n type: K,\n payload: z.input<GetSocketMessageSchema<TEmitCatalog, K>>\n ): Promise<z.infer<GetSocketCallbackSchema<TEmitCatalog, K>>>;\n}\n\ntype ZodIpcMessageHandlers<\n TListenCatalog extends ZodSocketMessageCatalogSchema,\n TEmitCatalog extends ZodSocketMessageCatalogSchema,\n> = Partial<{\n [K in keyof TListenCatalog]: (\n payload: z.infer<GetSocketMessageSchema<TListenCatalog, K>>,\n sender: ZodIpcMessageSender<TEmitCatalog>\n ) => Promise<\n SocketMessageHasCallback<TListenCatalog, K> extends true\n ? z.input<GetSocketCallbackSchema<TListenCatalog, K>>\n : void\n >;\n}>;\n\nconst messageSchema = z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n type: z.string(),\n payload: z.unknown(),\n});\n\ntype ZodIpcMessageHandlerOptions<\n TListenCatalog extends ZodSocketMessageCatalogSchema,\n TEmitCatalog extends ZodSocketMessageCatalogSchema,\n> = {\n schema: TListenCatalog;\n handlers?: ZodIpcMessageHandlers<TListenCatalog, TEmitCatalog>;\n sender: ZodIpcMessageSender<TEmitCatalog>;\n};\n\nclass ZodIpcMessageHandler<\n TListenCatalog extends ZodSocketMessageCatalogSchema,\n TEmitCatalog extends ZodSocketMessageCatalogSchema,\n> {\n #schema: TListenCatalog;\n #handlers: ZodIpcMessageHandlers<TListenCatalog, TEmitCatalog> | undefined;\n #sender: ZodIpcMessageSender<TEmitCatalog>;\n\n constructor(options: ZodIpcMessageHandlerOptions<TListenCatalog, TEmitCatalog>) {\n this.#schema = options.schema;\n this.#handlers = options.handlers;\n this.#sender = options.sender;\n }\n\n public async handleMessage(message: unknown) {\n const parsedMessage = this.parseMessage(message);\n\n if (!this.#handlers) {\n throw new Error(\"No handlers provided\");\n }\n\n const handler = this.#handlers[parsedMessage.type];\n\n if (!handler) {\n // console.error(`No handler for message type: ${String(parsedMessage.type)}`);\n return;\n }\n\n const ack = await handler(parsedMessage.payload, this.#sender);\n\n return ack;\n }\n\n public parseMessage(message: unknown): MessagesFromSocketCatalog<TListenCatalog> {\n const parsedMessage = messageSchema.safeParse(message);\n\n if (!parsedMessage.success) {\n throw new Error(`Failed to parse message: ${JSON.stringify(parsedMessage.error)}`);\n }\n\n const schema = this.#schema[parsedMessage.data.type][\"message\"];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${parsedMessage.data.type}`);\n }\n\n const parsedPayload = schema.safeParse(parsedMessage.data.payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n return {\n type: parsedMessage.data.type,\n payload: parsedPayload.data,\n };\n }\n}\n\nconst Packet = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"CONNECT\"),\n sessionId: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"ACK\"),\n message: z.any(),\n id: z.number(),\n }),\n z.object({\n type: z.literal(\"EVENT\"),\n message: z.any(),\n id: z.number().optional(),\n }),\n]);\n\ntype Packet = z.infer<typeof Packet>;\n\ninterface ZodIpcConnectionOptions<\n TListenCatalog extends ZodSocketMessageCatalogSchema,\n TEmitCatalog extends ZodSocketMessageCatalogSchema,\n> {\n listenSchema: TListenCatalog;\n emitSchema: TEmitCatalog;\n process: {\n send?: (message: any) => any;\n on?: (event: \"message\", listener: (message: any) => void) => void;\n };\n handlers?: ZodIpcMessageHandlers<TListenCatalog, TEmitCatalog>;\n}\n\nexport class ZodIpcConnection<\n TListenCatalog extends ZodSocketMessageCatalogSchema,\n TEmitCatalog extends ZodSocketMessageCatalogSchema,\n> {\n #sessionId?: string;\n #messageCounter: number = 0;\n\n #handler: ZodIpcMessageHandler<TListenCatalog, TEmitCatalog>;\n\n #acks: Map<\n number,\n {\n resolve: (value: unknown) => void;\n reject: (reason?: any) => void;\n timeout: NodeJS.Timeout;\n }\n > = new Map();\n\n constructor(private opts: ZodIpcConnectionOptions<TListenCatalog, TEmitCatalog>) {\n this.#handler = new ZodIpcMessageHandler({\n schema: opts.listenSchema,\n handlers: opts.handlers,\n sender: {\n send: this.send.bind(this),\n sendWithAck: this.sendWithAck.bind(this),\n },\n });\n\n this.#registerHandlers();\n // this.connect();\n }\n\n async #registerHandlers() {\n if (!this.opts.process.on) {\n return;\n }\n\n this.opts.process.on(\"message\", async (message) => {\n this.#handlePacket(message);\n });\n }\n\n async connect() {\n this.#sendPacket({ type: \"CONNECT\" });\n }\n\n async #handlePacket(packet: Packet): Promise<void> {\n const parsedPacket = Packet.safeParse(packet);\n\n if (!parsedPacket.success) {\n // console.error(\"dropping invalid packet\", packet);\n return;\n }\n\n // console.log(\"<-\", packet);\n\n switch (parsedPacket.data.type) {\n case \"ACK\": {\n // Check our list of ACKs and resolve with the message\n const ack = this.#acks.get(parsedPacket.data.id);\n\n if (!ack) {\n return;\n }\n\n clearTimeout(ack.timeout);\n ack.resolve(parsedPacket.data.message);\n\n break;\n }\n case \"CONNECT\": {\n if (!parsedPacket.data.sessionId) {\n // This is a client trying to connect, so we generate and send back a session ID\n const id = randomUUID();\n\n await this.#sendPacket({ type: \"CONNECT\", sessionId: id });\n\n return;\n }\n\n // This is a server replying to our connect message\n if (this.#sessionId) {\n // We're already connected\n return;\n }\n\n this.#sessionId = parsedPacket.data.sessionId;\n\n break;\n }\n case \"EVENT\": {\n const result = await this.#handler.handleMessage(parsedPacket.data.message);\n\n if (typeof parsedPacket.data.id === \"undefined\") {\n return;\n }\n\n // There's an ID so we should ACK\n await this.#sendPacket({\n type: \"ACK\",\n id: parsedPacket.data.id,\n message: result,\n });\n\n break;\n }\n default: {\n break;\n }\n }\n }\n\n async #sendPacket(packet: Packet) {\n // console.log(\"->\", packet);\n await this.opts.process.send?.(packet);\n }\n\n async send<K extends GetSocketMessagesWithoutCallback<TEmitCatalog>>(\n type: K,\n payload: z.input<GetSocketMessageSchema<TEmitCatalog, K>>\n ): Promise<void> {\n const schema = this.opts.emitSchema[type][\"message\"];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${type as string}`);\n }\n\n const parsedPayload = schema.safeParse(payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n await this.#sendPacket({\n type: \"EVENT\",\n message: {\n type,\n payload,\n version: \"v1\",\n },\n });\n }\n\n public async sendWithAck<K extends GetSocketMessagesWithCallback<TEmitCatalog>>(\n type: K,\n payload: z.input<GetSocketMessageSchema<TEmitCatalog, K>>,\n timeoutInMs?: number\n ): Promise<z.infer<GetSocketCallbackSchema<TEmitCatalog, K>>> {\n const currentId = this.#messageCounter++;\n\n return new Promise(async (resolve, reject) => {\n const defaultTimeoutInMs = 2000;\n\n // Timeout if the ACK takes too long to get back to us\n const timeout = setTimeout(() => {\n reject(\n JSON.stringify({\n reason: \"sendWithAck() timeout\",\n timeoutInMs: timeoutInMs ?? defaultTimeoutInMs,\n type,\n payload,\n })\n );\n }, timeoutInMs ?? defaultTimeoutInMs);\n\n this.#acks.set(currentId, { resolve, reject, timeout });\n\n const schema = this.opts.emitSchema[type][\"message\"];\n\n if (!schema) {\n clearTimeout(timeout);\n return reject(`Unknown message type: ${type as string}`);\n }\n\n const parsedPayload = schema.safeParse(payload);\n\n if (!parsedPayload.success) {\n clearTimeout(timeout);\n return reject(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n await this.#sendPacket({\n type: \"EVENT\",\n message: {\n type,\n payload,\n version: \"v1\",\n },\n id: currentId,\n });\n });\n }\n}\n","import { 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 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\nfunction correctStackTraceLine(line: string, projectDir?: string) {\n const regex = /at (.*?) \\(?file:\\/\\/(\\/.*?\\.ts):(\\d+):(\\d+)\\)?/;\n\n const match = regex.exec(line);\n\n if (!match) {\n return;\n }\n\n const [_, identifier, path, lineNum, colNum] = match;\n\n if (!path) {\n return;\n }\n\n // Check to see if the file name is __entryPoint.ts, if it is we can remove it\n if (nodePath.basename(path) === \"__entryPoint.ts\") {\n return;\n }\n\n // Check to see if the path is inside the project directory\n if (projectDir && !path.includes(projectDir)) {\n return;\n }\n\n return line;\n}\n","export const _globalThis = typeof globalThis === \"object\" ? globalThis : global;\n","import { Clock } from \"../clock/clock\";\nimport type { RuntimeManager } from \"../runtime/manager\";\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};\n","import {\n BatchTaskRunExecutionResult,\n TaskMetadataWithFilePath,\n TaskRunContext,\n TaskRunExecutionResult,\n} from \"../schemas\";\nimport { RuntimeManager } from \"./manager\";\n\nexport class NoopRuntimeManager implements RuntimeManager {\n disable(): void {\n // do nothing\n }\n\n registerTasks(): void {}\n\n getTaskMetadata(id: string): TaskMetadataWithFilePath | undefined {\n return undefined;\n }\n\n waitForDuration(ms: number): Promise<void> {\n return Promise.resolve();\n }\n\n waitUntil(date: Date): Promise<void> {\n return Promise.resolve();\n }\n\n waitForTask(params: { id: string; ctx: TaskRunContext }): Promise<TaskRunExecutionResult> {\n return Promise.resolve({\n ok: false,\n id: params.id,\n error: { type: \"INTERNAL_ERROR\", code: \"CONFIGURED_INCORRECTLY\" },\n });\n }\n\n waitForBatch(params: {\n id: string;\n runs: string[];\n ctx: TaskRunContext;\n }): Promise<BatchTaskRunExecutionResult> {\n return Promise.resolve({\n id: params.id,\n items: [],\n });\n }\n}\n","const API_NAME = \"runtime\";\n\nimport {\n BatchTaskRunExecutionResult,\n TaskMetadataWithFilePath,\n TaskRunContext,\n TaskRunExecutionResult,\n} from \"../schemas\";\nimport { getGlobal, registerGlobal, unregisterGlobal } from \"../utils/globals\";\nimport { type RuntimeManager } from \"./manager\";\nimport { NoopRuntimeManager } from \"./noopRuntimeManager\";\n\nconst NOOP_RUNTIME_MANAGER = new NoopRuntimeManager();\n\nexport class RuntimeAPI {\n private static _instance?: RuntimeAPI;\n\n private constructor() {}\n\n public static getInstance(): RuntimeAPI {\n if (!this._instance) {\n this._instance = new RuntimeAPI();\n }\n\n return this._instance;\n }\n\n public waitForDuration(ms: number): Promise<void> {\n return this.#getRuntimeManager().waitForDuration(ms);\n }\n\n public waitUntil(date: Date): Promise<void> {\n return this.#getRuntimeManager().waitUntil(date);\n }\n\n public waitForTask(params: { id: string; ctx: TaskRunContext }): Promise<TaskRunExecutionResult> {\n return this.#getRuntimeManager().waitForTask(params);\n }\n\n public waitForBatch(params: {\n id: string;\n runs: string[];\n ctx: TaskRunContext;\n }): Promise<BatchTaskRunExecutionResult> {\n return this.#getRuntimeManager().waitForBatch(params);\n }\n\n public setGlobalRuntimeManager(runtimeManager: RuntimeManager): boolean {\n return registerGlobal(API_NAME, runtimeManager);\n }\n\n public disable() {\n this.#getRuntimeManager().disable();\n unregisterGlobal(API_NAME);\n }\n\n public registerTasks(tasks: TaskMetadataWithFilePath[]): void {\n this.#getRuntimeManager().registerTasks(tasks);\n }\n\n public getTaskMetadata(id: string): TaskMetadataWithFilePath | undefined {\n return this.#getRuntimeManager().getTaskMetadata(id);\n }\n\n #getRuntimeManager(): RuntimeManager {\n return getGlobal(API_NAME) ?? NOOP_RUNTIME_MANAGER;\n }\n}\n","// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { RuntimeAPI } from \"./runtime\";\n/** Entrypoint for runtime API */\nexport const runtime = RuntimeAPI.getInstance();\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 = \"log\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\nconst logLevels: Array<LogLevel> = [\"error\", \"warn\", \"log\", \"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;\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 < 2) return;\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;\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 < 1) return;\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 < 0) return;\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(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","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 { NoopTaskLogger, TaskLogger } from \"./taskLogger\";\nimport { getGlobal, registerGlobal, unregisterGlobal } from \"../utils/globals\";\nimport { Span } from \"@opentelemetry/api\";\n\nconst API_NAME = \"logger\";\n\nconst NOOP_TASK_LOGGER = new NoopTaskLogger();\n\nexport class LoggerAPI implements TaskLogger {\n private static _instance?: LoggerAPI;\n\n private constructor() {}\n\n public static getInstance(): LoggerAPI {\n if (!this._instance) {\n this._instance = new LoggerAPI();\n }\n\n return this._instance;\n }\n\n public disable() {\n unregisterGlobal(API_NAME);\n }\n\n public setGlobalTaskLogger(taskLogger: TaskLogger): boolean {\n return registerGlobal(API_NAME, taskLogger);\n }\n\n public debug(message: string, metadata?: Record<string, unknown>) {\n this.#getTaskLogger().debug(message, metadata);\n }\n\n public log(message: string, metadata?: Record<string, unknown>) {\n this.#getTaskLogger().log(message, metadata);\n }\n\n public info(message: string, metadata?: Record<string, unknown>) {\n this.#getTaskLogger().info(message, metadata);\n }\n\n public warn(message: string, metadata?: Record<string, unknown>) {\n this.#getTaskLogger().warn(message, metadata);\n }\n\n public error(message: string, metadata?: Record<string, unknown>) {\n this.#getTaskLogger().error(message, metadata);\n }\n\n public trace<T>(name: string, fn: (span: Span) => Promise<T>): Promise<T> {\n return this.#getTaskLogger().trace(name, fn);\n }\n\n #getTaskLogger(): TaskLogger {\n return getGlobal(API_NAME) ?? NOOP_TASK_LOGGER;\n }\n}\n","// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { LoggerAPI } from \"./logger\";\n/** Entrypoint for logger API */\nexport const logger = LoggerAPI.getInstance();\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","import humanizeDuration, { Unit } from \"humanize-duration\";\n\nfunction dateDifference(date1: Date, date2: Date) {\n return Math.abs(date1.getTime() - date2.getTime());\n}\n\ntype DurationOptions = {\n style?: \"long\" | \"short\";\n maxDecimalPoints?: number;\n units?: Unit[];\n};\n\nexport function formatDuration(\n start?: Date | null,\n end?: Date | null,\n options?: DurationOptions\n): string {\n if (!start || !end) {\n return \"–\";\n }\n\n return formatDurationMilliseconds(dateDifference(start, end), options);\n}\n\nexport function nanosecondsToMilliseconds(nanoseconds: number): number {\n return nanoseconds / 1_000_000;\n}\n\nexport function millisecondsToNanoseconds(milliseconds: number): number {\n return milliseconds * 1_000_000;\n}\n\nexport function formatDurationNanoseconds(nanoseconds: number, options?: DurationOptions): string {\n return formatDurationMilliseconds(nanosecondsToMilliseconds(nanoseconds), options);\n}\n\nconst aboveOneSecondUnits = [\"d\", \"h\", \"m\", \"s\"] as Unit[];\nconst belowOneSecondUnits = [\"ms\"] as Unit[];\n\nexport function formatDurationMilliseconds(\n milliseconds: number,\n options?: DurationOptions\n): string {\n let duration = humanizeDuration(milliseconds, {\n units: options?.units\n ? options.units\n : milliseconds < 1000\n ? belowOneSecondUnits\n : aboveOneSecondUnits,\n maxDecimalPoints: options?.maxDecimalPoints ?? 1,\n largest: 2,\n });\n\n if (!options) {\n return duration;\n }\n\n switch (options.style) {\n case \"short\":\n duration = duration.replace(\" milliseconds\", \"ms\");\n duration = duration.replace(\" millisecond\", \"ms\");\n duration = duration.replace(\" seconds\", \"s\");\n duration = duration.replace(\" second\", \"s\");\n duration = duration.replace(\" minutes\", \"m\");\n duration = duration.replace(\" minute\", \"m\");\n duration = duration.replace(\" hours\", \"h\");\n duration = duration.replace(\" hour\", \"h\");\n duration = duration.replace(\" days\", \"d\");\n duration = duration.replace(\" day\", \"d\");\n duration = duration.replace(\" weeks\", \"w\");\n duration = duration.replace(\" week\", \"w\");\n duration = duration.replace(\" months\", \"mo\");\n duration = duration.replace(\" month\", \"mo\");\n duration = duration.replace(\" years\", \"y\");\n duration = duration.replace(\" year\", \"y\");\n }\n\n return duration;\n}\n\nexport function formatDurationInDays(milliseconds: number): string {\n let duration = humanizeDuration(milliseconds, {\n maxDecimalPoints: 0,\n largest: 2,\n units: [\"d\"],\n });\n\n return duration;\n}\n","import {\n BatchTaskRunExecutionResult,\n TaskMetadataWithFilePath,\n TaskRunContext,\n TaskRunExecution,\n TaskRunExecutionResult,\n} from \"../schemas\";\nimport { RuntimeManager } from \"./manager\";\n\nexport class DevRuntimeManager implements RuntimeManager {\n _taskWaits: Map<\n string,\n { resolve: (value: TaskRunExecutionResult) => void; reject: (err?: any) => void }\n > = new Map();\n\n _batchWaits: Map<\n string,\n { resolve: (value: BatchTaskRunExecutionResult) => void; reject: (err?: any) => void }\n > = new Map();\n\n _tasks: Map<string, TaskMetadataWithFilePath> = new Map();\n\n _pendingCompletionNotifications: Map<string, TaskRunExecutionResult> = new Map();\n\n disable(): void {\n // do nothing\n }\n\n registerTasks(tasks: TaskMetadataWithFilePath[]): void {\n for (const task of tasks) {\n this._tasks.set(task.id, task);\n }\n }\n\n getTaskMetadata(id: string): TaskMetadataWithFilePath | undefined {\n return this._tasks.get(id);\n }\n\n async waitForDuration(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n\n async waitUntil(date: Date): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, date.getTime() - Date.now());\n });\n }\n\n async waitForTask(params: { id: string; ctx: TaskRunContext }): Promise<TaskRunExecutionResult> {\n const pendingCompletion = this._pendingCompletionNotifications.get(params.id);\n\n if (pendingCompletion) {\n this._pendingCompletionNotifications.delete(params.id);\n\n return pendingCompletion;\n }\n\n const promise = new Promise<TaskRunExecutionResult>((resolve, reject) => {\n this._taskWaits.set(params.id, { resolve, reject });\n });\n\n return await promise;\n }\n\n async waitForBatch(params: {\n id: string;\n runs: string[];\n ctx: TaskRunContext;\n }): Promise<BatchTaskRunExecutionResult> {\n if (!params.runs.length) {\n return Promise.resolve({ id: params.id, items: [] });\n }\n\n const promise = Promise.all(\n params.runs.map((runId) => {\n return new Promise<TaskRunExecutionResult>((resolve, reject) => {\n const pendingCompletion = this._pendingCompletionNotifications.get(runId);\n\n if (pendingCompletion) {\n this._pendingCompletionNotifications.delete(runId);\n\n if (pendingCompletion.ok) {\n resolve(pendingCompletion);\n } else {\n reject(pendingCompletion);\n }\n\n return;\n }\n\n this._taskWaits.set(runId, { resolve, reject });\n });\n })\n );\n\n const results = await promise;\n\n return {\n id: params.id,\n items: results,\n };\n }\n\n resumeTask(completion: TaskRunExecutionResult, execution: TaskRunExecution): void {\n const wait = this._taskWaits.get(execution.run.id);\n\n if (!wait) {\n // We need to store the completion in case the task is awaited later\n this._pendingCompletionNotifications.set(execution.run.id, completion);\n\n return;\n }\n\n if (completion.ok) {\n wait.resolve(completion);\n } else {\n wait.reject(completion);\n }\n\n this._taskWaits.delete(execution.run.id);\n }\n}\n","import { clock } from \"../clock-api\";\nimport {\n BatchTaskRunExecutionResult,\n ProdChildToWorkerMessages,\n ProdWorkerToChildMessages,\n TaskMetadataWithFilePath,\n TaskRunContext,\n TaskRunExecution,\n TaskRunExecutionResult,\n} from \"../schemas\";\nimport { ZodIpcConnection } from \"../zodIpc\";\nimport { RuntimeManager } from \"./manager\";\nimport { setTimeout } from \"node:timers/promises\";\n\nexport type ProdRuntimeManagerOptions = {\n waitThresholdInMs?: number;\n};\n\nexport class ProdRuntimeManager implements RuntimeManager {\n _taskWaits: Map<\n string,\n { resolve: (value: TaskRunExecutionResult) => void; reject: (err?: any) => void }\n > = new Map();\n\n _batchWaits: Map<\n string,\n { resolve: (value: BatchTaskRunExecutionResult) => void; reject: (err?: any) => void }\n > = new Map();\n\n _waitForRestore: { resolve: (value: \"restore\") => void; reject: (err?: any) => void } | undefined;\n\n _tasks: Map<string, TaskMetadataWithFilePath> = new Map();\n\n constructor(\n private ipc: ZodIpcConnection<\n typeof ProdWorkerToChildMessages,\n typeof ProdChildToWorkerMessages\n >,\n private options: ProdRuntimeManagerOptions = {}\n ) {}\n\n disable(): void {\n // do nothing\n }\n\n registerTasks(tasks: TaskMetadataWithFilePath[]): void {\n for (const task of tasks) {\n this._tasks.set(task.id, task);\n }\n }\n\n getTaskMetadata(id: string): TaskMetadataWithFilePath | undefined {\n return this._tasks.get(id);\n }\n\n async waitForDuration(ms: number): Promise<void> {\n const now = Date.now();\n\n const resolveAfterDuration = setTimeout(ms, \"duration\" as const);\n\n if (ms <= this.waitThresholdInMs) {\n await resolveAfterDuration;\n return;\n }\n\n const waitForRestore = new Promise<\"restore\">((resolve, reject) => {\n this._waitForRestore = { resolve, reject };\n });\n\n const { willCheckpointAndRestore } = await this.ipc.sendWithAck(\"WAIT_FOR_DURATION\", {\n ms,\n now,\n });\n\n if (!willCheckpointAndRestore) {\n await resolveAfterDuration;\n return;\n }\n\n this.ipc.send(\"READY_FOR_CHECKPOINT\", {});\n\n // Don't wait for checkpoint beyond the requested wait duration\n await Promise.race([waitForRestore, resolveAfterDuration]);\n\n // The coordinator can then cancel any in-progress checkpoints\n this.ipc.send(\"CANCEL_CHECKPOINT\", {});\n }\n\n resumeAfterRestore(): void {\n if (!this._waitForRestore) {\n return;\n }\n\n // Resets the clock to the current time\n clock.reset();\n\n this._waitForRestore.resolve(\"restore\");\n this._waitForRestore = undefined;\n }\n\n async waitUntil(date: Date): Promise<void> {\n return this.waitForDuration(date.getTime() - Date.now());\n }\n\n async waitForTask(params: { id: string; ctx: TaskRunContext }): Promise<TaskRunExecutionResult> {\n const promise = new Promise<TaskRunExecutionResult>((resolve, reject) => {\n this._taskWaits.set(params.id, { resolve, reject });\n });\n\n await this.ipc.send(\"WAIT_FOR_TASK\", {\n friendlyId: params.id,\n });\n\n return await promise;\n }\n\n async waitForBatch(params: {\n id: string;\n runs: string[];\n ctx: TaskRunContext;\n }): Promise<BatchTaskRunExecutionResult> {\n if (!params.runs.length) {\n return Promise.resolve({ id: params.id, items: [] });\n }\n\n const promise = Promise.all(\n params.runs.map((runId) => {\n return new Promise<TaskRunExecutionResult>((resolve, reject) => {\n this._taskWaits.set(runId, { resolve, reject });\n });\n })\n );\n\n await this.ipc.send(\"WAIT_FOR_BATCH\", {\n batchFriendlyId: params.id,\n runFriendlyIds: params.runs,\n });\n\n const results = await promise;\n\n return {\n id: params.id,\n items: results,\n };\n }\n\n resumeTask(completion: TaskRunExecutionResult, execution: TaskRunExecution): void {\n const wait = this._taskWaits.get(execution.run.id);\n\n if (!wait) {\n return;\n }\n\n if (completion.ok) {\n wait.resolve(completion);\n } else {\n wait.reject(completion);\n }\n\n this._taskWaits.delete(execution.run.id);\n }\n\n private get waitThresholdInMs(): number {\n return this.options.waitThresholdInMs ?? 30_000;\n }\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 {\n Context,\n SpanOptions,\n SpanStatusCode,\n context,\n propagation,\n trace,\n type Span,\n type Tracer,\n} from \"@opentelemetry/api\";\nimport { Logger, logs } from \"@opentelemetry/api-logs\";\nimport { SemanticInternalAttributes } from \"./semanticInternalAttributes\";\nimport { clock } from \"./clock-api\";\n\nexport type TriggerTracerConfig =\n | {\n name: string;\n version: string;\n }\n | {\n tracer: Tracer;\n logger: Logger;\n };\n\nexport class TriggerTracer {\n constructor(private readonly _config: TriggerTracerConfig) {}\n\n private _tracer: Tracer | undefined;\n private get tracer(): Tracer {\n if (!this._tracer) {\n if (\"tracer\" in this._config) return this._config.tracer;\n\n this._tracer = trace.getTracer(this._config.name, this._config.version);\n }\n\n return this._tracer;\n }\n\n private _logger: Logger | undefined;\n private get logger(): Logger {\n if (!this._logger) {\n if (\"logger\" in this._config) return this._config.logger;\n\n this._logger = logs.getLogger(this._config.name, this._config.version);\n }\n\n return this._logger;\n }\n\n extractContext(traceContext?: Record<string, unknown>) {\n return propagation.extract(context.active(), traceContext ?? {});\n }\n\n startActiveSpan<T>(\n name: string,\n fn: (span: Span) => Promise<T>,\n options?: SpanOptions,\n ctx?: Context\n ): Promise<T> {\n const parentContext = ctx ?? context.active();\n\n const attributes = options?.attributes ?? {};\n\n return this.tracer.startActiveSpan(\n name,\n {\n ...options,\n attributes,\n startTime: clock.preciseNow(),\n },\n parentContext,\n async (span) => {\n this.tracer\n .startSpan(\n name,\n {\n ...options,\n attributes: {\n ...attributes,\n [SemanticInternalAttributes.SPAN_PARTIAL]: true,\n [SemanticInternalAttributes.SPAN_ID]: span.spanContext().spanId,\n },\n },\n parentContext\n )\n .end();\n\n try {\n return await fn(span);\n } catch (e) {\n if (typeof e === \"string\" || e instanceof Error) {\n span.recordException(e);\n }\n\n span.setStatus({ code: SpanStatusCode.ERROR });\n\n throw e;\n } finally {\n span.end(clock.preciseNow());\n }\n }\n );\n }\n\n startSpan(name: string, options?: SpanOptions, ctx?: Context) {\n const parentContext = ctx ?? context.active();\n\n const attributes = options?.attributes ?? {};\n\n const span = this.tracer.startSpan(name, options, ctx);\n\n this.tracer\n .startSpan(\n name,\n {\n ...options,\n attributes: {\n ...attributes,\n [SemanticInternalAttributes.SPAN_PARTIAL]: true,\n [SemanticInternalAttributes.SPAN_ID]: span.spanContext().spanId,\n },\n },\n parentContext\n )\n .end();\n\n return span;\n }\n}\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(private readonly logger: logsAPI.Logger) {}\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 };\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\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 }\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 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 { RetryOptions } from \"./schemas\";\n\nconst DEFAULT_RETRY_OPTIONS = {\n limit: 5,\n factor: 1.8,\n minTimeoutInMs: 1000,\n maxTimeoutInMs: 60000,\n randomize: true,\n} satisfies RetryOptions;\n\nexport function calculateRetryAt(retryOptions: RetryOptions, attempts: number): Date | undefined {\n const options = {\n ...DEFAULT_RETRY_OPTIONS,\n ...retryOptions,\n };\n\n const retryCount = attempts + 1;\n\n if (retryCount >= options.limit) {\n return;\n }\n\n const random = options.randomize ? Math.random() + 1 : 1;\n\n let timeoutInMs = Math.round(\n random *\n Math.max(options.minTimeoutInMs, 1) *\n Math.pow(options.factor, Math.max(attempts - 1, 0))\n );\n\n timeoutInMs = Math.min(timeoutInMs, options.maxTimeoutInMs);\n\n return new Date(Date.now() + timeoutInMs);\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: Date = new Date()\n): Date | undefined {\n if (!resets) return;\n\n switch (format) {\n case \"iso_8601_duration_openai_variant\": {\n return calculateISO8601DurationOpenAIVariantResetAt(resets, now);\n }\n case \"iso_8601\": {\n return calculateISO8601ResetAt(resets, now);\n }\n case \"unix_timestamp\": {\n return calculateUnixTimestampResetAt(resets, now);\n }\n case \"unix_timestamp_in_ms\": {\n return calculateUnixTimestampInMsResetAt(resets, now);\n }\n }\n}\n\nfunction calculateUnixTimestampResetAt(resets: string, now: Date = new Date()): Date | undefined {\n // Check if the input is null or undefined\n if (!resets) return undefined;\n\n // Convert the string to a number\n const resetAt = parseInt(resets, 10);\n\n // If the string doesn't match the expected format, return undefined\n if (isNaN(resetAt)) return undefined;\n\n // Return the date\n return new Date(resetAt * 1000);\n}\n\nfunction calculateUnixTimestampInMsResetAt(\n resets: string,\n now: Date = new Date()\n): Date | undefined {\n // Check if the input is null or undefined\n if (!resets) return undefined;\n\n // Convert the string to a number\n const resetAt = parseInt(resets, 10);\n\n // If the string doesn't match the expected format, return undefined\n if (isNaN(resetAt)) return undefined;\n\n // Return the date\n return new Date(resetAt);\n}\n\nfunction calculateISO8601ResetAt(resets: string, now: Date = new Date()): Date | undefined {\n // Check if the input is null or undefined\n if (!resets) return undefined;\n\n // Parse the date\n const resetAt = new Date(resets);\n\n // If the string doesn't match the expected format, return undefined\n if (isNaN(resetAt.getTime())) return undefined;\n\n return resetAt;\n}\n\nfunction calculateISO8601DurationOpenAIVariantResetAt(\n resets: string,\n now: Date = new Date()\n): Date | undefined {\n // Check if the input is null or undefined\n if (!resets) return undefined;\n\n // Regular expression to match the duration string pattern\n const pattern = /^(?:(\\d+)d)?(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+(?:\\.\\d+)?)s)?(?:(\\d+)ms)?$/;\n const match = resets.match(pattern);\n\n // If the string doesn't match the expected format, return undefined\n if (!match) return undefined;\n\n // Extract days, hours, minutes, seconds, and milliseconds from the string\n const days = parseInt(match[1], 10) || 0;\n const hours = parseInt(match[2], 10) || 0;\n const minutes = parseInt(match[3], 10) || 0;\n const seconds = parseFloat(match[4]) || 0;\n const milliseconds = parseInt(match[5], 10) || 0;\n\n // Calculate the future date based on the current date plus the extracted time\n const resetAt = new Date(now);\n resetAt.setDate(resetAt.getDate() + days);\n resetAt.setHours(resetAt.getHours() + hours);\n resetAt.setMinutes(resetAt.getMinutes() + minutes);\n resetAt.setSeconds(resetAt.getSeconds() + Math.floor(seconds));\n resetAt.setMilliseconds(\n resetAt.getMilliseconds() + (seconds - Math.floor(seconds)) * 1000 + milliseconds\n );\n\n return resetAt;\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 { 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 { EventFilter } from \"./schemas/eventFilter\";\n\n// EventFilter is a recursive type, where the keys are strings and the values are an array of strings, numbers, booleans, or objects.\n// If the values of the array are strings, numbers, or booleans, than we are matching against the value of the payload.\n// If the values of the array are objects, then we are doing content filtering\n// An example would be [{ $endsWith: \".png\" }, { $startsWith: \"images/\" } ]\nexport function eventFilterMatches(payload: any, filter: EventFilter): boolean {\n if (payload === undefined || payload === null) {\n if (Object.entries(filter).length === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n for (const [patternKey, patternValue] of Object.entries(filter)) {\n const payloadValue = payload[patternKey];\n\n if (Array.isArray(patternValue)) {\n if (patternValue.length === 0) {\n continue;\n }\n\n // Check to see if all the items in the array are a string\n if ((patternValue as unknown[]).every((item) => typeof item === \"string\")) {\n if ((patternValue as string[]).includes(payloadValue)) {\n continue;\n }\n\n return false;\n }\n\n // Check to see if all the items in the array are a number\n if ((patternValue as unknown[]).every((item) => typeof item === \"number\")) {\n if ((patternValue as number[]).includes(payloadValue)) {\n continue;\n }\n\n return false;\n }\n\n // Check to see if all the items in the array are a boolean\n if ((patternValue as unknown[]).every((item) => typeof item === \"boolean\")) {\n if ((patternValue as boolean[]).includes(payloadValue)) {\n continue;\n }\n\n return false;\n }\n\n // Now we know that all the items in the array are objects\n const objectArray = patternValue as Exclude<\n typeof patternValue,\n number[] | string[] | boolean[]\n >;\n\n if (!contentFiltersMatches(payloadValue, objectArray)) {\n return false;\n }\n\n continue;\n } else if (typeof patternValue === \"object\") {\n if (Array.isArray(payloadValue)) {\n if (!payloadValue.some((item) => eventFilterMatches(item, patternValue))) {\n return false;\n }\n } else {\n if (!eventFilterMatches(payloadValue, patternValue)) {\n return false;\n }\n }\n }\n }\n return true;\n}\n\ntype ContentFilters = Exclude<EventFilter[string], EventFilter | string[] | number[] | boolean[]>;\n\nfunction contentFiltersMatches(actualValue: any, contentFilters: ContentFilters): boolean {\n for (const contentFilter of contentFilters) {\n if (typeof contentFilter === \"object\") {\n const [key, value] = Object.entries(contentFilter)[0];\n\n if (!contentFilterMatches(actualValue, contentFilter)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction contentFilterMatches(actualValue: any, contentFilter: ContentFilters[number]): boolean {\n if (\"$endsWith\" in contentFilter) {\n if (typeof actualValue !== \"string\") {\n return false;\n }\n\n return actualValue.endsWith(contentFilter.$endsWith);\n }\n\n if (\"$startsWith\" in contentFilter) {\n if (typeof actualValue !== \"string\") {\n return false;\n }\n\n return actualValue.startsWith(contentFilter.$startsWith);\n }\n\n if (\"$anythingBut\" in contentFilter) {\n if (Array.isArray(contentFilter.$anythingBut)) {\n if ((contentFilter.$anythingBut as any[]).includes(actualValue)) {\n return false;\n }\n }\n\n if (contentFilter.$anythingBut === actualValue) {\n return false;\n }\n\n return true;\n }\n\n if (\"$exists\" in contentFilter) {\n if (contentFilter.$exists) {\n return actualValue !== undefined;\n }\n\n return actualValue === undefined;\n }\n\n if (\"$gt\" in contentFilter) {\n if (typeof actualValue !== \"number\") {\n return false;\n }\n\n return actualValue > contentFilter.$gt;\n }\n\n if (\"$lt\" in contentFilter) {\n if (typeof actualValue !== \"number\") {\n return false;\n }\n\n return actualValue < contentFilter.$lt;\n }\n\n if (\"$gte\" in contentFilter) {\n if (typeof actualValue !== \"number\") {\n return false;\n }\n\n return actualValue >= contentFilter.$gte;\n }\n\n if (\"$lte\" in contentFilter) {\n if (typeof actualValue !== \"number\") {\n return false;\n }\n\n return actualValue <= contentFilter.$lte;\n }\n\n if (\"$between\" in contentFilter) {\n if (typeof actualValue !== \"number\") {\n return false;\n }\n\n return actualValue >= contentFilter.$between[0] && actualValue <= contentFilter.$between[1];\n }\n\n if (\"$includes\" in contentFilter) {\n if (Array.isArray(actualValue)) {\n return actualValue.includes(contentFilter.$includes);\n }\n\n return false;\n }\n\n // Use localCompare\n if (\"$ignoreCaseEquals\" in contentFilter) {\n if (typeof actualValue !== \"string\") {\n return false;\n }\n\n return (\n actualValue.localeCompare(contentFilter.$ignoreCaseEquals, undefined, {\n sensitivity: \"accent\",\n }) === 0\n );\n }\n\n if (\"$isNull\" in contentFilter) {\n if (contentFilter.$isNull) {\n return actualValue === null;\n }\n\n return actualValue !== null;\n }\n\n if (\"$not\" in contentFilter) {\n if (Array.isArray(actualValue)) {\n return !actualValue.includes(contentFilter.$not);\n } else if (typeof actualValue === 'number' || typeof actualValue === 'boolean' || typeof actualValue === 'string') {\n return actualValue !== contentFilter.$not;\n }\n\n return false;\n }\n\n return true;\n}\n","export function omit<T extends Record<string, any>, K extends keyof T>(\n obj: T,\n ...keys: K[]\n): Omit<T, K> {\n const result: Record<string, any> = {};\n\n for (const key in obj) {\n if (!keys.includes(key as unknown as K)) {\n result[key] = obj[key];\n }\n }\n\n return result as Omit<T, K>;\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 \"../tasks/taskContextManager\";\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: TracerProvider;\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._spanExporter.forceFlush?.();\n await this._logProvider.forceFlush();\n }\n\n public async shutdown() {\n await this._spanExporter.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 { 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 { taskContextManager } from \"../tasks/taskContextManager\";\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 const result = await taskContextManager.runWith(\n {\n ctx,\n worker,\n },\n async () => {\n this._tracingSDK.asyncResourceDetector.resolveWithAttributes({\n ...taskContextManager.attributes,\n [SemanticInternalAttributes.SDK_VERSION]: this.task.packageVersion,\n [SemanticInternalAttributes.SDK_LANGUAGE]: \"typescript\",\n });\n\n return 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 initOutput = await this.#callTaskInit(parsedPayload, ctx);\n\n const output = await this.#callRun(parsedPayload, 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 span.setAttributes(\n await createPacketAttributes(\n finalOutput,\n SemanticInternalAttributes.OUTPUT,\n SemanticInternalAttributes.OUTPUT_TYPE\n )\n );\n\n return {\n ok: true,\n id: execution.attempt.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.attempt.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 return {\n id: execution.attempt.id,\n ok: false,\n error: handleErrorResult.error\n ? parseError(handleErrorResult.error)\n : parseError(runError),\n retry:\n 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.attempt.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 );\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 #callTaskInit(payload: unknown, ctx: TaskRunContext) {\n const initFn = this.task.fns.init;\n\n if (!initFn) {\n return {};\n }\n\n return this._tracer.startActiveSpan(\"init\", async (span) => {\n return await initFn(payload, { ctx });\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 { Attributes, Span } from \"@opentelemetry/api\";\nimport { apiClientManager } from \"../apiClient\";\nimport { OFFLOAD_IO_PACKET_LENGTH_LIMIT, imposeAttributeLimits } from \"../limits\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\nimport { TriggerTracer } from \"../tracer\";\nimport { flattenAttributes } from \"./flattenAttributes\";\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 const { stringify } = await loadSuperJSON();\n\n return { data: stringify(value), dataType: \"application/super+json\" };\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 if (presignedResponse.ok) {\n const uploadResponse = await fetch(presignedResponse.data.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.data.presignedUrl}: ${uploadResponse.statusText}`\n );\n }\n\n return {\n data: filename,\n dataType: \"application/store\",\n };\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 if (presignedResponse.ok) {\n const response = await fetch(presignedResponse.data.presignedUrl);\n\n if (!response.ok) {\n throw new Error(\n `Failed to import packet ${presignedResponse.data.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\n return packet;\n}\n\nexport async function createPacketAttributes(\n packet: IOPacket,\n dataKey: string,\n dataTypeKey: string\n): Promise<Attributes> {\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 const parsed = parse(packet.data) as any;\n const jsonified = JSON.parse(JSON.stringify(parsed, safeReplacer));\n\n return {\n ...flattenAttributes(jsonified, dataKey),\n [dataTypeKey]: \"application/json\",\n };\n case \"application/store\":\n return {\n [dataKey]: packet.data,\n [dataTypeKey]: packet.dataType,\n };\n case \"text/plain\":\n return {\n [SemanticInternalAttributes.OUTPUT]: packet.data,\n [SemanticInternalAttributes.OUTPUT_TYPE]: packet.dataType,\n };\n default:\n return {};\n }\n}\n\nexport async function createPackageAttributesAsJson(\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 = JSON.parse(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 const { deserialize } = await loadSuperJSON();\n\n return await prettyPrintPacket(deserialize(rawData), \"application/json\");\n }\n\n if (dataType === \"application/json\") {\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","{\n \"name\": \"@trigger.dev/core\",\n \"version\": \"3.0.0-beta.1\",\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 \"./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 \"socket.io\": \"^4.7.4\",\n \"socket.io-client\": \"^4.7.4\",\n \"superjson\": \"^2.2.1\",\n \"ulidx\": \"^2.2.1\",\n \"zod\": \"3.22.3\",\n \"zod-error\": \"1.5.0\"\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\": \"^18\",\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 },\n \"engines\": {\n \"node\": \">=18.0.0\"\n }\n}","import { dependencies } from \"../../../package.json\"\n\nexport function detectDependencyVersion(dependency: string): string | undefined {\n return (dependencies as Record<string, string>)[dependency]\n}","import { BatchTriggerTaskRequestBody, TriggerTaskRequestBody } from \"./schemas\";\n\nexport * from \"./schemas\";\nexport * from \"./apiClient\";\nexport * from \"./zodMessageHandler\";\nexport * from \"./zodNamespace\";\nexport * from \"./zodSocket\";\nexport * from \"./zodIpc\";\nexport * from \"./errors\";\nexport * from \"./runtime-api\";\nexport * from \"./logger-api\";\nexport * from \"./clock-api\";\nexport * from \"./types\";\nexport * from \"./limits\";\nexport { SemanticInternalAttributes } from \"./semanticInternalAttributes\";\nexport { iconStringForSeverity } from \"./icons\";\nexport {\n formatDuration,\n formatDurationMilliseconds,\n formatDurationNanoseconds,\n formatDurationInDays,\n nanosecondsToMilliseconds,\n millisecondsToNanoseconds,\n} from \"./utils/durations\";\nexport { getEnvVar } from \"./utils/getEnv\";\n\nexport function parseTriggerTaskRequestBody(body: unknown) {\n return TriggerTaskRequestBody.safeParse(body);\n}\n\nexport function parseBatchTriggerTaskRequestBody(body: unknown) {\n return BatchTriggerTaskRequestBody.safeParse(body);\n}\n\nexport { taskContextManager, TaskContextSpanProcessor } from \"./tasks/taskContextManager\";\nexport type { RuntimeManager } from \"./runtime/manager\";\nexport { DevRuntimeManager } from \"./runtime/devRuntimeManager\";\nexport { ProdRuntimeManager } from \"./runtime/prodRuntimeManager\";\nexport { PreciseWallClock as DurableClock } from \"./clock/preciseWallClock\";\nexport { TriggerTracer } from \"./tracer\";\n\nexport type { TaskLogger } from \"./logger/taskLogger\";\nexport { OtelTaskLogger } from \"./logger/taskLogger\";\nexport { ConsoleInterceptor } from \"./consoleInterceptor\";\nexport {\n flattenAttributes,\n unflattenAttributes,\n primitiveValueOrflattenedAttributes,\n} from \"./utils/flattenAttributes\";\nexport {\n defaultRetryOptions,\n defaultFetchRetryOptions,\n calculateNextRetryDelay,\n calculateResetAt,\n} from \"./utils/retries\";\nexport { accessoryAttributes } from \"./utils/styleAttributes\";\nexport { eventFilterMatches } from \"../eventFilterMatches\";\nexport { omit } from \"./utils/omit\";\nexport { TracingSDK, type TracingDiagnosticLogLevel, recordSpanException } from \"./otel\";\nexport { TaskExecutor, type TaskExecutorOptions } from \"./workers/taskExecutor\";\nexport { detectDependencyVersion } from \"./utils/detectDependencyVersion\";\nexport {\n parsePacket,\n stringifyIO,\n prettyPrintPacket,\n createPacketAttributes,\n createPackageAttributesAsJson,\n conditionallyExportPacket,\n conditionallyImportPacket,\n packetRequiresOffloading,\n type IOPacket,\n} from \"./utils/ioSerialization\";\n"]}
1
+ {"version":3,"sources":["../../src/v3/schemas/tokens.ts","../../src/v3/schemas/api.ts","../../src/v3/schemas/resources.ts","../../src/v3/schemas/messages.ts","../../src/v3/schemas/common.ts","../../src/v3/schemas/schemas.ts","../../src/v3/schemas/style.ts","../../src/v3/schemas/fetch.ts","../../src/v3/schemas/eventFilter.ts","../../src/v3/schemas/openTelemetry.ts","../../src/v3/apiClient/index.ts","../../src/zodfetch.ts","../../src/v3/utils/flattenAttributes.ts","../../src/v3/utils/safeAsyncLocalStorage.ts","../../src/v3/semanticInternalAttributes.ts","../../src/v3/tasks/taskContextManager.ts","../../src/v3/utils/getEnv.ts","../../src/v3/zodMessageHandler.ts","../../src/v3/zodSocket.ts","../../src/v3/zodNamespace.ts","../../src/v3/zodIpc.ts","../../src/v3/errors.ts","../../src/v3/utils/platform.ts","../../src/v3/utils/globals.ts","../../src/v3/runtime/noopRuntimeManager.ts","../../src/v3/runtime/index.ts","../../src/v3/runtime-api.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/logger/index.ts","../../src/v3/logger-api.ts","../../src/v3/limits.ts","../../src/v3/utils/durations.ts","../../src/v3/runtime/devRuntimeManager.ts","../../src/v3/runtime/prodRuntimeManager.ts","../../src/v3/clock/preciseWallClock.ts","../../src/v3/tracer.ts","../../src/v3/consoleInterceptor.ts","../../src/retry.ts","../../src/v3/utils/retries.ts","../../src/v3/utils/styleAttributes.ts","../../src/eventFilterMatches.ts","../../src/v3/utils/omit.ts","../../src/v3/otel/index.ts","../../src/v3/otel/tracingSDK.ts","../../src/v3/workers/taskExecutor.ts","../../src/v3/utils/ioSerialization.ts","../../package.json","../../src/v3/utils/detectDependencyVersion.ts","../../src/v3/index.ts"],"names":["z","CreateAuthorizationCodeResponseSchema","object","url","string","authorizationCode","GetPersonalAccessTokenRequestSchema","GetPersonalAccessTokenResponseSchema","token","obfuscatedToken","nullable","TaskRunBuiltInError","type","literal","name","message","stackTrace","TaskRunCustomErrorObject","raw","TaskRunStringError","TaskRunErrorCodes","COULD_NOT_FIND_EXECUTOR","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","TaskRunInternalError","code","enum","optional","TaskRunError","discriminatedUnion","TaskRun","id","payload","payloadType","context","any","tags","array","isTest","boolean","default","createdAt","coerce","date","TaskRunExecutionTask","filePath","exportName","TaskRunExecutionAttempt","number","startedAt","backgroundWorkerId","backgroundWorkerTaskId","status","TaskRunExecutionEnvironment","slug","TaskRunExecutionOrganization","TaskRunExecutionProject","ref","TaskRunExecutionQueue","TaskRunExecutionBatch","TaskRunExecution","task","attempt","run","queue","environment","organization","project","batch","TaskRunContext","omit","TaskRunExecutionRetry","timestamp","delay","error","unknown","TaskRunFailedExecutionResult","ok","retry","skippedRetrying","TaskRunSuccessfulExecutionResult","output","outputType","TaskRunExecutionResult","BatchTaskRunExecutionResult","items","EnvironmentType","MachineCpu","union","MachineMemory","Machine","version","cpu","memory","TaskRunExecutionPayload","execution","traceContext","record","ProdTaskRunExecution","extend","worker","contentHash","ProdTaskRunExecutionPayload","BackgroundWorkerServerMessages","payloads","taskAttemptId","taskRunId","image","machine","envId","envType","orgId","projectId","runId","serverWebsocketMessages","SERVER_READY","BACKGROUND_WORKER_MESSAGE","data","BackgroundWorkerClientMessages","completion","BackgroundWorkerProperties","clientWebsocketMessages","READY_FOR_TASKS","BACKGROUND_WORKER_DEPRECATED","workerToChildMessages","EXECUTE_TASK_RUN","metadata","TASK_RUN_COMPLETED_NOTIFICATION","CLEANUP","flush","kill","FixedWindowRateLimit","limit","window","seconds","minutes","hours","SlidingWindowRateLimit","RateLimitOptions","RetryOptions","maxAttempts","int","factor","minTimeoutInMs","maxTimeoutInMs","randomize","QueueOptions","concurrencyLimit","min","max","rateLimit","TaskMetadata","packageVersion","partial","TaskMetadataWithFilePath","UncaughtExceptionMessage","stack","origin","TaskMetadataFailedToParseData","tasks","zodIssues","custom","v","Array","isArray","every","issue","childToWorkerMessages","TASK_RUN_COMPLETED","result","TASKS_READY","TASKS_FAILED_TO_PARSE","TASK_HEARTBEAT","READY_TO_DISPOSE","undefined","WAIT_FOR_DURATION","ms","WAIT_FOR_TASK","WAIT_FOR_BATCH","runs","UNCAUGHT_EXCEPTION","ProdChildToWorkerMessages","READY_FOR_CHECKPOINT","CANCEL_CHECKPOINT","now","callback","willCheckpointAndRestore","friendlyId","batchFriendlyId","runFriendlyIds","ProdWorkerToChildMessages","void","WAIT_COMPLETED_NOTIFICATION","TaskResource","BackgroundWorkerMetadata","cliPackageVersion","ImageDetailsMetadata","imageTag","WhoAmIResponseSchema","userId","email","dashboardUrl","GetProjectResponseBody","externalRef","title","GetProjectsResponseBody","GetProjectEnvResponse","apiKey","apiUrl","CreateBackgroundWorkerRequestBody","localOnly","CreateBackgroundWorkerResponse","TriggerTaskRequestBody","options","dependentAttempt","dependentBatch","lockToVersion","concurrencyKey","test","TriggerTaskResponse","BatchTriggerTaskRequestBody","BatchTriggerTaskResponse","batchId","GetBatchResponseBody","GetEnvironmentVariablesResponseBody","variables","StartDeploymentIndexingRequestBody","imageReference","StartDeploymentIndexingResponseBody","ExternalBuildData","buildId","buildToken","InitializeDeploymentResponseBody","shortCode","externalBuildData","registryHost","InitializeDeploymentRequestBody","DeploymentErrorData","GetDeploymentResponseBody","errorData","CreateUploadPayloadUrlResponseBody","presignedUrl","PostStartCauses","PreStopCauses","RegexSchema","val","Config","triggerDirectories","triggerUrl","projectDir","tsconfigPath","retries","enabledInDev","additionalPackages","additionalFiles","dependenciesToBundle","logLevel","WaitReason","ProviderToPlatformMessages","LOG","LOG_WITH_ACK","PlatformToProviderMessages","HEALTH","INDEX","success","RESTORE","location","reason","imageRef","checkpointId","DELETE","GET","CoordinatorToPlatformMessages","text","CREATE_WORKER","projectRef","deploymentId","READY_FOR_EXECUTION","totalCompletions","READY_FOR_RESUME","attemptFriendlyId","checkpoint","docker","CHECKPOINT_CREATED","attemptNumber","INDEXING_FAILED","PlatformToCoordinatorMessages","RESUME_AFTER_DEPENDENCY","attemptId","completions","executions","RESUME_AFTER_DURATION","REQUEST_ATTEMPT_CANCELLATION","READY_FOR_RETRY","ClientToSharedQueueMessages","SharedQueueToClientMessages","ProdWorkerToCoordinatorMessages","INDEX_TASKS","shouldExit","CoordinatorToProdWorkerMessages","executionPayload","REQUEST_EXIT","ProdWorkerSocketData","podName","deploymentVersion","PRIMARY_VARIANT","Variant","AccessoryItem","variant","Accessory","style","TaskEventStyle","icon","accessory","stringPatternMatchers","$endsWith","$startsWith","$ignoreCaseEquals","EventMatcher","$exists","$isNull","$anythingBut","$gt","$lt","$gte","$lte","$between","tuple","$includes","$not","EventFilter","lazy","FetchRetryHeadersStrategy","strategy","limitHeader","remainingHeader","resetHeader","bodyFilter","resetFormat","FetchRetryBackoffStrategy","FetchRetryStrategy","FetchRetryByStatusOptions","FetchTimeoutOptions","durationInMs","FetchRetryOptions","byStatus","timeout","connectionError","ExceptionEventProperties","stacktrace","ExceptionSpanEvent","time","properties","exception","CancellationSpanEvent","OtherSpanEvent","SpanEvent","SpanEvents","isExceptionSpanEvent","event","isCancellationSpanEvent","SpanMessagingEvent","system","client_id","operation","destination","propagation","zodfetch","schema","requestInit","_doZodFetch","response","fetch","method","statusText","body","json","defaultRetryOptions","calculateNextRetryDelay","Promise","resolve","setTimeout","jsonBody","parsedResult","safeParse","JSON","stringify","Error","flattenAttributes","obj","prefix","key","value","Object","entries","newPrefix","i","length","assign","isRecord","unflattenAttributes","parts","split","reduce","acc","part","detectIsArrayIndex","push","filter","Boolean","current","cleanPart","substring","nextIsArray","lastPart","cleanLastPart","parseInt","match","primitiveValueOrflattenedAttributes","attributes","AsyncLocalStorage","SafeAsyncLocalStorage","constructor","storage","runWith","fn","getStore","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","TaskContextManager","_storage","isInsideTask","ctx","store","contextAttributes","workerAttributes","taskContextManager","TaskContextSpanProcessor","innerProcessor","_innerProcessor","onStart","span","parentContext","setAttributes","onEnd","shutdown","forceFlush","TaskContextLogProcessor","onEmit","logRecord","getEnvVar","process","env","zodFetchOptions","ApiClient","baseUrl","accessToken","replace","triggerTask","taskId","headers","spanParentAsLink","batchTriggerTask","createUploadPayloadUrl","filename","getPayloadUrl","Authorization","inject","active","_getStore","getStore_fn","ApiClientManager","baseURL","client","apiClientManager","ZodSchemaParsedError","ZodMessageSchema","ZodMessageHandler","messages","handleMessage","parsedMessage","parseMessage","handler","console","String","ack","parsedPayload","registerHandlers","emitter","logger","log","info","eventName","keys","on","hasCallback","_schema","ZodMessageSender","sender","send","forwardMessage","io","messageSchema","_handlers","ZodSocketMessageHandler","handlers","ZodSocketMessageSender","socket","emit","sendWithAck","callbackResult","emitWithAck","_sender","ZodSocketConnection","opts","uri","secure","host","port","namespace","SimpleStructuredLogger","LogLevel","transports","auth","authToken","extraHeaders","reconnectionDelay","reconnectionDelayMax","child","socketId","serverMessages","clientMessages","onError","onConnection","description","onDisconnect","close","connect","bind","level","includes","DEBUG","debug","fields","args","warn","loggerFunction","structuredLog","Date","_logger","_handler","ZodNamespace","of","reject","err","preAuth","use","next","socketStage","handshake","disconnect","postAuth","fetchSockets","randomUUID","ZodIpcMessageHandler","Packet","sessionId","ZodIpcConnection","Map","listenSchema","emitSchema","timeoutInMs","currentId","defaultTimeoutInMs","set","clearTimeout","packet","parsedPacket","get","nodePath","parseError","e","createErrorTaskError","parse","correctErrorStackTrace","errorLine","traceLines","removeFirstLine","map","line","correctStackTraceLine","join","regex","exec","_","identifier","path","lineNum","colNum","basename","groupTaskMetadataIssuesByTask","issues","taskIndex","restOfPath","slice","taskName","existing","_globalThis","globalThis","global","GLOBAL_TRIGGER_DOT_DEV_KEY","Symbol","for","_global","registerGlobal","instance","allowOverride","api","getGlobal","unregisterGlobal","NoopRuntimeManager","disable","registerTasks","getTaskMetadata","waitForDuration","waitUntil","waitForTask","params","waitForBatch","API_NAME","NOOP_RUNTIME_MANAGER","RuntimeAPI","getInstance","_instance","setGlobalRuntimeManager","runtimeManager","runtime","SeverityNumber","iconStringForSeverity","severityNumber","UNSPECIFIED","TRACE","TRACE2","TRACE3","TRACE4","DEBUG2","DEBUG3","DEBUG4","INFO","INFO2","INFO3","INFO4","WARN","WARN2","WARN3","WARN4","ERROR","ERROR2","ERROR3","ERROR4","FATAL","FATAL2","FATAL3","FATAL4","PreciseDate","SimpleClock","preciseNow","nowStruct","toStruct","nanos","reset","SIMPLE_CLOCK","ClockAPI","setGlobalClock","clock","logLevels","OtelTaskLogger","_config","_level","indexOf","trace","tracer","startActiveSpan","severityText","NoopTaskLogger","NOOP_TASK_LOGGER","LoggerAPI","setGlobalTaskLogger","taskLogger","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","imposeAttributeLimits","newAttributes","calculateAttributeValueLength","humanizeDuration","dateDifference","date1","date2","Math","abs","getTime","formatDuration","start","end","formatDurationMilliseconds","nanosecondsToMilliseconds","nanoseconds","millisecondsToNanoseconds","milliseconds","formatDurationNanoseconds","aboveOneSecondUnits","belowOneSecondUnits","duration","units","maxDecimalPoints","largest","formatDurationInDays","DevRuntimeManager","_taskWaits","_batchWaits","_tasks","_pendingCompletionNotifications","pendingCompletion","delete","promise","all","results","resumeTask","wait","ProdRuntimeManager","ipc","resolveAfterDuration","waitThresholdInMs","waitForRestore","_waitForRestore","race","resumeAfterRestore","PreciseWallClock","_origin","clockTime","hrtime","preciseDate","elapsedHrTime","elapsedNanoseconds","BigInt","getFullTime","dateStruct","SpanStatusCode","logs","TriggerTracer","_tracer","getTracer","getLogger","extractContext","extract","startTime","startSpan","spanContext","spanId","recordException","setStatus","util","_getTimestampInHrTime","getTimestampInHrTime_fn","ConsoleInterceptor","intercept","originalConsole","format","parsed","tryParseJSON","getLogMessage","fallback","calculateResetAt","resets","calculateISO8601DurationOpenAIVariantResetAt","calculateISO8601ResetAt","calculateUnixTimestampResetAt","calculateUnixTimestampInMsResetAt","resetAt","isNaN","pattern","days","parseFloat","setDate","getDate","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","floor","setMilliseconds","getMilliseconds","defaultFetchRetryOptions","random","pow","round","calculateResetAtInternal","accessoryAttributes","eventFilterMatches","patternKey","patternValue","payloadValue","item","objectArray","contentFiltersMatches","some","actualValue","contentFilters","contentFilter","contentFilterMatches","endsWith","startsWith","localeCompare","sensitivity","DiagConsoleLogger","DiagLogLevel","diag","OTLPLogExporter","OTLPTraceExporter","registerInstrumentations","Resource","detectResourcesSync","processDetectorSync","BatchLogRecordProcessor","LoggerProvider","SimpleLogRecordProcessor","BatchSpanProcessor","NodeTracerProvider","SimpleSpanProcessor","SemanticResourceAttributes","_a","AsyncResourceDetector","_resolved","_promise","resolver","_resolver","detect","resolveWithAttributes","TracingSDK","config","asyncResourceDetector","setLogLevel","diagLogLevel","envResourceAttributesSerialized","envResourceAttributes","commonResources","detectors","merge","CLOUD_PROVIDER","resource","traceProvider","forceFlushTimeoutMillis","spanLimits","attributeCountLimit","attributeValueLengthLimit","eventCountLimit","attributePerEventCountLimit","linkCountLimit","attributePerLinkCountLimit","spanExporter","timeoutMillis","addSpanProcessor","maxExportBatchSize","scheduledDelayMillis","exportTimeoutMillis","maxQueueSize","register","instrumentations","tracerProvider","logExporter","loggerProvider","logRecordLimits","addLogRecordProcessor","_logProvider","_spanExporter","_traceProvider","setGlobalLoggerProvider","NONE","VERBOSE","ALL","setLogger","recordSpanException","SpanKind","parsePacket","dataType","loadSuperJSON","stringifyIO","conditionallyExportPacket","pathPrefix","needsOffloading","size","packetRequiresOffloading","exportPacket","byteLength","byteSize","Buffer","getPacketExtension","presignedResponse","uploadResponse","conditionallyImportPacket","importPacket","setAttribute","createPacketAttributes","dataKey","dataTypeKey","jsonified","safeReplacer","createPacketAttributesAsJson","deserialize","deserialized","jsonify","safeJsonParse","prettyPrintPacket","rawData","toString","RegExp","Set","from","forEach","k","TaskExecutor","_tracingSDK","tracingSDK","_consoleInterceptor","consoleInterceptor","projectConfig","_importedConfig","importedConfig","_handleErrorFn","handleErrorFn","execute","attemptMessage","originalPacket","initOutput","payloadPacket","stringifiedOutput","finalOutput","stringifyError","runError","handleErrorResult","handleErrorError","kind","CONSUMER","init","runFn","fns","middlewareFn","middleware","initFn","cleanupFn","cleanup","retriesConfig","handleError","retryDelayInMs","retryAt","skipRetrying","detectDependencyVersion","dependency","dependencies","parseTriggerTaskRequestBody","parseBatchTriggerTaskRequestBody"],"mappings":"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","sourcesContent":["import { z } from \"zod\";\n\nexport const CreateAuthorizationCodeResponseSchema = z.object({\n url: z.string().url(),\n authorizationCode: z.string(),\n});\n\nexport type CreateAuthorizationCodeResponse = z.infer<typeof CreateAuthorizationCodeResponseSchema>;\n\nexport const GetPersonalAccessTokenRequestSchema = z.object({\n authorizationCode: z.string(),\n});\nexport type GetPersonalAccessTokenRequest = z.infer<typeof GetPersonalAccessTokenRequestSchema>;\n\nexport const GetPersonalAccessTokenResponseSchema = z.object({\n token: z\n .object({\n token: z.string(),\n obfuscatedToken: z.string(),\n })\n .nullable(),\n});\nexport type GetPersonalAccessTokenResponse = z.infer<typeof GetPersonalAccessTokenResponseSchema>;\n","import { z } from \"zod\";\nimport { BackgroundWorkerMetadata, ImageDetailsMetadata } from \"./resources\";\nimport { QueueOptions } from \"./messages\";\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 test: z.boolean().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});\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","import { z } from \"zod\";\nimport { Machine, QueueOptions, RetryOptions } from \"./messages\";\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});\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 { TaskRunExecution, TaskRunExecutionResult } from \"./common\";\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 BackgroundWorkerServerMessages = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"EXECUTE_RUNS\"),\n payloads: z.array(TaskRunExecutionPayload),\n }),\n z.object({\n type: z.literal(\"CANCEL_ATTEMPT\"),\n taskAttemptId: z.string(),\n taskRunId: z.string(),\n }),\n z.object({\n type: z.literal(\"SCHEDULE_ATTEMPT\"),\n image: z.string(),\n version: z.string(),\n machine: Machine,\n // identifiers\n id: z.string(), // attempt\n envId: z.string(),\n envType: EnvironmentType,\n orgId: z.string(),\n projectId: z.string(),\n runId: z.string(),\n }),\n]);\n\nexport type BackgroundWorkerServerMessages = z.infer<typeof BackgroundWorkerServerMessages>;\n\nexport const serverWebsocketMessages = {\n SERVER_READY: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n id: z.string(),\n }),\n BACKGROUND_WORKER_MESSAGE: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n data: BackgroundWorkerServerMessages,\n }),\n};\n\nexport const BackgroundWorkerClientMessages = z.discriminatedUnion(\"type\", [\n z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n type: z.literal(\"TASK_RUN_COMPLETED\"),\n completion: TaskRunExecutionResult,\n execution: TaskRunExecution,\n }),\n z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n type: z.literal(\"TASK_HEARTBEAT\"),\n id: z.string(),\n }),\n]);\n\nexport type BackgroundWorkerClientMessages = z.infer<typeof BackgroundWorkerClientMessages>;\n\nexport const BackgroundWorkerProperties = z.object({\n id: z.string(),\n version: z.string(),\n contentHash: z.string(),\n});\n\nexport type BackgroundWorkerProperties = z.infer<typeof BackgroundWorkerProperties>;\n\nexport const clientWebsocketMessages = {\n READY_FOR_TASKS: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n }),\n BACKGROUND_WORKER_DEPRECATED: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n }),\n BACKGROUND_WORKER_MESSAGE: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n data: BackgroundWorkerClientMessages,\n }),\n};\n\nexport const workerToChildMessages = {\n EXECUTE_TASK_RUN: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n execution: TaskRunExecution,\n traceContext: z.record(z.unknown()),\n metadata: BackgroundWorkerProperties,\n }),\n TASK_RUN_COMPLETED_NOTIFICATION: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n completion: TaskRunExecutionResult,\n execution: TaskRunExecution,\n }),\n CLEANUP: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n flush: z.boolean().default(false),\n kill: z.boolean().default(true),\n }),\n};\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 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 type RateLimitOptions = z.infer<typeof RateLimitOptions>;\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 exportName: z.string(),\n packageVersion: z.string(),\n queue: QueueOptions.optional(),\n retry: RetryOptions.optional(),\n machine: Machine.partial().optional(),\n});\n\nexport type TaskMetadata = z.infer<typeof TaskMetadata>;\n\nexport const TaskMetadataWithFilePath = TaskMetadata.extend({\n filePath: z.string(),\n});\n\nexport type TaskMetadataWithFilePath = z.infer<typeof TaskMetadataWithFilePath>;\n\nexport const UncaughtExceptionMessage = z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n error: z.object({\n name: z.string(),\n message: z.string(),\n stack: z.string().optional(),\n }),\n origin: z.enum([\"uncaughtException\", \"unhandledRejection\"]),\n});\n\nexport const TaskMetadataFailedToParseData = z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n tasks: z.unknown(),\n zodIssues: z.custom<z.ZodIssue[]>((v) => {\n return Array.isArray(v) && v.every((issue) => typeof issue === \"object\" && \"message\" in issue);\n }),\n});\n\nexport const childToWorkerMessages = {\n TASK_RUN_COMPLETED: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n execution: TaskRunExecution,\n result: TaskRunExecutionResult,\n }),\n TASKS_READY: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n tasks: TaskMetadataWithFilePath.array(),\n }),\n TASKS_FAILED_TO_PARSE: TaskMetadataFailedToParseData,\n TASK_HEARTBEAT: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n id: z.string(),\n }),\n READY_TO_DISPOSE: z.undefined(),\n WAIT_FOR_DURATION: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n ms: z.number(),\n }),\n WAIT_FOR_TASK: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n id: z.string(),\n }),\n WAIT_FOR_BATCH: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n id: z.string(),\n runs: z.string().array(),\n }),\n UNCAUGHT_EXCEPTION: UncaughtExceptionMessage,\n};\n\nexport const ProdChildToWorkerMessages = {\n TASK_RUN_COMPLETED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n execution: TaskRunExecution,\n result: TaskRunExecutionResult,\n }),\n },\n TASKS_READY: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n tasks: TaskMetadataWithFilePath.array(),\n }),\n },\n TASKS_FAILED_TO_PARSE: {\n message: TaskMetadataFailedToParseData,\n },\n TASK_HEARTBEAT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n id: z.string(),\n }),\n },\n READY_TO_DISPOSE: {\n message: z.undefined(),\n },\n READY_FOR_CHECKPOINT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n },\n CANCEL_CHECKPOINT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n },\n WAIT_FOR_DURATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n ms: z.number(),\n now: z.number(),\n }),\n callback: z.object({\n willCheckpointAndRestore: z.boolean(),\n }),\n },\n WAIT_FOR_TASK: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n friendlyId: z.string(),\n }),\n },\n WAIT_FOR_BATCH: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n batchFriendlyId: z.string(),\n runFriendlyIds: z.string().array(),\n }),\n },\n UNCAUGHT_EXCEPTION: {\n message: UncaughtExceptionMessage,\n },\n};\n\nexport const ProdWorkerToChildMessages = {\n EXECUTE_TASK_RUN: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n execution: TaskRunExecution,\n traceContext: z.record(z.unknown()),\n metadata: BackgroundWorkerProperties,\n }),\n },\n TASK_RUN_COMPLETED_NOTIFICATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n completion: TaskRunExecutionResult,\n execution: TaskRunExecution,\n }),\n },\n CLEANUP: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n flush: z.boolean().default(false),\n kill: z.boolean().default(true),\n }),\n callback: z.void(),\n },\n WAIT_COMPLETED_NOTIFICATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n },\n};\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 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} as const;\n\nexport const TaskRunInternalError = z.object({\n type: z.literal(\"INTERNAL_ERROR\"),\n code: z.enum([\n \"COULD_NOT_FIND_EXECUTOR\",\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 ]),\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});\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 { z } from \"zod\";\nimport { RequireKeys } from \"../types\";\nimport { TaskRunExecution, TaskRunExecutionResult } from \"./common\";\nimport {\n BackgroundWorkerClientMessages,\n BackgroundWorkerServerMessages,\n ProdTaskRunExecution,\n ProdTaskRunExecutionPayload,\n RetryOptions,\n Machine,\n EnvironmentType,\n} from \"./messages\";\nimport { TaskResource } from \"./resources\";\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});\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\nexport const ProviderToPlatformMessages = {\n LOG: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n data: z.string(),\n }),\n },\n LOG_WITH_ACK: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n data: z.string(),\n }),\n callback: z.object({\n status: z.literal(\"ok\"),\n }),\n },\n};\n\nexport const PlatformToProviderMessages = {\n HEALTH: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n callback: z.object({\n status: z.literal(\"ok\"),\n }),\n },\n INDEX: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n imageTag: z.string(),\n shortCode: z.string(),\n apiKey: z.string(),\n apiUrl: z.string(),\n // identifiers\n envId: z.string(),\n envType: EnvironmentType,\n orgId: z.string(),\n projectId: z.string(),\n }),\n callback: z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(false),\n error: z.object({\n name: z.string(),\n message: z.string(),\n stack: z.string().optional(),\n }),\n }),\n z.object({\n success: z.literal(true),\n }),\n ]),\n },\n // TODO: this should be a shared queue message instead\n RESTORE: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n type: z.enum([\"DOCKER\", \"KUBERNETES\"]),\n location: z.string(),\n reason: z.string().optional(),\n imageRef: z.string(),\n machine: Machine,\n // identifiers\n checkpointId: z.string(),\n envId: z.string(),\n envType: EnvironmentType,\n orgId: z.string(),\n projectId: z.string(),\n runId: z.string(),\n }),\n },\n DELETE: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n name: z.string(),\n }),\n callback: z.object({\n message: z.string(),\n }),\n },\n GET: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n name: z.string(),\n }),\n },\n};\n\nexport const CoordinatorToPlatformMessages = {\n LOG: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n metadata: z.any(),\n text: z.string(),\n }),\n },\n CREATE_WORKER: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n projectRef: z.string(),\n envId: z.string(),\n deploymentId: z.string(),\n metadata: z.object({\n cliPackageVersion: z.string().optional(),\n contentHash: z.string(),\n packageVersion: z.string(),\n tasks: TaskResource.array(),\n }),\n }),\n callback: z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(false),\n }),\n z.object({\n success: z.literal(true),\n }),\n ]),\n },\n READY_FOR_EXECUTION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n runId: z.string(),\n totalCompletions: z.number(),\n }),\n callback: z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(false),\n }),\n z.object({\n success: z.literal(true),\n payload: ProdTaskRunExecutionPayload,\n }),\n ]),\n },\n READY_FOR_RESUME: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptFriendlyId: z.string(),\n type: WaitReason,\n }),\n },\n TASK_RUN_COMPLETED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n execution: ProdTaskRunExecution,\n completion: TaskRunExecutionResult,\n checkpoint: z\n .object({\n docker: z.boolean(),\n location: z.string(),\n })\n .optional(),\n }),\n },\n TASK_HEARTBEAT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptFriendlyId: z.string(),\n }),\n },\n CHECKPOINT_CREATED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptFriendlyId: z.string(),\n docker: z.boolean(),\n location: z.string(),\n reason: z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"WAIT_FOR_DURATION\"),\n ms: z.number(),\n now: z.number(),\n }),\n z.object({\n type: z.literal(\"WAIT_FOR_BATCH\"),\n batchFriendlyId: z.string(),\n runFriendlyIds: z.string().array(),\n }),\n z.object({\n type: z.literal(\"WAIT_FOR_TASK\"),\n friendlyId: z.string(),\n }),\n z.object({\n type: z.literal(\"RETRYING_AFTER_FAILURE\"),\n attemptNumber: z.number(),\n }),\n ]),\n }),\n },\n INDEXING_FAILED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n deploymentId: z.string(),\n error: z.object({\n name: z.string(),\n message: z.string(),\n stack: z.string().optional(),\n }),\n }),\n },\n};\n\nexport const PlatformToCoordinatorMessages = {\n RESUME_AFTER_DEPENDENCY: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n runId: z.string(),\n attemptId: z.string(),\n attemptFriendlyId: z.string(),\n completions: TaskRunExecutionResult.array(),\n executions: TaskRunExecution.array(),\n }),\n },\n RESUME_AFTER_DURATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptId: z.string(),\n attemptFriendlyId: z.string(),\n }),\n },\n REQUEST_ATTEMPT_CANCELLATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptId: z.string(),\n attemptFriendlyId: z.string(),\n }),\n },\n READY_FOR_RETRY: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n runId: z.string(),\n }),\n },\n};\n\nexport const ClientToSharedQueueMessages = {\n READY_FOR_TASKS: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n }),\n },\n BACKGROUND_WORKER_DEPRECATED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n }),\n },\n BACKGROUND_WORKER_MESSAGE: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n data: BackgroundWorkerClientMessages,\n }),\n },\n};\n\nexport const SharedQueueToClientMessages = {\n SERVER_READY: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n id: z.string(),\n }),\n },\n BACKGROUND_WORKER_MESSAGE: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n backgroundWorkerId: z.string(),\n data: BackgroundWorkerServerMessages,\n }),\n },\n};\n\nexport const ProdWorkerToCoordinatorMessages = {\n LOG: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n text: z.string(),\n }),\n callback: z.void(),\n },\n INDEX_TASKS: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n deploymentId: z.string(),\n tasks: TaskResource.array(),\n packageVersion: z.string(),\n }),\n callback: z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(false),\n }),\n z.object({\n success: z.literal(true),\n }),\n ]),\n },\n READY_FOR_EXECUTION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n runId: z.string(),\n totalCompletions: z.number(),\n }),\n },\n READY_FOR_RESUME: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptFriendlyId: z.string(),\n type: WaitReason,\n }),\n },\n READY_FOR_CHECKPOINT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n },\n CANCEL_CHECKPOINT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n },\n TASK_HEARTBEAT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptFriendlyId: z.string(),\n }),\n },\n TASK_RUN_COMPLETED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n execution: ProdTaskRunExecution,\n completion: TaskRunExecutionResult,\n }),\n callback: z.object({\n willCheckpointAndRestore: z.boolean(),\n shouldExit: z.boolean(),\n }),\n },\n WAIT_FOR_DURATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n ms: z.number(),\n now: z.number(),\n attemptFriendlyId: z.string(),\n }),\n callback: z.object({\n willCheckpointAndRestore: z.boolean(),\n }),\n },\n WAIT_FOR_TASK: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n friendlyId: z.string(),\n // This is the attempt that is waiting\n attemptFriendlyId: z.string(),\n }),\n callback: z.object({\n willCheckpointAndRestore: z.boolean(),\n }),\n },\n WAIT_FOR_BATCH: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n batchFriendlyId: z.string(),\n runFriendlyIds: z.string().array(),\n // This is the attempt that is waiting\n attemptFriendlyId: z.string(),\n }),\n callback: z.object({\n willCheckpointAndRestore: z.boolean(),\n }),\n },\n INDEXING_FAILED: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n deploymentId: z.string(),\n error: z.object({\n name: z.string(),\n message: z.string(),\n stack: z.string().optional(),\n }),\n }),\n },\n};\n\nexport const CoordinatorToProdWorkerMessages = {\n RESUME_AFTER_DEPENDENCY: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptId: z.string(),\n completions: TaskRunExecutionResult.array(),\n executions: TaskRunExecution.array(),\n }),\n },\n RESUME_AFTER_DURATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptId: z.string(),\n }),\n },\n EXECUTE_TASK_RUN: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n executionPayload: ProdTaskRunExecutionPayload,\n }),\n },\n REQUEST_ATTEMPT_CANCELLATION: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n attemptId: z.string(),\n }),\n },\n REQUEST_EXIT: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n }),\n },\n READY_FOR_RETRY: {\n message: z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n runId: z.string(),\n }),\n },\n};\n\nexport const ProdWorkerSocketData = z.object({\n contentHash: z.string(),\n projectRef: z.string(),\n envId: z.string(),\n runId: z.string(),\n attemptFriendlyId: z.string().optional(),\n podName: z.string(),\n deploymentId: z.string(),\n deploymentVersion: z.string(),\n});\n","import { z } from \"zod\";\n\nexport const PRIMARY_VARIANT = \"primary\";\n\nconst Variant = z.enum([PRIMARY_VARIANT]);\nexport type Variant = z.infer<typeof Variant>;\n\nconst AccessoryItem = z.object({\n text: z.string(),\n variant: z.string().optional(),\n url: z.string().optional(),\n});\n\nconst Accessory = z.object({\n items: z.array(AccessoryItem),\n style: z.enum([\"codepath\"]).optional(),\n});\n\nexport type Accessory = z.infer<typeof Accessory>;\n\nexport const TaskEventStyle = z\n .object({\n icon: z.string().optional(),\n variant: Variant.optional(),\n accessory: Accessory.optional(),\n })\n .default({\n icon: undefined,\n variant: undefined,\n });\n\nexport type TaskEventStyle = z.infer<typeof TaskEventStyle>;\n","import { z } from \"zod\";\nimport { RetryOptions } from \"./messages\";\nimport { EventFilter } from \"./eventFilter\";\nimport { Prettify } from \"../types\";\n\nexport const FetchRetryHeadersStrategy = z.object({\n /** The `headers` strategy retries the request using info from the response headers. */\n strategy: z.literal(\"headers\"),\n /** The header to use to determine the maximum number of times to retry the request. */\n limitHeader: z.string(),\n /** The header to use to determine the number of remaining retries. */\n remainingHeader: z.string(),\n /** The header to use to determine the time when the number of remaining retries will be reset. */\n resetHeader: z.string(),\n /** The event filter to use to determine if the request should be retried. */\n bodyFilter: EventFilter.optional(),\n\n /** The format of the `resetHeader` value. */\n resetFormat: z\n .enum([\n \"unix_timestamp\",\n \"unix_timestamp_in_ms\",\n \"iso_8601\",\n \"iso_8601_duration_openai_variant\",\n ])\n .default(\"unix_timestamp\")\n .optional(),\n});\n\nexport type FetchRetryHeadersStrategy = z.infer<typeof FetchRetryHeadersStrategy>;\n\nexport const FetchRetryBackoffStrategy = RetryOptions.extend({\n /** The `backoff` strategy retries the request with an exponential backoff. */\n strategy: z.literal(\"backoff\"),\n /** The event filter to use to determine if the request should be retried. */\n bodyFilter: EventFilter.optional(),\n});\n\n/** The `backoff` strategy retries the request with an exponential backoff. */\nexport type FetchRetryBackoffStrategy = z.infer<typeof FetchRetryBackoffStrategy>;\n\nexport const FetchRetryStrategy = z.discriminatedUnion(\"strategy\", [\n FetchRetryHeadersStrategy,\n FetchRetryBackoffStrategy,\n]);\n\nexport type FetchRetryStrategy = z.infer<typeof FetchRetryStrategy>;\n\nexport const FetchRetryByStatusOptions = z.record(z.string(), FetchRetryStrategy);\n\n/** An object where the key is a status code pattern and the value is a retrying strategy. Supported patterns are:\n - Specific status codes: 429\n - Ranges: 500-599\n - Wildcards: 2xx, 3xx, 4xx, 5xx \n */\nexport type FetchRetryByStatusOptions = Prettify<z.infer<typeof FetchRetryByStatusOptions>>;\n\nexport const FetchTimeoutOptions = z.object({\n /** The maximum time to wait for the request to complete. */\n durationInMs: z.number().optional(),\n retry: RetryOptions.optional(),\n});\n\nexport type FetchTimeoutOptions = z.infer<typeof FetchTimeoutOptions>;\n\nexport const FetchRetryOptions = z.object({\n /** The retrying strategy for specific status codes. */\n byStatus: FetchRetryByStatusOptions.optional(),\n /** The timeout options for the request. */\n timeout: RetryOptions.optional(),\n /**\n * The retrying strategy for connection errors.\n */\n connectionError: RetryOptions.optional(),\n});\n\nexport type FetchRetryOptions = Prettify<z.infer<typeof FetchRetryOptions>>;\n","import { z } from \"zod\";\n\nexport const stringPatternMatchers = [\n z.object({\n $endsWith: z.string(),\n }),\n z.object({\n $startsWith: z.string(),\n }),\n z.object({\n $ignoreCaseEquals: z.string(),\n }),\n] as const;\n\nconst EventMatcher = z.union([\n /** Match against a string */\n z.array(z.string()),\n /** Match against a number */\n z.array(z.number()),\n /** Match against a boolean */\n z.array(z.boolean()),\n z.array(\n z.union([\n ...stringPatternMatchers,\n z.object({\n $exists: z.boolean(),\n }),\n z.object({\n $isNull: z.boolean(),\n }),\n z.object({\n $anythingBut: z.union([z.string(), z.number(), z.boolean()]),\n }),\n z.object({\n $anythingBut: z.union([z.array(z.string()), z.array(z.number()), z.array(z.boolean())]),\n }),\n z.object({\n $gt: z.number(),\n }),\n z.object({\n $lt: z.number(),\n }),\n z.object({\n $gte: z.number(),\n }),\n z.object({\n $lte: z.number(),\n }),\n z.object({\n $between: z.tuple([z.number(), z.number()]),\n }),\n z.object({\n $includes: z.union([z.string(), z.number(), z.boolean()]),\n }),\n z.object({\n $not: z.union([z.string(), z.number(), z.boolean()]),\n }),\n ])\n ),\n]);\n\ntype EventMatcher = z.infer<typeof EventMatcher>;\n\n/** A filter for matching against data */\nexport type EventFilter = { [key: string]: EventMatcher | EventFilter };\n\nexport const EventFilter: z.ZodType<EventFilter> = z.lazy(() =>\n z.record(z.union([EventMatcher, EventFilter]))\n);\n","import { z } from \"zod\";\n\nexport const ExceptionEventProperties = z.object({\n type: z.string().optional(),\n message: z.string().optional(),\n stacktrace: z.string().optional(),\n});\n\nexport type ExceptionEventProperties = z.infer<typeof ExceptionEventProperties>;\n\nexport const ExceptionSpanEvent = z.object({\n name: z.literal(\"exception\"),\n time: z.coerce.date(),\n properties: z.object({\n exception: ExceptionEventProperties,\n }),\n});\n\nexport type ExceptionSpanEvent = z.infer<typeof ExceptionSpanEvent>;\n\nexport const CancellationSpanEvent = z.object({\n name: z.literal(\"cancellation\"),\n time: z.coerce.date(),\n properties: z.object({\n reason: z.string(),\n }),\n});\n\nexport type CancellationSpanEvent = z.infer<typeof CancellationSpanEvent>;\n\nexport const OtherSpanEvent = z.object({\n name: z.string(),\n time: z.coerce.date(),\n properties: z.record(z.unknown()),\n});\n\nexport type OtherSpanEvent = z.infer<typeof OtherSpanEvent>;\n\nexport const SpanEvent = z.union([ExceptionSpanEvent, CancellationSpanEvent, OtherSpanEvent]);\n\nexport type SpanEvent = z.infer<typeof SpanEvent>;\n\nexport const SpanEvents = z.array(SpanEvent);\n\nexport type SpanEvents = z.infer<typeof SpanEvents>;\n\nexport function isExceptionSpanEvent(event: SpanEvent): event is ExceptionSpanEvent {\n return event.name === \"exception\";\n}\n\nexport function isCancellationSpanEvent(event: SpanEvent): event is CancellationSpanEvent {\n return event.name === \"cancellation\";\n}\n\nexport const SpanMessagingEvent = z.object({\n system: z.string().optional(),\n client_id: z.string().optional(),\n operation: z.enum([\"publish\", \"create\", \"receive\", \"deliver\"]),\n message: z.any(),\n destination: z.string().optional(),\n});\n\nexport type SpanMessagingEvent = z.infer<typeof SpanMessagingEvent>;\n","import { context, propagation } from \"@opentelemetry/api\";\nimport { ZodFetchOptions, zodfetch } from \"../../zodfetch\";\nimport { taskContextManager } from \"../tasks/taskContextManager\";\nimport { SafeAsyncLocalStorage } from \"../utils/safeAsyncLocalStorage\";\nimport { getEnvVar } from \"../utils/getEnv\";\nimport {\n TriggerTaskRequestBody,\n TriggerTaskResponse,\n BatchTriggerTaskRequestBody,\n BatchTriggerTaskResponse,\n CreateUploadPayloadUrlResponseBody,\n} from \"../schemas\";\n\nexport type TriggerOptions = {\n spanParentAsLink?: boolean;\n};\n\nconst zodFetchOptions: ZodFetchOptions = {\n retry: {\n maxAttempts: 5,\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 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 #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 (taskContextManager.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\ntype ApiClientContext = {\n baseURL: string;\n accessToken: string;\n};\n\nexport class ApiClientManager {\n private _storage: SafeAsyncLocalStorage<ApiClientContext> =\n new SafeAsyncLocalStorage<ApiClientContext>();\n\n get baseURL(): string | undefined {\n const store = this.#getStore();\n return store?.baseURL ?? getEnvVar(\"TRIGGER_API_URL\") ?? \"https://api.trigger.dev\";\n }\n\n get accessToken(): string | undefined {\n const store = this.#getStore();\n return store?.accessToken ?? 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 runWith<R extends (...args: any[]) => Promise<any>>(\n context: ApiClientContext,\n fn: R\n ): Promise<ReturnType<R>> {\n return this._storage.runWith(context, fn);\n }\n\n #getStore(): ApiClientContext | undefined {\n return this._storage.getStore();\n }\n}\n\nexport const apiClientManager = new ApiClientManager();\n","import { z } from \"zod\";\nimport { RetryOptions, calculateNextRetryDelay, defaultRetryOptions } from \"./v3\";\n\nexport type ApiResult<TSuccessResult> =\n | { ok: true; data: TSuccessResult }\n | {\n ok: false;\n error: string;\n };\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<ApiResult<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<ApiResult<TResponseBody>> {\n try {\n const response = await fetch(url, requestInit);\n\n if ((!requestInit || requestInit.method === \"GET\") && response.status === 404) {\n return {\n ok: false,\n error: `404: ${response.statusText}`,\n };\n }\n\n if (response.status >= 400 && response.status < 500 && response.status !== 429) {\n const body = await response.json();\n if (!body.error) {\n return { ok: false, error: \"Something went wrong\" };\n }\n\n return { ok: false, error: body.error };\n }\n\n // Retryable errors\n if (response.status === 429 || response.status >= 500) {\n if (!options?.retry) {\n return {\n ok: false,\n error: `Failed to fetch ${url}, got status code ${response.status}`,\n };\n }\n\n const retry = { ...defaultRetryOptions, ...options.retry };\n\n if (attempt > retry.maxAttempts) {\n return {\n ok: false,\n error: `Failed to fetch ${url}, got status code ${response.status}`,\n };\n }\n\n const delay = calculateNextRetryDelay(retry, attempt);\n\n await new Promise((resolve) => setTimeout(resolve, delay));\n\n return await _doZodFetch(schema, url, requestInit, options, attempt + 1);\n }\n\n if (response.status !== 200) {\n return {\n ok: false,\n error: `Failed to fetch ${url}, got status code ${response.status}`,\n };\n }\n\n const jsonBody = await response.json();\n const parsedResult = schema.safeParse(jsonBody);\n\n if (parsedResult.success) {\n return { ok: true, data: parsedResult.data };\n }\n\n if (\"error\" in jsonBody) {\n return {\n ok: false,\n error: typeof jsonBody.error === \"string\" ? jsonBody.error : JSON.stringify(jsonBody.error),\n };\n }\n\n return { ok: false, error: parsedResult.error.message };\n } catch (error) {\n if (options?.retry) {\n const retry = { ...defaultRetryOptions, ...options.retry };\n\n if (attempt > retry.maxAttempts) {\n return {\n ok: false,\n error: error instanceof Error ? error.message : JSON.stringify(error),\n };\n }\n\n const delay = calculateNextRetryDelay(retry, attempt);\n\n await new Promise((resolve) => setTimeout(resolve, delay));\n\n return await _doZodFetch(schema, url, requestInit, options, attempt + 1);\n }\n\n return {\n ok: false,\n error: error instanceof Error ? error.message : JSON.stringify(error),\n };\n }\n}\n","import { Attributes } from \"@opentelemetry/api\";\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) {\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}.` : \"\"}${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 result[`${newPrefix}.[${i}]`] = value[i];\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 }\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(obj: Attributes): Record<string, unknown> {\n if (typeof obj !== \"object\" || obj === null || Array.isArray(obj)) {\n return obj;\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 // Splitting array indices as separate parts\n if (detectIsArrayIndex(part)) {\n acc.push(part);\n } else {\n acc.push(...part.split(/\\.\\[(.*?)\\]/).filter(Boolean));\n }\n return acc;\n }, [] as string[]);\n\n let current: Record<string, unknown> = result;\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n const isArray = detectIsArrayIndex(part);\n const cleanPart = isArray ? part.substring(1, part.length - 1) : part;\n const nextIsArray = detectIsArrayIndex(parts[i + 1]);\n if (!current[cleanPart]) {\n current[cleanPart] = nextIsArray ? [] : {};\n }\n current = current[cleanPart] as Record<string, unknown>;\n }\n const lastPart = parts[parts.length - 1];\n const cleanLastPart = detectIsArrayIndex(lastPart)\n ? parseInt(lastPart.substring(1, lastPart.length - 1), 10)\n : lastPart;\n current[cleanLastPart] = value;\n }\n\n return result;\n}\n\nfunction detectIsArrayIndex(key: string): boolean {\n const match = key.match(/^\\[(\\d+)\\]$/);\n\n if (match) {\n return true;\n }\n\n return false;\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","import { AsyncLocalStorage } from \"node:async_hooks\";\n\nexport class SafeAsyncLocalStorage<T> {\n private storage: AsyncLocalStorage<T>;\n\n constructor() {\n this.storage = new AsyncLocalStorage<T>();\n }\n\n runWith<R extends (...args: any[]) => Promise<any>>(context: T, fn: R): Promise<ReturnType<R>> {\n return this.storage.run(context, fn);\n }\n\n getStore(): T | undefined {\n return this.storage.getStore();\n }\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};\n","import { Attributes, Context } from \"@opentelemetry/api\";\nimport { TaskRunContext, type BackgroundWorkerProperties } from \"../schemas\";\nimport { flattenAttributes } from \"../utils/flattenAttributes\";\nimport { SafeAsyncLocalStorage } from \"../utils/safeAsyncLocalStorage\";\n\ntype TaskContext = {\n ctx: TaskRunContext;\n worker: BackgroundWorkerProperties;\n};\n\nexport class TaskContextManager {\n private _storage: SafeAsyncLocalStorage<TaskContext> = new SafeAsyncLocalStorage<TaskContext>();\n\n get isInsideTask(): boolean {\n return this.#getStore() !== undefined;\n }\n\n get ctx(): TaskRunContext | undefined {\n const store = this.#getStore();\n return store?.ctx;\n }\n\n get worker(): BackgroundWorkerProperties | undefined {\n const store = this.#getStore();\n return store?.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 };\n }\n\n return {};\n }\n\n runWith<R extends (...args: any[]) => Promise<any>>(\n context: TaskContext,\n fn: R\n ): Promise<ReturnType<R>> {\n return this._storage.runWith(context, fn);\n }\n\n #getStore(): TaskContext | undefined {\n return this._storage.getStore();\n }\n}\n\nexport const taskContextManager = new TaskContextManager();\n\nimport { LogRecord, LogRecordProcessor } from \"@opentelemetry/sdk-logs\";\nimport { Span, SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\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 (taskContextManager.ctx) {\n span.setAttributes(\n flattenAttributes(\n {\n [SemanticInternalAttributes.ATTEMPT_ID]: taskContextManager.ctx.attempt.id,\n [SemanticInternalAttributes.ATTEMPT_NUMBER]: taskContextManager.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 (taskContextManager.ctx) {\n logRecord.setAttributes(\n flattenAttributes(\n {\n [SemanticInternalAttributes.ATTEMPT_ID]: taskContextManager.ctx.attempt.id,\n [SemanticInternalAttributes.ATTEMPT_NUMBER]: taskContextManager.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 { StructuredLogger } from \"./zodNamespace\";\n\nexport class ZodSchemaParsedError extends Error {\n constructor(\n public error: z.ZodError,\n public payload: unknown\n ) {\n super(error.message);\n }\n}\n\nexport type ZodMessageValueSchema<TDiscriminatedUnion extends z.ZodDiscriminatedUnion<any, any>> =\n | z.ZodFirstPartySchemaTypes\n | TDiscriminatedUnion;\n\nexport interface ZodMessageCatalogSchema {\n [key: string]: ZodMessageValueSchema<any>;\n}\n\nexport type ZodMessageHandlers<TCatalogSchema extends ZodMessageCatalogSchema> = Partial<{\n [K in keyof TCatalogSchema]: (payload: z.infer<TCatalogSchema[K]>) => Promise<any>;\n}>;\n\nexport type ZodMessageHandlerOptions<TMessageCatalog extends ZodMessageCatalogSchema> = {\n schema: TMessageCatalog;\n messages?: ZodMessageHandlers<TMessageCatalog>;\n};\n\nexport type MessageFromSchema<\n K extends keyof TMessageCatalog,\n TMessageCatalog extends ZodMessageCatalogSchema,\n> = {\n type: K;\n payload: z.input<TMessageCatalog[K]>;\n};\n\nexport type MessageFromCatalog<TMessageCatalog extends ZodMessageCatalogSchema> = {\n [K in keyof TMessageCatalog]: MessageFromSchema<K, TMessageCatalog>;\n}[keyof TMessageCatalog];\n\nexport const ZodMessageSchema = z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n type: z.string(),\n payload: z.unknown(),\n});\n\nexport interface EventEmitterLike {\n on(eventName: string | symbol, listener: (...args: any[]) => void): this;\n}\n\nexport class ZodMessageHandler<TMessageCatalog extends ZodMessageCatalogSchema> {\n #schema: TMessageCatalog;\n #handlers: ZodMessageHandlers<TMessageCatalog> | undefined;\n\n constructor(options: ZodMessageHandlerOptions<TMessageCatalog>) {\n this.#schema = options.schema;\n this.#handlers = options.messages;\n }\n\n public async handleMessage(message: unknown) {\n const parsedMessage = this.parseMessage(message);\n\n if (!this.#handlers) {\n throw new Error(\"No handlers provided\");\n }\n\n const handler = this.#handlers[parsedMessage.type];\n\n if (!handler) {\n console.error(`No handler for message type: ${String(parsedMessage.type)}`);\n return;\n }\n\n const ack = await handler(parsedMessage.payload);\n\n return ack;\n }\n\n public parseMessage(message: unknown): MessageFromCatalog<TMessageCatalog> {\n const parsedMessage = ZodMessageSchema.safeParse(message);\n\n if (!parsedMessage.success) {\n throw new Error(`Failed to parse message: ${JSON.stringify(parsedMessage.error)}`);\n }\n\n const schema = this.#schema[parsedMessage.data.type];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${parsedMessage.data.type}`);\n }\n\n const parsedPayload = schema.safeParse(parsedMessage.data.payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n return {\n type: parsedMessage.data.type,\n payload: parsedPayload.data,\n };\n }\n\n public registerHandlers(emitter: EventEmitterLike, logger?: StructuredLogger) {\n const log = logger ?? console;\n\n if (!this.#handlers) {\n log.info(\"No handlers provided\");\n return;\n }\n\n for (const eventName of Object.keys(this.#schema)) {\n emitter.on(eventName, async (message: any, callback?: any): Promise<void> => {\n log.info(`handling ${eventName}`, {\n payload: message,\n hasCallback: !!callback,\n });\n\n let ack;\n\n // FIXME: this only works if the message doesn't have genuine payload prop\n if (\"payload\" in message) {\n ack = await this.handleMessage({ type: eventName, ...message });\n } else {\n // Handle messages not sent by ZodMessageSender\n const { version, ...payload } = message;\n ack = await this.handleMessage({ type: eventName, version, payload });\n }\n\n if (callback && typeof callback === \"function\") {\n callback(ack);\n }\n });\n }\n }\n}\n\ntype ZodMessageSenderCallback<TMessageCatalog extends ZodMessageCatalogSchema> = (message: {\n type: keyof TMessageCatalog;\n payload: z.infer<TMessageCatalog[keyof TMessageCatalog]>;\n version: \"v1\";\n}) => Promise<void>;\n\nexport type ZodMessageSenderOptions<TMessageCatalog extends ZodMessageCatalogSchema> = {\n schema: TMessageCatalog;\n sender: ZodMessageSenderCallback<TMessageCatalog>;\n};\n\nexport class ZodMessageSender<TMessageCatalog extends ZodMessageCatalogSchema> {\n #schema: TMessageCatalog;\n #sender: ZodMessageSenderCallback<TMessageCatalog>;\n\n constructor(options: ZodMessageSenderOptions<TMessageCatalog>) {\n this.#schema = options.schema;\n this.#sender = options.sender;\n }\n\n public async send<K extends keyof TMessageCatalog>(\n type: K,\n payload: z.input<TMessageCatalog[K]>\n ) {\n const schema = this.#schema[type];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${type as string}`);\n }\n\n const parsedPayload = schema.safeParse(payload);\n\n if (!parsedPayload.success) {\n throw new ZodSchemaParsedError(parsedPayload.error, payload);\n }\n\n await this.#sender({ type, payload, version: \"v1\" });\n }\n\n public async forwardMessage(message: unknown) {\n const parsedMessage = ZodMessageSchema.safeParse(message);\n\n if (!parsedMessage.success) {\n throw new Error(`Failed to parse message: ${JSON.stringify(parsedMessage.error)}`);\n }\n\n const schema = this.#schema[parsedMessage.data.type];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${parsedMessage.data.type}`);\n }\n\n const parsedPayload = schema.safeParse(parsedMessage.data.payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n await this.#sender({\n type: parsedMessage.data.type,\n payload: parsedPayload.data,\n version: \"v1\",\n });\n }\n}\n\nexport type MessageCatalogToSocketIoEvents<TCatalog extends ZodMessageCatalogSchema> = {\n [K in keyof TCatalog]: (message: z.infer<TCatalog[K]>) => void;\n};\n","import { io, Socket } from \"socket.io-client\";\nimport { z } from \"zod\";\nimport { EventEmitterLike, ZodMessageValueSchema } from \"./zodMessageHandler\";\nimport { LogLevel, SimpleStructuredLogger, StructuredLogger } from \"./zodNamespace\";\n\nexport interface ZodSocketMessageCatalogSchema {\n [key: string]:\n | {\n message: ZodMessageValueSchema<any>;\n }\n | {\n message: ZodMessageValueSchema<any>;\n callback?: ZodMessageValueSchema<any>;\n };\n}\n\nexport type ZodMessageCatalogToSocketIoEvents<TCatalog extends ZodSocketMessageCatalogSchema> = {\n [K in keyof TCatalog]: SocketMessageHasCallback<TCatalog, K> extends true\n ? (\n message: z.infer<GetSocketMessageSchema<TCatalog, K>>,\n callback: (ack: z.infer<GetSocketCallbackSchema<TCatalog, K>>) => void\n ) => void\n : (message: z.infer<GetSocketMessageSchema<TCatalog, K>>) => void;\n};\n\nexport type GetSocketMessageSchema<\n TRPCCatalog extends ZodSocketMessageCatalogSchema,\n TMessageType extends keyof TRPCCatalog,\n> = TRPCCatalog[TMessageType][\"message\"];\n\nexport type InferSocketMessageSchema<\n TRPCCatalog extends ZodSocketMessageCatalogSchema,\n TMessageType extends keyof TRPCCatalog,\n> = z.infer<GetSocketMessageSchema<TRPCCatalog, TMessageType>>;\n\nexport type GetSocketCallbackSchema<\n TRPCCatalog extends ZodSocketMessageCatalogSchema,\n TMessageType extends keyof TRPCCatalog,\n> = TRPCCatalog[TMessageType] extends { callback: any }\n ? TRPCCatalog[TMessageType][\"callback\"]\n : never;\n\nexport type InferSocketCallbackSchema<\n TRPCCatalog extends ZodSocketMessageCatalogSchema,\n TMessageType extends keyof TRPCCatalog,\n> = z.infer<GetSocketCallbackSchema<TRPCCatalog, TMessageType>>;\n\nexport type SocketMessageHasCallback<\n TRPCCatalog extends ZodSocketMessageCatalogSchema,\n TMessageType extends keyof TRPCCatalog,\n> = GetSocketCallbackSchema<TRPCCatalog, TMessageType> extends never ? false : true;\n\nexport type ZodSocketMessageHandlers<TCatalogSchema extends ZodSocketMessageCatalogSchema> =\n Partial<{\n [K in keyof TCatalogSchema]: (\n payload: z.infer<GetSocketMessageSchema<TCatalogSchema, K>>\n ) => Promise<\n SocketMessageHasCallback<TCatalogSchema, K> extends true\n ? z.input<GetSocketCallbackSchema<TCatalogSchema, K>>\n : void\n >;\n }>;\n\nexport type ZodSocketMessageHandlerOptions<TMessageCatalog extends ZodSocketMessageCatalogSchema> =\n {\n schema: TMessageCatalog;\n handlers?: ZodSocketMessageHandlers<TMessageCatalog>;\n };\n\ntype MessageFromSocketSchema<\n K extends keyof TMessageCatalog,\n TMessageCatalog extends ZodSocketMessageCatalogSchema,\n> = {\n type: K;\n payload: z.input<GetSocketMessageSchema<TMessageCatalog, K>>;\n};\n\nexport type MessagesFromSocketCatalog<TMessageCatalog extends ZodSocketMessageCatalogSchema> = {\n [K in keyof TMessageCatalog]: MessageFromSocketSchema<K, TMessageCatalog>;\n}[keyof TMessageCatalog];\n\nconst messageSchema = z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n type: z.string(),\n payload: z.unknown(),\n});\n\nexport class ZodSocketMessageHandler<TRPCCatalog extends ZodSocketMessageCatalogSchema> {\n #schema: TRPCCatalog;\n #handlers: ZodSocketMessageHandlers<TRPCCatalog> | undefined;\n\n constructor(options: ZodSocketMessageHandlerOptions<TRPCCatalog>) {\n this.#schema = options.schema;\n this.#handlers = options.handlers;\n }\n\n public async handleMessage(message: unknown) {\n const parsedMessage = this.parseMessage(message);\n\n if (!this.#handlers) {\n throw new Error(\"No handlers provided\");\n }\n\n const handler = this.#handlers[parsedMessage.type];\n\n if (!handler) {\n console.error(`No handler for message type: ${String(parsedMessage.type)}`);\n return;\n }\n\n const ack = await handler(parsedMessage.payload);\n\n return ack;\n }\n\n public parseMessage(message: unknown): MessagesFromSocketCatalog<TRPCCatalog> {\n const parsedMessage = messageSchema.safeParse(message);\n\n if (!parsedMessage.success) {\n throw new Error(`Failed to parse message: ${JSON.stringify(parsedMessage.error)}`);\n }\n\n const schema = this.#schema[parsedMessage.data.type][\"message\"];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${parsedMessage.data.type}`);\n }\n\n const parsedPayload = schema.safeParse(parsedMessage.data.payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n return {\n type: parsedMessage.data.type,\n payload: parsedPayload.data,\n };\n }\n\n public registerHandlers(emitter: EventEmitterLike, logger?: StructuredLogger) {\n const log = logger ?? console;\n\n if (!this.#handlers) {\n log.info(\"No handlers provided\");\n return;\n }\n\n for (const eventName of Object.keys(this.#handlers)) {\n emitter.on(eventName, async (message: any, callback?: any): Promise<void> => {\n log.info(`handling ${eventName}`, {\n payload: message,\n hasCallback: !!callback,\n });\n\n let ack;\n\n try {\n // FIXME: this only works if the message doesn't have genuine payload prop\n if (\"payload\" in message) {\n ack = await this.handleMessage({ type: eventName, ...message });\n } else {\n // Handle messages not sent by ZodMessageSender\n const { version, ...payload } = message;\n ack = await this.handleMessage({ type: eventName, version, payload });\n }\n } catch (error) {\n log.error(\"Error while handling message\", { error });\n return;\n }\n\n if (callback && typeof callback === \"function\") {\n callback(ack);\n }\n });\n }\n }\n}\n\nexport type ZodSocketMessageSenderOptions<TMessageCatalog extends ZodSocketMessageCatalogSchema> = {\n schema: TMessageCatalog;\n socket: ZodSocket<any, TMessageCatalog>;\n};\n\nexport type GetSocketMessagesWithCallback<TMessageCatalog extends ZodSocketMessageCatalogSchema> = {\n [K in keyof TMessageCatalog]: SocketMessageHasCallback<TMessageCatalog, K> extends true\n ? K\n : never;\n}[keyof TMessageCatalog];\n\nexport type GetSocketMessagesWithoutCallback<\n TMessageCatalog extends ZodSocketMessageCatalogSchema,\n> = {\n [K in keyof TMessageCatalog]: SocketMessageHasCallback<TMessageCatalog, K> extends true\n ? never\n : K;\n}[keyof TMessageCatalog];\n\nexport class ZodSocketMessageSender<TMessageCatalog extends ZodSocketMessageCatalogSchema> {\n #schema: TMessageCatalog;\n #socket: ZodSocket<any, TMessageCatalog>;\n\n constructor(options: ZodSocketMessageSenderOptions<TMessageCatalog>) {\n this.#schema = options.schema;\n this.#socket = options.socket;\n }\n\n public send<K extends GetSocketMessagesWithoutCallback<TMessageCatalog>>(\n type: K,\n payload: z.input<GetSocketMessageSchema<TMessageCatalog, K>>\n ): void {\n const schema = this.#schema[type][\"message\"];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${type as string}`);\n }\n\n const parsedPayload = schema.safeParse(payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n // @ts-expect-error\n this.#socket.emit(type, { payload, version: \"v1\" });\n\n return;\n }\n\n public async sendWithAck<K extends GetSocketMessagesWithCallback<TMessageCatalog>>(\n type: K,\n payload: z.input<GetSocketMessageSchema<TMessageCatalog, K>>\n ): Promise<z.infer<GetSocketCallbackSchema<TMessageCatalog, K>>> {\n const schema = this.#schema[type][\"message\"];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${type as string}`);\n }\n\n const parsedPayload = schema.safeParse(payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n // @ts-expect-error\n const callbackResult = await this.#socket.emitWithAck(type, { payload, version: \"v1\" });\n\n return callbackResult;\n }\n}\n\nexport type ZodSocket<\n TListenEvents extends ZodSocketMessageCatalogSchema,\n TEmitEvents extends ZodSocketMessageCatalogSchema,\n> = Socket<\n ZodMessageCatalogToSocketIoEvents<TListenEvents>,\n ZodMessageCatalogToSocketIoEvents<TEmitEvents>\n>;\n\ninterface ZodSocketConnectionOptions<\n TClientMessages extends ZodSocketMessageCatalogSchema,\n TServerMessages extends ZodSocketMessageCatalogSchema,\n> {\n host: string;\n port?: number;\n secure?: boolean;\n namespace: string;\n clientMessages: TClientMessages;\n serverMessages: TServerMessages;\n extraHeaders?: {\n [header: string]: string;\n };\n handlers?: ZodSocketMessageHandlers<TServerMessages>;\n authToken?: string;\n onConnection?: (\n socket: ZodSocket<TServerMessages, TClientMessages>,\n handler: ZodSocketMessageHandler<TServerMessages>,\n sender: ZodSocketMessageSender<TClientMessages>,\n logger: StructuredLogger\n ) => Promise<void>;\n onDisconnect?: (\n socket: ZodSocket<TServerMessages, TClientMessages>,\n reason: Socket.DisconnectReason,\n description: any,\n logger: StructuredLogger\n ) => Promise<void>;\n onError?: (\n socket: ZodSocket<TServerMessages, TClientMessages>,\n err: Error,\n logger: StructuredLogger\n ) => Promise<void>;\n}\n\nexport class ZodSocketConnection<\n TClientMessages extends ZodSocketMessageCatalogSchema,\n TServerMessages extends ZodSocketMessageCatalogSchema,\n> {\n #sender: ZodSocketMessageSender<TClientMessages>;\n socket: ZodSocket<TServerMessages, TClientMessages>;\n\n #handler: ZodSocketMessageHandler<TServerMessages>;\n #logger: StructuredLogger;\n\n constructor(opts: ZodSocketConnectionOptions<TClientMessages, TServerMessages>) {\n const uri = `${opts.secure ? \"wss\" : \"ws\"}://${opts.host}:${\n opts.port ?? (opts.secure ? \"443\" : \"80\")\n }/${opts.namespace}`;\n\n const logger = new SimpleStructuredLogger(opts.namespace, LogLevel.info);\n logger.log(\"new zod socket\", { uri });\n\n this.socket = io(uri, {\n transports: [\"websocket\"],\n auth: {\n token: opts.authToken,\n },\n extraHeaders: opts.extraHeaders,\n reconnectionDelay: 500,\n reconnectionDelayMax: 1000,\n });\n\n this.#logger = logger.child({\n socketId: this.socket.id,\n });\n\n this.#handler = new ZodSocketMessageHandler({\n schema: opts.serverMessages,\n handlers: opts.handlers,\n });\n this.#handler.registerHandlers(this.socket, this.#logger);\n\n this.#sender = new ZodSocketMessageSender({\n schema: opts.clientMessages,\n socket: this.socket,\n });\n\n this.socket.on(\"connect_error\", async (error) => {\n this.#logger.error(`connect_error: ${error}`);\n\n if (opts.onError) {\n await opts.onError(this.socket, error, this.#logger);\n }\n });\n\n this.socket.on(\"connect\", async () => {\n this.#logger.info(\"connect\");\n\n if (opts.onConnection) {\n await opts.onConnection(this.socket, this.#handler, this.#sender, this.#logger);\n }\n });\n\n this.socket.on(\"disconnect\", async (reason, description) => {\n this.#logger.info(\"disconnect\", { reason, description });\n\n if (opts.onDisconnect) {\n await opts.onDisconnect(this.socket, reason, description, this.#logger);\n }\n });\n }\n\n close() {\n this.socket.close();\n }\n\n connect() {\n this.socket.connect();\n }\n\n get send() {\n return this.#sender.send.bind(this.#sender);\n }\n\n get sendWithAck() {\n return this.#sender.sendWithAck.bind(this.#sender);\n }\n}\n\nfunction createLogger(prefix: string) {\n return (...args: any[]) => console.log(prefix, ...args);\n}\n","import { DisconnectReason, Namespace, Server, Socket } from \"socket.io\";\nimport { ZodMessageSender } from \"./zodMessageHandler\";\nimport {\n ZodMessageCatalogToSocketIoEvents,\n ZodSocketMessageCatalogSchema,\n ZodSocketMessageHandler,\n ZodSocketMessageHandlers,\n} from \"./zodSocket\";\nimport { DefaultEventsMap, EventsMap } from \"socket.io/dist/typed-events\";\nimport { z } from \"zod\";\n\ninterface ExtendedError extends Error {\n data?: any;\n}\n\nexport type ZodNamespaceSocket<\n TClientMessages extends ZodSocketMessageCatalogSchema,\n TServerMessages extends ZodSocketMessageCatalogSchema,\n TServerSideEvents extends EventsMap = DefaultEventsMap,\n TSocketData extends z.ZodObject<any, any, any> = any,\n> = Socket<\n ZodMessageCatalogToSocketIoEvents<TClientMessages>,\n ZodMessageCatalogToSocketIoEvents<TServerMessages>,\n TServerSideEvents,\n z.infer<TSocketData>\n>;\n\ntype StructuredArgs = (Record<string, unknown> | undefined)[];\n\nexport interface StructuredLogger {\n log: (message: string, ...args: StructuredArgs) => any;\n error: (message: string, ...args: StructuredArgs) => any;\n warn: (message: string, ...args: StructuredArgs) => any;\n info: (message: string, ...args: StructuredArgs) => any;\n debug: (message: string, ...args: StructuredArgs) => any;\n child: (fields: Record<string, unknown>) => StructuredLogger;\n}\n\nexport enum LogLevel {\n \"log\",\n \"error\",\n \"warn\",\n \"info\",\n \"debug\",\n}\n\nexport class SimpleStructuredLogger implements StructuredLogger {\n constructor(\n private name: string,\n private level: LogLevel = [\"1\", \"true\"].includes(process.env.DEBUG ?? \"\")\n ? LogLevel.debug\n : LogLevel.info,\n private fields?: Record<string, unknown>\n ) {}\n\n child(fields: Record<string, unknown>, level?: LogLevel) {\n return new SimpleStructuredLogger(this.name, level, { ...this.fields, ...fields });\n }\n\n log(message: string, ...args: StructuredArgs) {\n if (this.level < LogLevel.log) return;\n\n this.#structuredLog(console.log, message, \"log\", ...args);\n }\n\n error(message: string, ...args: StructuredArgs) {\n if (this.level < LogLevel.error) return;\n\n this.#structuredLog(console.error, message, \"error\", ...args);\n }\n\n warn(message: string, ...args: StructuredArgs) {\n if (this.level < LogLevel.warn) return;\n\n this.#structuredLog(console.warn, message, \"warn\", ...args);\n }\n\n info(message: string, ...args: StructuredArgs) {\n if (this.level < LogLevel.info) return;\n\n this.#structuredLog(console.info, message, \"info\", ...args);\n }\n\n debug(message: string, ...args: StructuredArgs) {\n if (this.level < LogLevel.debug) return;\n\n this.#structuredLog(console.debug, message, \"debug\", ...args);\n }\n\n #structuredLog(\n loggerFunction: (message: string, ...args: any[]) => void,\n message: string,\n level: string,\n ...args: StructuredArgs\n ) {\n const structuredLog = {\n ...(args.length === 1 ? args[0] : args),\n ...this.fields,\n timestamp: new Date(),\n name: this.name,\n message,\n level,\n };\n\n loggerFunction(JSON.stringify(structuredLog));\n }\n}\n\ninterface ZodNamespaceOptions<\n TClientMessages extends ZodSocketMessageCatalogSchema,\n TServerMessages extends ZodSocketMessageCatalogSchema,\n TServerSideEvents extends EventsMap = DefaultEventsMap,\n TSocketData extends z.ZodObject<any, any, any> = any,\n> {\n io: Server;\n name: string;\n clientMessages: TClientMessages;\n serverMessages: TServerMessages;\n socketData?: TSocketData;\n handlers?: ZodSocketMessageHandlers<TClientMessages>;\n authToken?: string;\n logger?: StructuredLogger;\n preAuth?: (\n socket: ZodNamespaceSocket<TClientMessages, TServerMessages, TServerSideEvents, TSocketData>,\n next: (err?: ExtendedError) => void,\n logger: StructuredLogger\n ) => Promise<void>;\n postAuth?: (\n socket: ZodNamespaceSocket<TClientMessages, TServerMessages, TServerSideEvents, TSocketData>,\n next: (err?: ExtendedError) => void,\n logger: StructuredLogger\n ) => Promise<void>;\n onConnection?: (\n socket: ZodNamespaceSocket<TClientMessages, TServerMessages, TServerSideEvents, TSocketData>,\n handler: ZodSocketMessageHandler<TClientMessages>,\n sender: ZodMessageSender<TServerMessages>,\n logger: StructuredLogger\n ) => Promise<void>;\n onDisconnect?: (\n socket: ZodNamespaceSocket<TClientMessages, TServerMessages, TServerSideEvents, TSocketData>,\n reason: DisconnectReason,\n description: any,\n logger: StructuredLogger\n ) => Promise<void>;\n onError?: (\n socket: ZodNamespaceSocket<TClientMessages, TServerMessages, TServerSideEvents, TSocketData>,\n err: Error,\n logger: StructuredLogger\n ) => Promise<void>;\n}\n\nexport class ZodNamespace<\n TClientMessages extends ZodSocketMessageCatalogSchema,\n TServerMessages extends ZodSocketMessageCatalogSchema,\n TSocketData extends z.ZodObject<any, any, any> = any,\n TServerSideEvents extends EventsMap = DefaultEventsMap,\n> {\n #logger: StructuredLogger;\n #handler: ZodSocketMessageHandler<TClientMessages>;\n sender: ZodMessageSender<TServerMessages>;\n\n io: Server;\n namespace: Namespace<\n ZodMessageCatalogToSocketIoEvents<TClientMessages>,\n ZodMessageCatalogToSocketIoEvents<TServerMessages>,\n TServerSideEvents,\n z.infer<TSocketData>\n >;\n\n constructor(\n opts: ZodNamespaceOptions<TClientMessages, TServerMessages, TServerSideEvents, TSocketData>\n ) {\n this.#logger = opts.logger ?? new SimpleStructuredLogger(opts.name);\n\n this.#handler = new ZodSocketMessageHandler({\n schema: opts.clientMessages,\n handlers: opts.handlers,\n });\n\n this.io = opts.io;\n\n this.namespace = this.io.of(opts.name);\n\n // FIXME: There's a bug here, this sender should not accept Socket schemas with callbacks\n this.sender = new ZodMessageSender({\n schema: opts.serverMessages,\n sender: async (message) => {\n return new Promise((resolve, reject) => {\n try {\n // @ts-expect-error\n this.namespace.emit(message.type, message.payload);\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n },\n });\n\n if (opts.preAuth) {\n this.namespace.use(async (socket, next) => {\n const logger = this.#logger.child({ socketId: socket.id, socketStage: \"preAuth\" });\n\n if (typeof opts.preAuth === \"function\") {\n await opts.preAuth(socket, next, logger);\n }\n });\n }\n\n if (opts.authToken) {\n this.namespace.use((socket, next) => {\n const logger = this.#logger.child({ socketId: socket.id, socketStage: \"auth\" });\n\n const { auth } = socket.handshake;\n\n if (!(\"token\" in auth)) {\n logger.error(\"no token\");\n return socket.disconnect(true);\n }\n\n if (auth.token !== opts.authToken) {\n logger.error(\"invalid token\");\n return socket.disconnect(true);\n }\n\n logger.info(\"success\");\n\n next();\n });\n }\n\n if (opts.postAuth) {\n this.namespace.use(async (socket, next) => {\n const logger = this.#logger.child({ socketId: socket.id, socketStage: \"auth\" });\n\n if (typeof opts.postAuth === \"function\") {\n await opts.postAuth(socket, next, logger);\n }\n });\n }\n\n this.namespace.on(\"connection\", async (socket) => {\n const logger = this.#logger.child({ socketId: socket.id, socketStage: \"connection\" });\n logger.info(\"connected\");\n\n this.#handler.registerHandlers(socket, logger);\n\n socket.on(\"disconnect\", async (reason, description) => {\n logger.info(\"disconnect\", { reason, description });\n\n if (opts.onDisconnect) {\n await opts.onDisconnect(socket, reason, description, logger);\n }\n });\n\n socket.on(\"error\", async (error) => {\n logger.error(\"error\", { error });\n\n if (opts.onError) {\n await opts.onError(socket, error, logger);\n }\n });\n\n if (opts.onConnection) {\n await opts.onConnection(socket, this.#handler, this.sender, logger);\n }\n });\n }\n\n fetchSockets() {\n return this.namespace.fetchSockets();\n }\n}\n","import { randomUUID } from \"crypto\";\nimport {\n GetSocketCallbackSchema,\n GetSocketMessageSchema,\n GetSocketMessagesWithCallback,\n GetSocketMessagesWithoutCallback,\n MessagesFromSocketCatalog,\n SocketMessageHasCallback,\n ZodSocketMessageCatalogSchema,\n} from \"./zodSocket\";\nimport { z } from \"zod\";\nimport { ZodSchemaParsedError } from \"./zodMessageHandler\";\n\ninterface ZodIpcMessageSender<TEmitCatalog extends ZodSocketMessageCatalogSchema> {\n send<K extends GetSocketMessagesWithoutCallback<TEmitCatalog>>(\n type: K,\n payload: z.input<GetSocketMessageSchema<TEmitCatalog, K>>\n ): Promise<void>;\n\n sendWithAck<K extends GetSocketMessagesWithCallback<TEmitCatalog>>(\n type: K,\n payload: z.input<GetSocketMessageSchema<TEmitCatalog, K>>\n ): Promise<z.infer<GetSocketCallbackSchema<TEmitCatalog, K>>>;\n}\n\ntype ZodIpcMessageHandlers<\n TListenCatalog extends ZodSocketMessageCatalogSchema,\n TEmitCatalog extends ZodSocketMessageCatalogSchema,\n> = Partial<{\n [K in keyof TListenCatalog]: (\n payload: z.infer<GetSocketMessageSchema<TListenCatalog, K>>,\n sender: ZodIpcMessageSender<TEmitCatalog>\n ) => Promise<\n SocketMessageHasCallback<TListenCatalog, K> extends true\n ? z.input<GetSocketCallbackSchema<TListenCatalog, K>>\n : void\n >;\n}>;\n\nconst messageSchema = z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n type: z.string(),\n payload: z.unknown(),\n});\n\ntype ZodIpcMessageHandlerOptions<\n TListenCatalog extends ZodSocketMessageCatalogSchema,\n TEmitCatalog extends ZodSocketMessageCatalogSchema,\n> = {\n schema: TListenCatalog;\n handlers?: ZodIpcMessageHandlers<TListenCatalog, TEmitCatalog>;\n sender: ZodIpcMessageSender<TEmitCatalog>;\n};\n\nclass ZodIpcMessageHandler<\n TListenCatalog extends ZodSocketMessageCatalogSchema,\n TEmitCatalog extends ZodSocketMessageCatalogSchema,\n> {\n #schema: TListenCatalog;\n #handlers: ZodIpcMessageHandlers<TListenCatalog, TEmitCatalog> | undefined;\n #sender: ZodIpcMessageSender<TEmitCatalog>;\n\n constructor(options: ZodIpcMessageHandlerOptions<TListenCatalog, TEmitCatalog>) {\n this.#schema = options.schema;\n this.#handlers = options.handlers;\n this.#sender = options.sender;\n }\n\n public async handleMessage(message: unknown) {\n const parsedMessage = this.parseMessage(message);\n\n if (!this.#handlers) {\n throw new Error(\"No handlers provided\");\n }\n\n const handler = this.#handlers[parsedMessage.type];\n\n if (!handler) {\n // console.error(`No handler for message type: ${String(parsedMessage.type)}`);\n return;\n }\n\n const ack = await handler(parsedMessage.payload, this.#sender);\n\n return ack;\n }\n\n public parseMessage(message: unknown): MessagesFromSocketCatalog<TListenCatalog> {\n const parsedMessage = messageSchema.safeParse(message);\n\n if (!parsedMessage.success) {\n throw new Error(`Failed to parse message: ${JSON.stringify(parsedMessage.error)}`);\n }\n\n const schema = this.#schema[parsedMessage.data.type][\"message\"];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${parsedMessage.data.type}`);\n }\n\n const parsedPayload = schema.safeParse(parsedMessage.data.payload);\n\n if (!parsedPayload.success) {\n throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n return {\n type: parsedMessage.data.type,\n payload: parsedPayload.data,\n };\n }\n}\n\nconst Packet = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"CONNECT\"),\n sessionId: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"ACK\"),\n message: z.any(),\n id: z.number(),\n }),\n z.object({\n type: z.literal(\"EVENT\"),\n message: z.any(),\n id: z.number().optional(),\n }),\n]);\n\ntype Packet = z.infer<typeof Packet>;\n\ninterface ZodIpcConnectionOptions<\n TListenCatalog extends ZodSocketMessageCatalogSchema,\n TEmitCatalog extends ZodSocketMessageCatalogSchema,\n> {\n listenSchema: TListenCatalog;\n emitSchema: TEmitCatalog;\n process: {\n send?: (message: any) => any;\n on?: (event: \"message\", listener: (message: any) => void) => void;\n };\n handlers?: ZodIpcMessageHandlers<TListenCatalog, TEmitCatalog>;\n}\n\nexport class ZodIpcConnection<\n TListenCatalog extends ZodSocketMessageCatalogSchema,\n TEmitCatalog extends ZodSocketMessageCatalogSchema,\n> {\n #sessionId?: string;\n #messageCounter: number = 0;\n\n #handler: ZodIpcMessageHandler<TListenCatalog, TEmitCatalog>;\n\n #acks: Map<\n number,\n {\n resolve: (value: unknown) => void;\n reject: (reason?: any) => void;\n timeout: NodeJS.Timeout;\n }\n > = new Map();\n\n constructor(private opts: ZodIpcConnectionOptions<TListenCatalog, TEmitCatalog>) {\n this.#handler = new ZodIpcMessageHandler({\n schema: opts.listenSchema,\n handlers: opts.handlers,\n sender: {\n send: this.send.bind(this),\n sendWithAck: this.sendWithAck.bind(this),\n },\n });\n\n this.#registerHandlers();\n // this.connect();\n }\n\n async #registerHandlers() {\n if (!this.opts.process.on) {\n return;\n }\n\n this.opts.process.on(\"message\", async (message) => {\n this.#handlePacket(message);\n });\n }\n\n async connect() {\n this.#sendPacket({ type: \"CONNECT\" });\n }\n\n async #handlePacket(packet: Packet): Promise<void> {\n const parsedPacket = Packet.safeParse(packet);\n\n if (!parsedPacket.success) {\n // console.error(\"dropping invalid packet\", packet);\n return;\n }\n\n // console.log(\"<-\", packet);\n\n switch (parsedPacket.data.type) {\n case \"ACK\": {\n // Check our list of ACKs and resolve with the message\n const ack = this.#acks.get(parsedPacket.data.id);\n\n if (!ack) {\n return;\n }\n\n clearTimeout(ack.timeout);\n ack.resolve(parsedPacket.data.message);\n\n break;\n }\n case \"CONNECT\": {\n if (!parsedPacket.data.sessionId) {\n // This is a client trying to connect, so we generate and send back a session ID\n const id = randomUUID();\n\n await this.#sendPacket({ type: \"CONNECT\", sessionId: id });\n\n return;\n }\n\n // This is a server replying to our connect message\n if (this.#sessionId) {\n // We're already connected\n return;\n }\n\n this.#sessionId = parsedPacket.data.sessionId;\n\n break;\n }\n case \"EVENT\": {\n const result = await this.#handler.handleMessage(parsedPacket.data.message);\n\n if (typeof parsedPacket.data.id === \"undefined\") {\n return;\n }\n\n // There's an ID so we should ACK\n await this.#sendPacket({\n type: \"ACK\",\n id: parsedPacket.data.id,\n message: result,\n });\n\n break;\n }\n default: {\n break;\n }\n }\n }\n\n async #sendPacket(packet: Packet) {\n // console.log(\"->\", packet);\n await this.opts.process.send?.(packet);\n }\n\n async send<K extends GetSocketMessagesWithoutCallback<TEmitCatalog>>(\n type: K,\n payload: z.input<GetSocketMessageSchema<TEmitCatalog, K>>\n ): Promise<void> {\n const schema = this.opts.emitSchema[type][\"message\"];\n\n if (!schema) {\n throw new Error(`Unknown message type: ${type as string}`);\n }\n\n const parsedPayload = schema.safeParse(payload);\n\n if (!parsedPayload.success) {\n throw new ZodSchemaParsedError(parsedPayload.error, payload);\n }\n\n await this.#sendPacket({\n type: \"EVENT\",\n message: {\n type,\n payload,\n version: \"v1\",\n },\n });\n }\n\n public async sendWithAck<K extends GetSocketMessagesWithCallback<TEmitCatalog>>(\n type: K,\n payload: z.input<GetSocketMessageSchema<TEmitCatalog, K>>,\n timeoutInMs?: number\n ): Promise<z.infer<GetSocketCallbackSchema<TEmitCatalog, K>>> {\n const currentId = this.#messageCounter++;\n\n return new Promise(async (resolve, reject) => {\n const defaultTimeoutInMs = 2000;\n\n // Timeout if the ACK takes too long to get back to us\n const timeout = setTimeout(() => {\n reject(\n JSON.stringify({\n reason: \"sendWithAck() timeout\",\n timeoutInMs: timeoutInMs ?? defaultTimeoutInMs,\n type,\n payload,\n })\n );\n }, timeoutInMs ?? defaultTimeoutInMs);\n\n this.#acks.set(currentId, { resolve, reject, timeout });\n\n const schema = this.opts.emitSchema[type][\"message\"];\n\n if (!schema) {\n clearTimeout(timeout);\n return reject(`Unknown message type: ${type as string}`);\n }\n\n const parsedPayload = schema.safeParse(payload);\n\n if (!parsedPayload.success) {\n clearTimeout(timeout);\n return reject(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);\n }\n\n await this.#sendPacket({\n type: \"EVENT\",\n message: {\n type,\n payload,\n version: \"v1\",\n },\n id: currentId,\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 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\nfunction correctStackTraceLine(line: string, projectDir?: string) {\n const regex = /at (.*?) \\(?file:\\/\\/(\\/.*?\\.ts):(\\d+):(\\d+)\\)?/;\n\n const match = regex.exec(line);\n\n if (!match) {\n return;\n }\n\n const [_, identifier, path, lineNum, colNum] = match;\n\n if (!path) {\n return;\n }\n\n // Check to see if the file name is __entryPoint.ts, if it is we can remove it\n if (nodePath.basename(path) === \"__entryPoint.ts\") {\n return;\n }\n\n // Check to see if the path is inside the project directory\n if (projectDir && !path.includes(projectDir)) {\n return;\n }\n\n return line;\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","export const _globalThis = typeof globalThis === \"object\" ? globalThis : global;\n","import { Clock } from \"../clock/clock\";\nimport type { RuntimeManager } from \"../runtime/manager\";\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};\n","import {\n BatchTaskRunExecutionResult,\n TaskMetadataWithFilePath,\n TaskRunContext,\n TaskRunExecutionResult,\n} from \"../schemas\";\nimport { RuntimeManager } from \"./manager\";\n\nexport class NoopRuntimeManager implements RuntimeManager {\n disable(): void {\n // do nothing\n }\n\n registerTasks(): void {}\n\n getTaskMetadata(id: string): TaskMetadataWithFilePath | undefined {\n return undefined;\n }\n\n waitForDuration(ms: number): Promise<void> {\n return Promise.resolve();\n }\n\n waitUntil(date: Date): Promise<void> {\n return Promise.resolve();\n }\n\n waitForTask(params: { id: string; ctx: TaskRunContext }): Promise<TaskRunExecutionResult> {\n return Promise.resolve({\n ok: false,\n id: params.id,\n error: { type: \"INTERNAL_ERROR\", code: \"CONFIGURED_INCORRECTLY\" },\n });\n }\n\n waitForBatch(params: {\n id: string;\n runs: string[];\n ctx: TaskRunContext;\n }): Promise<BatchTaskRunExecutionResult> {\n return Promise.resolve({\n id: params.id,\n items: [],\n });\n }\n}\n","const API_NAME = \"runtime\";\n\nimport {\n BatchTaskRunExecutionResult,\n TaskMetadataWithFilePath,\n TaskRunContext,\n TaskRunExecutionResult,\n} from \"../schemas\";\nimport { getGlobal, registerGlobal, unregisterGlobal } from \"../utils/globals\";\nimport { type RuntimeManager } from \"./manager\";\nimport { NoopRuntimeManager } from \"./noopRuntimeManager\";\n\nconst NOOP_RUNTIME_MANAGER = new NoopRuntimeManager();\n\nexport class RuntimeAPI {\n private static _instance?: RuntimeAPI;\n\n private constructor() {}\n\n public static getInstance(): RuntimeAPI {\n if (!this._instance) {\n this._instance = new RuntimeAPI();\n }\n\n return this._instance;\n }\n\n public waitForDuration(ms: number): Promise<void> {\n return this.#getRuntimeManager().waitForDuration(ms);\n }\n\n public waitUntil(date: Date): Promise<void> {\n return this.#getRuntimeManager().waitUntil(date);\n }\n\n public waitForTask(params: { id: string; ctx: TaskRunContext }): Promise<TaskRunExecutionResult> {\n return this.#getRuntimeManager().waitForTask(params);\n }\n\n public waitForBatch(params: {\n id: string;\n runs: string[];\n ctx: TaskRunContext;\n }): Promise<BatchTaskRunExecutionResult> {\n return this.#getRuntimeManager().waitForBatch(params);\n }\n\n public setGlobalRuntimeManager(runtimeManager: RuntimeManager): boolean {\n return registerGlobal(API_NAME, runtimeManager);\n }\n\n public disable() {\n this.#getRuntimeManager().disable();\n unregisterGlobal(API_NAME);\n }\n\n public registerTasks(tasks: TaskMetadataWithFilePath[]): void {\n this.#getRuntimeManager().registerTasks(tasks);\n }\n\n public getTaskMetadata(id: string): TaskMetadataWithFilePath | undefined {\n return this.#getRuntimeManager().getTaskMetadata(id);\n }\n\n #getRuntimeManager(): RuntimeManager {\n return getGlobal(API_NAME) ?? NOOP_RUNTIME_MANAGER;\n }\n}\n","// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { RuntimeAPI } from \"./runtime\";\n/** Entrypoint for runtime API */\nexport const runtime = RuntimeAPI.getInstance();\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\" | \"log\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\nexport const logLevels: Array<LogLevel> = [\"none\", \"error\", \"warn\", \"log\", \"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 < 5) return;\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;\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 < 4) return;\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;\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;\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(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","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 { NoopTaskLogger, TaskLogger } from \"./taskLogger\";\nimport { getGlobal, registerGlobal, unregisterGlobal } from \"../utils/globals\";\nimport { Span } from \"@opentelemetry/api\";\n\nconst API_NAME = \"logger\";\n\nconst NOOP_TASK_LOGGER = new NoopTaskLogger();\n\nexport class LoggerAPI implements TaskLogger {\n private static _instance?: LoggerAPI;\n\n private constructor() {}\n\n public static getInstance(): LoggerAPI {\n if (!this._instance) {\n this._instance = new LoggerAPI();\n }\n\n return this._instance;\n }\n\n public disable() {\n unregisterGlobal(API_NAME);\n }\n\n public setGlobalTaskLogger(taskLogger: TaskLogger): boolean {\n return registerGlobal(API_NAME, taskLogger);\n }\n\n public debug(message: string, metadata?: Record<string, unknown>) {\n this.#getTaskLogger().debug(message, metadata);\n }\n\n public log(message: string, metadata?: Record<string, unknown>) {\n this.#getTaskLogger().log(message, metadata);\n }\n\n public info(message: string, metadata?: Record<string, unknown>) {\n this.#getTaskLogger().info(message, metadata);\n }\n\n public warn(message: string, metadata?: Record<string, unknown>) {\n this.#getTaskLogger().warn(message, metadata);\n }\n\n public error(message: string, metadata?: Record<string, unknown>) {\n this.#getTaskLogger().error(message, metadata);\n }\n\n public trace<T>(name: string, fn: (span: Span) => Promise<T>): Promise<T> {\n return this.#getTaskLogger().trace(name, fn);\n }\n\n #getTaskLogger(): TaskLogger {\n return getGlobal(API_NAME) ?? NOOP_TASK_LOGGER;\n }\n}\n","// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { LoggerAPI } from \"./logger\";\n/** Entrypoint for logger API */\nexport const logger = LoggerAPI.getInstance();\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","import humanizeDuration, { Unit } from \"humanize-duration\";\n\nfunction dateDifference(date1: Date, date2: Date) {\n return Math.abs(date1.getTime() - date2.getTime());\n}\n\ntype DurationOptions = {\n style?: \"long\" | \"short\";\n maxDecimalPoints?: number;\n units?: Unit[];\n};\n\nexport function formatDuration(\n start?: Date | null,\n end?: Date | null,\n options?: DurationOptions\n): string {\n if (!start || !end) {\n return \"–\";\n }\n\n return formatDurationMilliseconds(dateDifference(start, end), options);\n}\n\nexport function nanosecondsToMilliseconds(nanoseconds: number): number {\n return nanoseconds / 1_000_000;\n}\n\nexport function millisecondsToNanoseconds(milliseconds: number): number {\n return milliseconds * 1_000_000;\n}\n\nexport function formatDurationNanoseconds(nanoseconds: number, options?: DurationOptions): string {\n return formatDurationMilliseconds(nanosecondsToMilliseconds(nanoseconds), options);\n}\n\nconst aboveOneSecondUnits = [\"d\", \"h\", \"m\", \"s\"] as Unit[];\nconst belowOneSecondUnits = [\"ms\"] as Unit[];\n\nexport function formatDurationMilliseconds(\n milliseconds: number,\n options?: DurationOptions\n): string {\n let duration = humanizeDuration(milliseconds, {\n units: options?.units\n ? options.units\n : milliseconds < 1000\n ? belowOneSecondUnits\n : aboveOneSecondUnits,\n maxDecimalPoints: options?.maxDecimalPoints ?? 1,\n largest: 2,\n });\n\n if (!options) {\n return duration;\n }\n\n switch (options.style) {\n case \"short\":\n duration = duration.replace(\" milliseconds\", \"ms\");\n duration = duration.replace(\" millisecond\", \"ms\");\n duration = duration.replace(\" seconds\", \"s\");\n duration = duration.replace(\" second\", \"s\");\n duration = duration.replace(\" minutes\", \"m\");\n duration = duration.replace(\" minute\", \"m\");\n duration = duration.replace(\" hours\", \"h\");\n duration = duration.replace(\" hour\", \"h\");\n duration = duration.replace(\" days\", \"d\");\n duration = duration.replace(\" day\", \"d\");\n duration = duration.replace(\" weeks\", \"w\");\n duration = duration.replace(\" week\", \"w\");\n duration = duration.replace(\" months\", \"mo\");\n duration = duration.replace(\" month\", \"mo\");\n duration = duration.replace(\" years\", \"y\");\n duration = duration.replace(\" year\", \"y\");\n }\n\n return duration;\n}\n\nexport function formatDurationInDays(milliseconds: number): string {\n let duration = humanizeDuration(milliseconds, {\n maxDecimalPoints: 0,\n largest: 2,\n units: [\"d\"],\n });\n\n return duration;\n}\n","import {\n BatchTaskRunExecutionResult,\n TaskMetadataWithFilePath,\n TaskRunContext,\n TaskRunExecution,\n TaskRunExecutionResult,\n} from \"../schemas\";\nimport { RuntimeManager } from \"./manager\";\n\nexport class DevRuntimeManager implements RuntimeManager {\n _taskWaits: Map<\n string,\n { resolve: (value: TaskRunExecutionResult) => void; reject: (err?: any) => void }\n > = new Map();\n\n _batchWaits: Map<\n string,\n { resolve: (value: BatchTaskRunExecutionResult) => void; reject: (err?: any) => void }\n > = new Map();\n\n _tasks: Map<string, TaskMetadataWithFilePath> = new Map();\n\n _pendingCompletionNotifications: Map<string, TaskRunExecutionResult> = new Map();\n\n disable(): void {\n // do nothing\n }\n\n registerTasks(tasks: TaskMetadataWithFilePath[]): void {\n for (const task of tasks) {\n this._tasks.set(task.id, task);\n }\n }\n\n getTaskMetadata(id: string): TaskMetadataWithFilePath | undefined {\n return this._tasks.get(id);\n }\n\n async waitForDuration(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n\n async waitUntil(date: Date): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, date.getTime() - Date.now());\n });\n }\n\n async waitForTask(params: { id: string; ctx: TaskRunContext }): Promise<TaskRunExecutionResult> {\n const pendingCompletion = this._pendingCompletionNotifications.get(params.id);\n\n if (pendingCompletion) {\n this._pendingCompletionNotifications.delete(params.id);\n\n return pendingCompletion;\n }\n\n const promise = new Promise<TaskRunExecutionResult>((resolve, reject) => {\n this._taskWaits.set(params.id, { resolve, reject });\n });\n\n return await promise;\n }\n\n async waitForBatch(params: {\n id: string;\n runs: string[];\n ctx: TaskRunContext;\n }): Promise<BatchTaskRunExecutionResult> {\n if (!params.runs.length) {\n return Promise.resolve({ id: params.id, items: [] });\n }\n\n const promise = Promise.all(\n params.runs.map((runId) => {\n return new Promise<TaskRunExecutionResult>((resolve, reject) => {\n const pendingCompletion = this._pendingCompletionNotifications.get(runId);\n\n if (pendingCompletion) {\n this._pendingCompletionNotifications.delete(runId);\n\n if (pendingCompletion.ok) {\n resolve(pendingCompletion);\n } else {\n reject(pendingCompletion);\n }\n\n return;\n }\n\n this._taskWaits.set(runId, { resolve, reject });\n });\n })\n );\n\n const results = await promise;\n\n return {\n id: params.id,\n items: results,\n };\n }\n\n resumeTask(completion: TaskRunExecutionResult, execution: TaskRunExecution): void {\n const wait = this._taskWaits.get(execution.run.id);\n\n if (!wait) {\n // We need to store the completion in case the task is awaited later\n this._pendingCompletionNotifications.set(execution.run.id, completion);\n\n return;\n }\n\n if (completion.ok) {\n wait.resolve(completion);\n } else {\n wait.reject(completion);\n }\n\n this._taskWaits.delete(execution.run.id);\n }\n}\n","import { clock } from \"../clock-api\";\nimport {\n BatchTaskRunExecutionResult,\n ProdChildToWorkerMessages,\n ProdWorkerToChildMessages,\n TaskMetadataWithFilePath,\n TaskRunContext,\n TaskRunExecution,\n TaskRunExecutionResult,\n} from \"../schemas\";\nimport { ZodIpcConnection } from \"../zodIpc\";\nimport { RuntimeManager } from \"./manager\";\nimport { setTimeout } from \"node:timers/promises\";\n\nexport type ProdRuntimeManagerOptions = {\n waitThresholdInMs?: number;\n};\n\nexport class ProdRuntimeManager implements RuntimeManager {\n _taskWaits: Map<\n string,\n { resolve: (value: TaskRunExecutionResult) => void; reject: (err?: any) => void }\n > = new Map();\n\n _batchWaits: Map<\n string,\n { resolve: (value: BatchTaskRunExecutionResult) => void; reject: (err?: any) => void }\n > = new Map();\n\n _waitForRestore: { resolve: (value: \"restore\") => void; reject: (err?: any) => void } | undefined;\n\n _tasks: Map<string, TaskMetadataWithFilePath> = new Map();\n\n constructor(\n private ipc: ZodIpcConnection<\n typeof ProdWorkerToChildMessages,\n typeof ProdChildToWorkerMessages\n >,\n private options: ProdRuntimeManagerOptions = {}\n ) {}\n\n disable(): void {\n // do nothing\n }\n\n registerTasks(tasks: TaskMetadataWithFilePath[]): void {\n for (const task of tasks) {\n this._tasks.set(task.id, task);\n }\n }\n\n getTaskMetadata(id: string): TaskMetadataWithFilePath | undefined {\n return this._tasks.get(id);\n }\n\n async waitForDuration(ms: number): Promise<void> {\n const now = Date.now();\n\n const resolveAfterDuration = setTimeout(ms, \"duration\" as const);\n\n if (ms <= this.waitThresholdInMs) {\n await resolveAfterDuration;\n return;\n }\n\n const waitForRestore = new Promise<\"restore\">((resolve, reject) => {\n this._waitForRestore = { resolve, reject };\n });\n\n const { willCheckpointAndRestore } = await this.ipc.sendWithAck(\"WAIT_FOR_DURATION\", {\n ms,\n now,\n });\n\n if (!willCheckpointAndRestore) {\n await resolveAfterDuration;\n return;\n }\n\n this.ipc.send(\"READY_FOR_CHECKPOINT\", {});\n\n // Don't wait for checkpoint beyond the requested wait duration\n await Promise.race([waitForRestore, resolveAfterDuration]);\n\n // The coordinator can then cancel any in-progress checkpoints\n this.ipc.send(\"CANCEL_CHECKPOINT\", {});\n }\n\n resumeAfterRestore(): void {\n if (!this._waitForRestore) {\n return;\n }\n\n // Resets the clock to the current time\n clock.reset();\n\n this._waitForRestore.resolve(\"restore\");\n this._waitForRestore = undefined;\n }\n\n async waitUntil(date: Date): Promise<void> {\n return this.waitForDuration(date.getTime() - Date.now());\n }\n\n async waitForTask(params: { id: string; ctx: TaskRunContext }): Promise<TaskRunExecutionResult> {\n const promise = new Promise<TaskRunExecutionResult>((resolve, reject) => {\n this._taskWaits.set(params.id, { resolve, reject });\n });\n\n await this.ipc.send(\"WAIT_FOR_TASK\", {\n friendlyId: params.id,\n });\n\n return await promise;\n }\n\n async waitForBatch(params: {\n id: string;\n runs: string[];\n ctx: TaskRunContext;\n }): Promise<BatchTaskRunExecutionResult> {\n if (!params.runs.length) {\n return Promise.resolve({ id: params.id, items: [] });\n }\n\n const promise = Promise.all(\n params.runs.map((runId) => {\n return new Promise<TaskRunExecutionResult>((resolve, reject) => {\n this._taskWaits.set(runId, { resolve, reject });\n });\n })\n );\n\n await this.ipc.send(\"WAIT_FOR_BATCH\", {\n batchFriendlyId: params.id,\n runFriendlyIds: params.runs,\n });\n\n const results = await promise;\n\n return {\n id: params.id,\n items: results,\n };\n }\n\n resumeTask(completion: TaskRunExecutionResult, execution: TaskRunExecution): void {\n const wait = this._taskWaits.get(execution.run.id);\n\n if (!wait) {\n return;\n }\n\n if (completion.ok) {\n wait.resolve(completion);\n } else {\n wait.reject(completion);\n }\n\n this._taskWaits.delete(execution.run.id);\n }\n\n private get waitThresholdInMs(): number {\n return this.options.waitThresholdInMs ?? 30_000;\n }\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 {\n Context,\n SpanOptions,\n SpanStatusCode,\n context,\n propagation,\n trace,\n type Span,\n type Tracer,\n} from \"@opentelemetry/api\";\nimport { Logger, logs } from \"@opentelemetry/api-logs\";\nimport { SemanticInternalAttributes } from \"./semanticInternalAttributes\";\nimport { clock } from \"./clock-api\";\n\nexport type TriggerTracerConfig =\n | {\n name: string;\n version: string;\n }\n | {\n tracer: Tracer;\n logger: Logger;\n };\n\nexport class TriggerTracer {\n constructor(private readonly _config: TriggerTracerConfig) {}\n\n private _tracer: Tracer | undefined;\n private get tracer(): Tracer {\n if (!this._tracer) {\n if (\"tracer\" in this._config) return this._config.tracer;\n\n this._tracer = trace.getTracer(this._config.name, this._config.version);\n }\n\n return this._tracer;\n }\n\n private _logger: Logger | undefined;\n private get logger(): Logger {\n if (!this._logger) {\n if (\"logger\" in this._config) return this._config.logger;\n\n this._logger = logs.getLogger(this._config.name, this._config.version);\n }\n\n return this._logger;\n }\n\n extractContext(traceContext?: Record<string, unknown>) {\n return propagation.extract(context.active(), traceContext ?? {});\n }\n\n startActiveSpan<T>(\n name: string,\n fn: (span: Span) => Promise<T>,\n options?: SpanOptions,\n ctx?: Context\n ): Promise<T> {\n const parentContext = ctx ?? context.active();\n\n const attributes = options?.attributes ?? {};\n\n return this.tracer.startActiveSpan(\n name,\n {\n ...options,\n attributes,\n startTime: clock.preciseNow(),\n },\n parentContext,\n async (span) => {\n this.tracer\n .startSpan(\n name,\n {\n ...options,\n attributes: {\n ...attributes,\n [SemanticInternalAttributes.SPAN_PARTIAL]: true,\n [SemanticInternalAttributes.SPAN_ID]: span.spanContext().spanId,\n },\n },\n parentContext\n )\n .end();\n\n try {\n return await fn(span);\n } catch (e) {\n if (typeof e === \"string\" || e instanceof Error) {\n span.recordException(e);\n }\n\n span.setStatus({ code: SpanStatusCode.ERROR });\n\n throw e;\n } finally {\n span.end(clock.preciseNow());\n }\n }\n );\n }\n\n startSpan(name: string, options?: SpanOptions, ctx?: Context) {\n const parentContext = ctx ?? context.active();\n\n const attributes = options?.attributes ?? {};\n\n const span = this.tracer.startSpan(name, options, ctx);\n\n this.tracer\n .startSpan(\n name,\n {\n ...options,\n attributes: {\n ...attributes,\n [SemanticInternalAttributes.SPAN_PARTIAL]: true,\n [SemanticInternalAttributes.SPAN_ID]: span.spanContext().spanId,\n },\n },\n parentContext\n )\n .end();\n\n return span;\n }\n}\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(private readonly logger: logsAPI.Logger) {}\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 };\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\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 }\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 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 { RetryOptions } from \"./schemas\";\n\nconst DEFAULT_RETRY_OPTIONS = {\n limit: 5,\n factor: 1.8,\n minTimeoutInMs: 1000,\n maxTimeoutInMs: 60000,\n randomize: true,\n} satisfies RetryOptions;\n\nexport function calculateRetryAt(retryOptions: RetryOptions, attempts: number): Date | undefined {\n const options = {\n ...DEFAULT_RETRY_OPTIONS,\n ...retryOptions,\n };\n\n const retryCount = attempts + 1;\n\n if (retryCount >= options.limit) {\n return;\n }\n\n const random = options.randomize ? Math.random() + 1 : 1;\n\n let timeoutInMs = Math.round(\n random *\n Math.max(options.minTimeoutInMs, 1) *\n Math.pow(options.factor, Math.max(attempts - 1, 0))\n );\n\n timeoutInMs = Math.min(timeoutInMs, options.maxTimeoutInMs);\n\n return new Date(Date.now() + timeoutInMs);\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: Date = new Date()\n): Date | undefined {\n if (!resets) return;\n\n switch (format) {\n case \"iso_8601_duration_openai_variant\": {\n return calculateISO8601DurationOpenAIVariantResetAt(resets, now);\n }\n case \"iso_8601\": {\n return calculateISO8601ResetAt(resets, now);\n }\n case \"unix_timestamp\": {\n return calculateUnixTimestampResetAt(resets, now);\n }\n case \"unix_timestamp_in_ms\": {\n return calculateUnixTimestampInMsResetAt(resets, now);\n }\n }\n}\n\nfunction calculateUnixTimestampResetAt(resets: string, now: Date = new Date()): Date | undefined {\n // Check if the input is null or undefined\n if (!resets) return undefined;\n\n // Convert the string to a number\n const resetAt = parseInt(resets, 10);\n\n // If the string doesn't match the expected format, return undefined\n if (isNaN(resetAt)) return undefined;\n\n // Return the date\n return new Date(resetAt * 1000);\n}\n\nfunction calculateUnixTimestampInMsResetAt(\n resets: string,\n now: Date = new Date()\n): Date | undefined {\n // Check if the input is null or undefined\n if (!resets) return undefined;\n\n // Convert the string to a number\n const resetAt = parseInt(resets, 10);\n\n // If the string doesn't match the expected format, return undefined\n if (isNaN(resetAt)) return undefined;\n\n // Return the date\n return new Date(resetAt);\n}\n\nfunction calculateISO8601ResetAt(resets: string, now: Date = new Date()): Date | undefined {\n // Check if the input is null or undefined\n if (!resets) return undefined;\n\n // Parse the date\n const resetAt = new Date(resets);\n\n // If the string doesn't match the expected format, return undefined\n if (isNaN(resetAt.getTime())) return undefined;\n\n return resetAt;\n}\n\nfunction calculateISO8601DurationOpenAIVariantResetAt(\n resets: string,\n now: Date = new Date()\n): Date | undefined {\n // Check if the input is null or undefined\n if (!resets) return undefined;\n\n // Regular expression to match the duration string pattern\n const pattern = /^(?:(\\d+)d)?(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+(?:\\.\\d+)?)s)?(?:(\\d+)ms)?$/;\n const match = resets.match(pattern);\n\n // If the string doesn't match the expected format, return undefined\n if (!match) return undefined;\n\n // Extract days, hours, minutes, seconds, and milliseconds from the string\n const days = parseInt(match[1], 10) || 0;\n const hours = parseInt(match[2], 10) || 0;\n const minutes = parseInt(match[3], 10) || 0;\n const seconds = parseFloat(match[4]) || 0;\n const milliseconds = parseInt(match[5], 10) || 0;\n\n // Calculate the future date based on the current date plus the extracted time\n const resetAt = new Date(now);\n resetAt.setDate(resetAt.getDate() + days);\n resetAt.setHours(resetAt.getHours() + hours);\n resetAt.setMinutes(resetAt.getMinutes() + minutes);\n resetAt.setSeconds(resetAt.getSeconds() + Math.floor(seconds));\n resetAt.setMilliseconds(\n resetAt.getMilliseconds() + (seconds - Math.floor(seconds)) * 1000 + milliseconds\n );\n\n return resetAt;\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 { 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 { EventFilter } from \"./schemas/eventFilter\";\n\n// EventFilter is a recursive type, where the keys are strings and the values are an array of strings, numbers, booleans, or objects.\n// If the values of the array are strings, numbers, or booleans, than we are matching against the value of the payload.\n// If the values of the array are objects, then we are doing content filtering\n// An example would be [{ $endsWith: \".png\" }, { $startsWith: \"images/\" } ]\nexport function eventFilterMatches(payload: any, filter: EventFilter): boolean {\n if (payload === undefined || payload === null) {\n if (Object.entries(filter).length === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n for (const [patternKey, patternValue] of Object.entries(filter)) {\n const payloadValue = payload[patternKey];\n\n if (Array.isArray(patternValue)) {\n if (patternValue.length === 0) {\n continue;\n }\n\n // Check to see if all the items in the array are a string\n if ((patternValue as unknown[]).every((item) => typeof item === \"string\")) {\n if ((patternValue as string[]).includes(payloadValue)) {\n continue;\n }\n\n return false;\n }\n\n // Check to see if all the items in the array are a number\n if ((patternValue as unknown[]).every((item) => typeof item === \"number\")) {\n if ((patternValue as number[]).includes(payloadValue)) {\n continue;\n }\n\n return false;\n }\n\n // Check to see if all the items in the array are a boolean\n if ((patternValue as unknown[]).every((item) => typeof item === \"boolean\")) {\n if ((patternValue as boolean[]).includes(payloadValue)) {\n continue;\n }\n\n return false;\n }\n\n // Now we know that all the items in the array are objects\n const objectArray = patternValue as Exclude<\n typeof patternValue,\n number[] | string[] | boolean[]\n >;\n\n if (!contentFiltersMatches(payloadValue, objectArray)) {\n return false;\n }\n\n continue;\n } else if (typeof patternValue === \"object\") {\n if (Array.isArray(payloadValue)) {\n if (!payloadValue.some((item) => eventFilterMatches(item, patternValue))) {\n return false;\n }\n } else {\n if (!eventFilterMatches(payloadValue, patternValue)) {\n return false;\n }\n }\n }\n }\n return true;\n}\n\ntype ContentFilters = Exclude<EventFilter[string], EventFilter | string[] | number[] | boolean[]>;\n\nfunction contentFiltersMatches(actualValue: any, contentFilters: ContentFilters): boolean {\n for (const contentFilter of contentFilters) {\n if (typeof contentFilter === \"object\") {\n const [key, value] = Object.entries(contentFilter)[0];\n\n if (!contentFilterMatches(actualValue, contentFilter)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction contentFilterMatches(actualValue: any, contentFilter: ContentFilters[number]): boolean {\n if (\"$endsWith\" in contentFilter) {\n if (typeof actualValue !== \"string\") {\n return false;\n }\n\n return actualValue.endsWith(contentFilter.$endsWith);\n }\n\n if (\"$startsWith\" in contentFilter) {\n if (typeof actualValue !== \"string\") {\n return false;\n }\n\n return actualValue.startsWith(contentFilter.$startsWith);\n }\n\n if (\"$anythingBut\" in contentFilter) {\n if (Array.isArray(contentFilter.$anythingBut)) {\n if ((contentFilter.$anythingBut as any[]).includes(actualValue)) {\n return false;\n }\n }\n\n if (contentFilter.$anythingBut === actualValue) {\n return false;\n }\n\n return true;\n }\n\n if (\"$exists\" in contentFilter) {\n if (contentFilter.$exists) {\n return actualValue !== undefined;\n }\n\n return actualValue === undefined;\n }\n\n if (\"$gt\" in contentFilter) {\n if (typeof actualValue !== \"number\") {\n return false;\n }\n\n return actualValue > contentFilter.$gt;\n }\n\n if (\"$lt\" in contentFilter) {\n if (typeof actualValue !== \"number\") {\n return false;\n }\n\n return actualValue < contentFilter.$lt;\n }\n\n if (\"$gte\" in contentFilter) {\n if (typeof actualValue !== \"number\") {\n return false;\n }\n\n return actualValue >= contentFilter.$gte;\n }\n\n if (\"$lte\" in contentFilter) {\n if (typeof actualValue !== \"number\") {\n return false;\n }\n\n return actualValue <= contentFilter.$lte;\n }\n\n if (\"$between\" in contentFilter) {\n if (typeof actualValue !== \"number\") {\n return false;\n }\n\n return actualValue >= contentFilter.$between[0] && actualValue <= contentFilter.$between[1];\n }\n\n if (\"$includes\" in contentFilter) {\n if (Array.isArray(actualValue)) {\n return actualValue.includes(contentFilter.$includes);\n }\n\n return false;\n }\n\n // Use localCompare\n if (\"$ignoreCaseEquals\" in contentFilter) {\n if (typeof actualValue !== \"string\") {\n return false;\n }\n\n return (\n actualValue.localeCompare(contentFilter.$ignoreCaseEquals, undefined, {\n sensitivity: \"accent\",\n }) === 0\n );\n }\n\n if (\"$isNull\" in contentFilter) {\n if (contentFilter.$isNull) {\n return actualValue === null;\n }\n\n return actualValue !== null;\n }\n\n if (\"$not\" in contentFilter) {\n if (Array.isArray(actualValue)) {\n return !actualValue.includes(contentFilter.$not);\n } else if (typeof actualValue === 'number' || typeof actualValue === 'boolean' || typeof actualValue === 'string') {\n return actualValue !== contentFilter.$not;\n }\n\n return false;\n }\n\n return true;\n}\n","export function omit<T extends Record<string, any>, K extends keyof T>(\n obj: T,\n ...keys: K[]\n): Omit<T, K> {\n const result: Record<string, any> = {};\n\n for (const key in obj) {\n if (!keys.includes(key as unknown as K)) {\n result[key] = obj[key];\n }\n }\n\n return result as Omit<T, K>;\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 \"../tasks/taskContextManager\";\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: TracerProvider;\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._spanExporter.forceFlush?.();\n await this._logProvider.forceFlush();\n }\n\n public async shutdown() {\n await this._spanExporter.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 { 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 { taskContextManager } from \"../tasks/taskContextManager\";\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 const result = await taskContextManager.runWith(\n {\n ctx,\n worker,\n },\n async () => {\n this._tracingSDK.asyncResourceDetector.resolveWithAttributes({\n ...taskContextManager.attributes,\n [SemanticInternalAttributes.SDK_VERSION]: this.task.packageVersion,\n [SemanticInternalAttributes.SDK_LANGUAGE]: \"typescript\",\n });\n\n return 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 initOutput = await this.#callTaskInit(parsedPayload, ctx);\n\n const output = await this.#callRun(parsedPayload, 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.attempt.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.attempt.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 return {\n id: execution.attempt.id,\n ok: false,\n error: handleErrorResult.error\n ? parseError(handleErrorResult.error)\n : parseError(runError),\n retry:\n 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.attempt.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 );\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 #callTaskInit(payload: unknown, ctx: TaskRunContext) {\n const initFn = this.task.fns.init;\n\n if (!initFn) {\n return {};\n }\n\n return this._tracer.startActiveSpan(\"init\", async (span) => {\n return await initFn(payload, { ctx });\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 { Attributes, Span } from \"@opentelemetry/api\";\nimport { apiClientManager } from \"../apiClient\";\nimport { OFFLOAD_IO_PACKET_LENGTH_LIMIT, imposeAttributeLimits } from \"../limits\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\nimport { TriggerTracer } from \"../tracer\";\nimport { flattenAttributes } from \"./flattenAttributes\";\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 { 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 if (presignedResponse.ok) {\n const uploadResponse = await fetch(presignedResponse.data.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.data.presignedUrl}: ${uploadResponse.statusText}`\n );\n }\n\n return {\n data: filename,\n dataType: \"application/store\",\n };\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 if (presignedResponse.ok) {\n const response = await fetch(presignedResponse.data.presignedUrl);\n\n if (!response.ok) {\n throw new Error(\n `Failed to import packet ${presignedResponse.data.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\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 return {\n ...flattenAttributes(jsonified, dataKey),\n [dataTypeKey]: \"application/json\",\n };\n } catch {\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 const { deserialize } = await loadSuperJSON();\n\n return await prettyPrintPacket(deserialize(rawData), \"application/json\");\n }\n\n if (dataType === \"application/json\") {\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","{\n \"name\": \"@trigger.dev/core\",\n \"version\": \"3.0.0-beta.3\",\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 \"./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 \"socket.io\": \"^4.7.4\",\n \"socket.io-client\": \"^4.7.4\",\n \"superjson\": \"^2.2.1\",\n \"ulidx\": \"^2.2.1\",\n \"zod\": \"3.22.3\",\n \"zod-error\": \"1.5.0\"\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\": \"^18\",\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 },\n \"engines\": {\n \"node\": \">=18.0.0\"\n }\n}","import { dependencies } from \"../../../package.json\"\n\nexport function detectDependencyVersion(dependency: string): string | undefined {\n return (dependencies as Record<string, string>)[dependency]\n}","import { BatchTriggerTaskRequestBody, TriggerTaskRequestBody } from \"./schemas\";\n\nexport * from \"./schemas\";\nexport * from \"./apiClient\";\nexport * from \"./zodMessageHandler\";\nexport * from \"./zodNamespace\";\nexport * from \"./zodSocket\";\nexport * from \"./zodIpc\";\nexport * from \"./errors\";\nexport * from \"./runtime-api\";\nexport * from \"./logger-api\";\nexport * from \"./clock-api\";\nexport * from \"./types\";\nexport * from \"./limits\";\nexport { SemanticInternalAttributes } from \"./semanticInternalAttributes\";\nexport { iconStringForSeverity } from \"./icons\";\nexport {\n formatDuration,\n formatDurationMilliseconds,\n formatDurationNanoseconds,\n formatDurationInDays,\n nanosecondsToMilliseconds,\n millisecondsToNanoseconds,\n} from \"./utils/durations\";\nexport { getEnvVar } from \"./utils/getEnv\";\n\nexport function parseTriggerTaskRequestBody(body: unknown) {\n return TriggerTaskRequestBody.safeParse(body);\n}\n\nexport function parseBatchTriggerTaskRequestBody(body: unknown) {\n return BatchTriggerTaskRequestBody.safeParse(body);\n}\n\nexport { taskContextManager, TaskContextSpanProcessor } from \"./tasks/taskContextManager\";\nexport type { RuntimeManager } from \"./runtime/manager\";\nexport { DevRuntimeManager } from \"./runtime/devRuntimeManager\";\nexport { ProdRuntimeManager } from \"./runtime/prodRuntimeManager\";\nexport { PreciseWallClock as DurableClock } from \"./clock/preciseWallClock\";\nexport { TriggerTracer } from \"./tracer\";\n\nexport type { TaskLogger, LogLevel } from \"./logger/taskLogger\";\nexport { OtelTaskLogger, logLevels } from \"./logger/taskLogger\";\nexport { ConsoleInterceptor } from \"./consoleInterceptor\";\nexport {\n flattenAttributes,\n unflattenAttributes,\n primitiveValueOrflattenedAttributes,\n} from \"./utils/flattenAttributes\";\nexport {\n defaultRetryOptions,\n defaultFetchRetryOptions,\n calculateNextRetryDelay,\n calculateResetAt,\n} from \"./utils/retries\";\nexport { accessoryAttributes } from \"./utils/styleAttributes\";\nexport { eventFilterMatches } from \"../eventFilterMatches\";\nexport { omit } from \"./utils/omit\";\nexport { TracingSDK, type TracingDiagnosticLogLevel, recordSpanException } from \"./otel\";\nexport { TaskExecutor, type TaskExecutorOptions } from \"./workers/taskExecutor\";\nexport { detectDependencyVersion } from \"./utils/detectDependencyVersion\";\nexport {\n parsePacket,\n stringifyIO,\n prettyPrintPacket,\n createPacketAttributes,\n createPacketAttributesAsJson,\n conditionallyExportPacket,\n conditionallyImportPacket,\n packetRequiresOffloading,\n type IOPacket,\n} from \"./utils/ioSerialization\";\n"]}