trigger.dev 3.0.0-beta.7 → 3.0.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/src/lib/XDGAppPaths.ts","../../../node_modules/.pnpm/xdg-portable@10.6.0/node_modules/src/lib/XDG.ts","../../../node_modules/.pnpm/os-paths@7.4.0/node_modules/src/lib/OSPaths.ts","../../../node_modules/.pnpm/os-paths@7.4.0/node_modules/src/platform-adapters/node.ts","../../../node_modules/.pnpm/os-paths@7.4.0/node_modules/src/mod.cjs.ts","../../../node_modules/.pnpm/xdg-portable@10.6.0/node_modules/src/platform-adapters/node.ts","../../../node_modules/.pnpm/xdg-portable@10.6.0/node_modules/src/mod.cjs.ts","../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/src/platform-adapters/node.ts","../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/src/mod.cjs.ts","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry_operation.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/index.js","../src/cli/index.ts","../src/commands/deploy.ts","../package.json","../src/apiClient.ts","../src/cli/common.ts","../src/telemetry/tracing.ts","../src/utilities/logger.ts","../src/utilities/getEnvironmentVariableFactory.ts","../src/utilities/cliOutput.ts","../src/utilities/configFiles.ts","../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/xdg-app-paths/dist/cjs/esm-wrapper/mod.esm.js","../src/consts.ts","../src/utilities/fileSystem.ts","../src/utilities/taskFiles.ts","../src/utilities/initialBanner.ts","../src/utilities/getVersion.ts","../src/utilities/installPackages.ts","../src/commands/login.ts","../../../node_modules/.pnpm/open@10.0.3/node_modules/open/index.js","../../../node_modules/.pnpm/is-wsl@3.1.0/node_modules/is-wsl/index.js","../../../node_modules/.pnpm/is-inside-container@1.0.0/node_modules/is-inside-container/index.js","../../../node_modules/.pnpm/is-docker@3.0.0/node_modules/is-docker/index.js","../../../node_modules/.pnpm/define-lazy-prop@3.0.0/node_modules/define-lazy-prop/index.js","../../../node_modules/.pnpm/default-browser@5.2.1/node_modules/default-browser/index.js","../../../node_modules/.pnpm/default-browser-id@5.0.0/node_modules/default-browser-id/index.js","../../../node_modules/.pnpm/run-applescript@7.0.0/node_modules/run-applescript/index.js","../../../node_modules/.pnpm/bundle-name@4.1.0/node_modules/bundle-name/index.js","../../../node_modules/.pnpm/default-browser@5.2.1/node_modules/default-browser/windows.js","../../../node_modules/.pnpm/p-retry@6.1.0/node_modules/p-retry/index.js","../../../node_modules/.pnpm/is-network-error@1.0.0/node_modules/is-network-error/index.js","../src/commands/whoami.ts","../src/utilities/session.ts","../src/utilities/build.ts","../src/utilities/deployErrors.ts","../src/utilities/safeJsonParse.ts","../src/commands/dev.tsx","../src/workers/common/errors.ts","../src/workers/dev/backgroundWorker.ts","../src/utilities/runtimeCheck.ts","../src/commands/init.ts","../src/utilities/createFileFromTemplate.ts","../src/utilities/getUserPackageManager.ts","../src/utilities/resolveInternalFilePath.ts","../src/commands/logout.ts","../src/commands/list-profiles.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,"function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n this._timer = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts.slice(0);\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.push(err);\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(0, this._errors.length - 1);\n timeout = this._cachedTimeouts.slice(-1);\n } else {\n return false;\n }\n }\n\n var self = this;\n this._timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n this._timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && (options.forever || options.retries === Infinity),\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","import { Command } from \"commander\";\nimport { configureDeployCommand } from \"../commands/deploy.js\";\nimport { configureDevCommand } from \"../commands/dev.js\";\nimport { configureInitCommand } from \"../commands/init.js\";\nimport { configureLoginCommand } from \"../commands/login.js\";\nimport { configureLogoutCommand } from \"../commands/logout.js\";\nimport { configureWhoamiCommand } from \"../commands/whoami.js\";\nimport { COMMAND_NAME } from \"../consts.js\";\nimport { getVersion } from \"../utilities/getVersion.js\";\nimport { configureListProfilesCommand } from \"../commands/list-profiles.js\";\n\nexport const program = new Command();\n\nprogram\n .name(COMMAND_NAME)\n .description(\"Create, run locally and deploy Trigger.dev background tasks.\")\n .version(getVersion(), \"-v, --version\", \"Display the version number\");\n\nconfigureLoginCommand(program);\nconfigureInitCommand(program);\nconfigureDevCommand(program);\nconfigureDeployCommand(program);\nconfigureWhoamiCommand(program);\nconfigureLogoutCommand(program);\nconfigureListProfilesCommand(program);\n","import { intro, log, outro, spinner } from \"@clack/prompts\";\nimport { depot } from \"@depot/cli\";\nimport { context, trace } from \"@opentelemetry/api\";\nimport {\n ResolvedConfig,\n TaskMetadataFailedToParseData,\n detectDependencyVersion,\n flattenAttributes,\n recordSpanException,\n} from \"@trigger.dev/core/v3\";\nimport chalk from \"chalk\";\nimport { Command, Option as CommandOption } from \"commander\";\nimport { Metafile, build } from \"esbuild\";\nimport { execa } from \"execa\";\nimport { resolve as importResolve } from \"import-meta-resolve\";\nimport { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { copyFile, mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname, join, relative } from \"node:path\";\nimport { setTimeout } from \"node:timers/promises\";\nimport terminalLink from \"terminal-link\";\nimport invariant from \"tiny-invariant\";\nimport { z } from \"zod\";\nimport * as packageJson from \"../../package.json\";\nimport { CliApiClient } from \"../apiClient\";\nimport {\n CommonCommandOptions,\n SkipCommandError,\n SkipLoggingError,\n commonOptions,\n handleTelemetry,\n tracer,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { readConfig } from \"../utilities/configFiles.js\";\nimport { createTempDir, readJSONFile, writeJSONFile } from \"../utilities/fileSystem\";\nimport { printStandloneInitialBanner } from \"../utilities/initialBanner.js\";\nimport {\n detectPackageNameFromImportPath,\n parsePackageName,\n stripWorkspaceFromVersion,\n} from \"../utilities/installPackages\";\nimport { logger } from \"../utilities/logger.js\";\nimport { createTaskFileImports, gatherTaskFiles } from \"../utilities/taskFiles\";\nimport { login } from \"./login\";\n\nimport { Glob } from \"glob\";\nimport type { SetOptional } from \"type-fest\";\nimport { bundleDependenciesPlugin, workerSetupImportConfigPlugin } from \"../utilities/build\";\nimport { chalkError, chalkPurple, chalkWarning } from \"../utilities/cliOutput\";\nimport {\n logESMRequireError,\n logTaskMetadataParseError,\n parseBuildErrorStack,\n parseNpmInstallError,\n} from \"../utilities/deployErrors\";\nimport { safeJsonParse } from \"../utilities/safeJsonParse\";\n\nconst DeployCommandOptions = CommonCommandOptions.extend({\n skipTypecheck: z.boolean().default(false),\n skipDeploy: z.boolean().default(false),\n ignoreEnvVarCheck: z.boolean().default(false),\n env: z.enum([\"prod\", \"staging\"]),\n loadImage: z.boolean().default(false),\n buildPlatform: z.enum([\"linux/amd64\", \"linux/arm64\"]).default(\"linux/amd64\"),\n selfHosted: z.boolean().default(false),\n registry: z.string().optional(),\n push: z.boolean().default(false),\n config: z.string().optional(),\n projectRef: z.string().optional(),\n outputMetafile: z.string().optional(),\n apiUrl: z.string().optional(),\n});\n\ntype DeployCommandOptions = z.infer<typeof DeployCommandOptions>;\n\nexport function configureDeployCommand(program: Command) {\n return commonOptions(\n program\n .command(\"deploy\")\n .description(\"Deploy your Trigger.dev v3 project to the cloud.\")\n .argument(\"[path]\", \"The path to the project\", \".\")\n .option(\n \"-e, --env <env>\",\n \"Deploy to a specific environment (currently only prod and staging are supported)\",\n \"prod\"\n )\n .option(\"--skip-typecheck\", \"Whether to skip the pre-build typecheck\")\n .option(\n \"--ignore-env-var-check\",\n \"Detected missing environment variables won't block deployment\"\n )\n .option(\"-c, --config <config file>\", \"The name of the config file, found at [path]\")\n .option(\n \"-p, --project-ref <project ref>\",\n \"The project ref. Required if there is no config file.\"\n )\n )\n .addOption(\n new CommandOption(\n \"--self-hosted\",\n \"Build and load the image using your local Docker. Use the --registry option to specify the registry to push the image to when using --self-hosted, or just use --push-image to push to the default registry.\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--push\",\n \"When using the --self-hosted flag, push the image to the default registry. (defaults to false when not using --registry)\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--registry <registry>\",\n \"The registry to push the image to when using --self-hosted\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--tag <tag>\",\n \"(Coming soon) Specify the tag to use when pushing the image to the registry\"\n ).hideHelp()\n )\n .addOption(new CommandOption(\"-D, --skip-deploy\", \"Skip deploying the image\").hideHelp())\n .addOption(\n new CommandOption(\"--load-image\", \"Load the built image into your local docker\").hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--build-platform <platform>\",\n \"The platform to build the deployment image for\"\n )\n .default(\"linux/amd64\")\n .hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--output-metafile <path>\",\n \"If provided, will save the esbuild metafile for the build to the specified path\"\n ).hideHelp()\n )\n .action(async (path, options) => {\n await handleTelemetry(async () => {\n await printStandloneInitialBanner(true);\n await deployCommand(path, options);\n });\n });\n}\n\nexport async function deployCommand(dir: string, options: unknown) {\n return await wrapCommandAction(\"deployCommand\", DeployCommandOptions, options, async (opts) => {\n return await _deployCommand(dir, opts);\n });\n}\n\nasync function _deployCommand(dir: string, options: DeployCommandOptions) {\n const span = trace.getSpan(context.active());\n\n intro(\"Deploying project\");\n\n const authorization = await login({\n embedded: true,\n defaultApiUrl: options.apiUrl,\n profile: options.profile,\n });\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n throw new Error(\n `Failed to connect to ${authorization.auth?.apiUrl}. Are you sure it's the correct URL?`\n );\n } else {\n throw new Error(\"You must login first. Use `trigger.dev login` to login.\");\n }\n }\n\n span?.setAttributes({\n \"cli.userId\": authorization.userId,\n \"cli.email\": authorization.email,\n \"cli.config.apiUrl\": authorization.auth.apiUrl,\n });\n\n const resolvedConfig = await readConfig(dir, {\n configFile: options.config,\n projectRef: options.projectRef,\n });\n\n logger.debug(\"Resolved config\", { resolvedConfig });\n\n span?.setAttributes({\n \"resolvedConfig.status\": resolvedConfig.status,\n \"resolvedConfig.path\": resolvedConfig.status === \"file\" ? resolvedConfig.path : undefined,\n \"resolvedConfig.config.project\": resolvedConfig.config.project,\n \"resolvedConfig.config.projectDir\": resolvedConfig.config.projectDir,\n \"resolvedConfig.config.triggerUrl\": resolvedConfig.config.triggerUrl,\n \"resolvedConfig.config.triggerDirectories\": resolvedConfig.config.triggerDirectories,\n ...flattenAttributes(resolvedConfig.config.retries, \"resolvedConfig.config.retries\"),\n });\n\n const apiClient = new CliApiClient(authorization.auth.apiUrl, authorization.auth.accessToken);\n\n const deploymentEnv = await apiClient.getProjectEnv({\n projectRef: resolvedConfig.config.project,\n env: options.env,\n });\n\n if (!deploymentEnv.success) {\n throw new Error(deploymentEnv.error);\n }\n\n const environmentClient = new CliApiClient(authorization.auth.apiUrl, deploymentEnv.data.apiKey);\n\n log.step(\n `Preparing to deploy \"${deploymentEnv.data.name}\" (${resolvedConfig.config.project}) to ${options.env}`\n );\n\n // Step 1: Build the project into a temporary directory\n const compilation = await compileProject(\n resolvedConfig.config,\n options,\n resolvedConfig.status === \"file\" ? resolvedConfig.path : undefined\n );\n\n logger.debug(\"Compilation result\", { compilation });\n\n if (compilation.envVars.length > 0) {\n await checkEnvVars(\n compilation.envVars ?? [],\n resolvedConfig.config,\n options,\n environmentClient,\n authorization.dashboardUrl\n );\n }\n\n // Step 2: Initialize a deployment on the server (response will have everything we need to build an image)\n const deploymentResponse = await environmentClient.initializeDeployment({\n contentHash: compilation.contentHash,\n userId: authorization.userId,\n });\n\n if (!deploymentResponse.success) {\n throw new Error(`Failed to start deployment: ${deploymentResponse.error}`);\n }\n\n // If the deployment doesn't have any externalBuildData, then we can't use the remote image builder\n // TODO: handle this and allow the user to the build and push the image themselves\n if (!deploymentResponse.data.externalBuildData && !options.selfHosted) {\n throw new Error(\n `Failed to start deployment, as your instance of trigger.dev does not support hosting. To deploy this project, you must use the --self-hosted flag to build and push the image yourself.`\n );\n }\n\n const version = deploymentResponse.data.version;\n\n const deploymentSpinner = spinner();\n\n deploymentSpinner.start(`Deploying version ${version}`);\n const selfHostedRegistryHost = deploymentResponse.data.registryHost ?? options.registry;\n const registryHost = selfHostedRegistryHost ?? \"registry.trigger.dev\";\n\n const buildImage = async () => {\n if (options.selfHosted) {\n return buildAndPushSelfHostedImage({\n registryHost: selfHostedRegistryHost,\n imageTag: deploymentResponse.data.imageTag,\n cwd: compilation.path,\n projectId: resolvedConfig.config.project,\n deploymentId: deploymentResponse.data.id,\n deploymentVersion: version,\n contentHash: deploymentResponse.data.contentHash,\n projectRef: resolvedConfig.config.project,\n buildPlatform: options.buildPlatform,\n pushImage: options.push,\n selfHostedRegistry: !!options.registry,\n });\n }\n\n if (!deploymentResponse.data.externalBuildData) {\n throw new Error(\n \"Failed to initialize deployment. The deployment does not have any external build data. To deploy this project, you must use the --self-hosted flag to build and push the image yourself.\"\n );\n }\n\n return buildAndPushImage(\n {\n registryHost,\n auth: authorization.auth.accessToken,\n imageTag: deploymentResponse.data.imageTag,\n buildId: deploymentResponse.data.externalBuildData.buildId,\n buildToken: deploymentResponse.data.externalBuildData.buildToken,\n buildProjectId: deploymentResponse.data.externalBuildData.projectId,\n cwd: compilation.path,\n projectId: resolvedConfig.config.project,\n deploymentId: deploymentResponse.data.id,\n deploymentVersion: deploymentResponse.data.version,\n contentHash: deploymentResponse.data.contentHash,\n projectRef: resolvedConfig.config.project,\n loadImage: options.loadImage,\n buildPlatform: options.buildPlatform,\n },\n deploymentSpinner\n );\n };\n\n const image = await buildImage();\n\n if (!image.ok) {\n deploymentSpinner.stop(`Failed to build project.`);\n\n // If there are logs, let's write it out to a temporary file and include the path in the error message\n if (image.logs.trim() !== \"\") {\n const logPath = join(await createTempDir(), `build-${deploymentResponse.data.shortCode}.log`);\n\n await writeFile(logPath, image.logs);\n\n logger.log(\n `${chalkError(\"X Error:\")} ${image.error}. Full build logs have been saved to ${logPath})`\n );\n } else {\n logger.log(`${chalkError(\"X Error:\")} ${image.error}.`);\n }\n\n throw new SkipLoggingError(`Failed to build project image: ${image.error}`);\n }\n\n const imageReference = options.selfHosted\n ? `${selfHostedRegistryHost ? `${selfHostedRegistryHost}/` : \"\"}${image.image}${\n image.digest ? `@${image.digest}` : \"\"\n }`\n : `${registryHost}/${image.image}${image.digest ? `@${image.digest}` : \"\"}`;\n\n span?.setAttributes({\n \"image.reference\": imageReference,\n });\n\n if (options.skipDeploy) {\n deploymentSpinner.stop(\n `Project image built: ${imageReference}. Skipping deployment as requested`\n );\n\n throw new SkipCommandError(\"Skipping deployment as requested\");\n }\n\n deploymentSpinner.message(\n `${deploymentResponse.data.version} image built, detecting deployed tasks`\n );\n\n logger.debug(`Start indexing image ${imageReference}`);\n\n const startIndexingResponse = await environmentClient.startDeploymentIndexing(\n deploymentResponse.data.id,\n {\n imageReference,\n }\n );\n\n if (!startIndexingResponse.success) {\n deploymentSpinner.stop(`Failed to start indexing: ${startIndexingResponse.error}`);\n\n throw new SkipLoggingError(`Failed to start indexing: ${startIndexingResponse.error}`);\n }\n\n const finishedDeployment = await waitForDeploymentToFinish(\n deploymentResponse.data.id,\n environmentClient\n );\n\n if (!finishedDeployment) {\n deploymentSpinner.stop(`Deployment failed to complete`);\n\n throw new SkipLoggingError(\"Deployment failed to complete: unknown issue\");\n }\n\n if (typeof finishedDeployment === \"string\") {\n deploymentSpinner.stop(`Deployment failed to complete: ${finishedDeployment}`);\n\n throw new SkipLoggingError(`Deployment failed to complete: ${finishedDeployment}`);\n }\n\n const deploymentLink = terminalLink(\n \"View deployment\",\n `${authorization.dashboardUrl}/projects/v3/${resolvedConfig.config.project}/deployments/${finishedDeployment.shortCode}`\n );\n\n switch (finishedDeployment.status) {\n case \"DEPLOYED\": {\n deploymentSpinner.stop(\"Deployment completed\");\n\n const taskCount = finishedDeployment.worker?.tasks.length ?? 0;\n\n if (taskCount === 0) {\n outro(\n `Version ${version} deployed with no detected tasks. Please make sure you are exporting tasks in your project. ${deploymentLink}`\n );\n } else {\n outro(\n `Version ${version} deployed with ${taskCount} detected task${\n taskCount === 1 ? \"\" : \"s\"\n } ${deploymentLink}`\n );\n }\n\n break;\n }\n case \"FAILED\": {\n if (finishedDeployment.errorData) {\n if (finishedDeployment.errorData.name === \"TaskMetadataParseError\") {\n const errorJson = safeJsonParse(finishedDeployment.errorData.stack);\n\n if (errorJson) {\n const parsedError = TaskMetadataFailedToParseData.safeParse(errorJson);\n\n if (parsedError.success) {\n deploymentSpinner.stop(`Deployment encountered an error. ${deploymentLink}`);\n\n logTaskMetadataParseError(parsedError.data.zodIssues, parsedError.data.tasks);\n\n throw new SkipLoggingError(\n `Deployment encountered an error: ${finishedDeployment.errorData.name}`\n );\n }\n }\n }\n\n const parsedError = finishedDeployment.errorData.stack\n ? parseBuildErrorStack(finishedDeployment.errorData)\n : finishedDeployment.errorData.message;\n\n if (typeof parsedError === \"string\") {\n deploymentSpinner.stop(`Deployment encountered an error. ${deploymentLink}`);\n\n logger.log(`${chalkError(\"X Error:\")} ${parsedError}`);\n } else {\n deploymentSpinner.stop(`Deployment encountered an error. ${deploymentLink}`);\n\n logESMRequireError(parsedError, resolvedConfig);\n }\n\n throw new SkipLoggingError(\n `Deployment encountered an error: ${finishedDeployment.errorData.name}`\n );\n } else {\n deploymentSpinner.stop(\n `Deployment failed with an unknown error. Please contact eric@trigger.dev for help. ${deploymentLink}`\n );\n\n throw new SkipLoggingError(\"Deployment failed with an unknown error\");\n }\n }\n case \"CANCELED\": {\n deploymentSpinner.stop(`Deployment was canceled. ${deploymentLink}`);\n\n throw new SkipLoggingError(\"Deployment was canceled\");\n }\n case \"TIMED_OUT\": {\n deploymentSpinner.stop(`Deployment timed out. ${deploymentLink}`);\n\n throw new SkipLoggingError(\"Deployment timed out\");\n }\n }\n}\n\nasync function checkEnvVars(\n envVars: string[],\n config: ResolvedConfig,\n options: DeployCommandOptions,\n environmentClient: CliApiClient,\n apiUrl: string\n) {\n return await tracer.startActiveSpan(\"detectEnvVars\", async (span) => {\n try {\n span.setAttribute(\"envVars.check\", envVars);\n\n const environmentVariablesSpinner = spinner();\n\n environmentVariablesSpinner.start(\"Checking environment variables\");\n\n const environmentVariables = await environmentClient.getEnvironmentVariables(config.project);\n\n if (!environmentVariables.success) {\n environmentVariablesSpinner.stop(`Failed to fetch environment variables, skipping check`);\n } else {\n // Check to see if all the environment variables in the compilation exist\n const missingEnvironmentVariables = envVars.filter(\n (envVar) => environmentVariables.data.variables[envVar] === undefined\n );\n\n if (missingEnvironmentVariables.length > 0) {\n environmentVariablesSpinner.stop(\n `Found missing env vars in ${options.env}: ${arrayToSentence(\n missingEnvironmentVariables\n )}. ${\n options.ignoreEnvVarCheck\n ? \"Continuing deployment because of --ignore-env-var-check. \"\n : \"Aborting deployment. \"\n }${chalk.bgBlueBright(\n terminalLink(\n \"Manage env vars\",\n `${apiUrl}/projects/v3/${config.project}/environment-variables`\n )\n )}`\n );\n\n span.setAttributes({\n \"envVars.missing\": missingEnvironmentVariables,\n });\n\n if (!options.ignoreEnvVarCheck) {\n throw new SkipLoggingError(\"Found missing environment variables\");\n } else {\n span.end();\n return;\n }\n }\n\n environmentVariablesSpinner.stop(`Environment variable check passed`);\n }\n\n span.end();\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n throw e;\n }\n });\n}\n\n// Poll every 1 second for the deployment to finish\nasync function waitForDeploymentToFinish(\n deploymentId: string,\n client: CliApiClient,\n timeoutInSeconds: number = 60\n) {\n return tracer.startActiveSpan(\"waitForDeploymentToFinish\", async (span) => {\n try {\n const start = Date.now();\n let attempts = 0;\n\n while (true) {\n if (Date.now() - start > timeoutInSeconds * 1000) {\n span.recordException(new Error(\"Deployment timed out\"));\n span.end();\n return;\n }\n\n const deployment = await client.getDeployment(deploymentId);\n\n attempts++;\n\n if (!deployment.success) {\n throw new Error(deployment.error);\n }\n\n logger.debug(`Deployment status: ${deployment.data.status}`);\n\n if (\n deployment.data.status === \"DEPLOYED\" ||\n deployment.data.status === \"FAILED\" ||\n deployment.data.status === \"CANCELED\" ||\n deployment.data.status === \"TIMED_OUT\"\n ) {\n span.setAttributes({\n \"deployment.status\": deployment.data.status,\n \"deployment.attempts\": attempts,\n });\n\n span.end();\n\n return deployment.data;\n }\n\n await setTimeout(1000);\n }\n } catch (error) {\n recordSpanException(span, error);\n span.end();\n\n return error instanceof Error ? error.message : JSON.stringify(error);\n }\n });\n}\n\ntype BuildAndPushImageOptions = {\n registryHost: string;\n auth: string;\n imageTag: string;\n buildId: string;\n buildToken: string;\n buildProjectId: string;\n cwd: string;\n projectId: string;\n deploymentId: string;\n deploymentVersion: string;\n contentHash: string;\n projectRef: string;\n loadImage: boolean;\n buildPlatform: string;\n};\n\ntype BuildAndPushImageResults =\n | {\n ok: true;\n image: string;\n logs: string;\n digest?: string;\n }\n | {\n ok: false;\n error: string;\n logs: string;\n };\n\nasync function buildAndPushImage(\n options: BuildAndPushImageOptions,\n updater: ReturnType<typeof spinner>\n): Promise<BuildAndPushImageResults> {\n return tracer.startActiveSpan(\"buildAndPushImage\", async (span) => {\n span.setAttributes({\n \"options.registryHost\": options.registryHost,\n \"options.imageTag\": options.imageTag,\n \"options.buildPlatform\": options.buildPlatform,\n \"options.projectId\": options.projectId,\n \"options.deploymentId\": options.deploymentId,\n \"options.deploymentVersion\": options.deploymentVersion,\n \"options.contentHash\": options.contentHash,\n \"options.projectRef\": options.projectRef,\n \"options.loadImage\": options.loadImage,\n });\n\n // Step 3: Ensure we are \"logged in\" to our registry by writing to $HOME/.docker/config.json\n // TODO: make sure this works on windows\n const dockerConfigDir = await ensureLoggedIntoDockerRegistry(options.registryHost, {\n username: \"trigger\",\n password: options.auth,\n });\n\n const args = [\n \"build\",\n \"-f\",\n \"Containerfile\",\n \"--platform\",\n options.buildPlatform,\n \"--provenance\",\n \"false\",\n \"--build-arg\",\n `TRIGGER_PROJECT_ID=${options.projectId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_ID=${options.deploymentId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_VERSION=${options.deploymentVersion}`,\n \"--build-arg\",\n `TRIGGER_CONTENT_HASH=${options.contentHash}`,\n \"--build-arg\",\n `TRIGGER_PROJECT_REF=${options.projectRef}`,\n \"-t\",\n `${options.registryHost}/${options.imageTag}`,\n \".\",\n \"--push\",\n options.loadImage ? \"--load\" : undefined,\n ].filter(Boolean) as string[];\n\n logger.debug(`depot ${args.join(\" \")}`);\n\n span.setAttribute(\"depot.command\", `depot ${args.join(\" \")}`);\n\n // Step 4: Build and push the image\n const childProcess = depot(args, {\n cwd: options.cwd,\n env: {\n DEPOT_BUILD_ID: options.buildId,\n DEPOT_TOKEN: options.buildToken,\n DEPOT_PROJECT_ID: options.buildProjectId,\n DEPOT_NO_SUMMARY_LINK: \"1\",\n DEPOT_NO_UPDATE_NOTIFIER: \"1\",\n DOCKER_CONFIG: dockerConfigDir,\n },\n });\n\n const errors: string[] = [];\n\n try {\n const processCode = await new Promise<number | null>((res, rej) => {\n // For some reason everything is output on stderr, not stdout\n childProcess.stderr?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n errors.push(text);\n logger.debug(text);\n });\n\n childProcess.on(\"error\", (e) => rej(e));\n childProcess.on(\"close\", (code) => res(code));\n });\n\n const logs = extractLogs(errors);\n\n if (processCode !== 0) {\n return {\n ok: false as const,\n error: `Error building image`,\n logs,\n };\n }\n\n const digest = extractImageDigest(errors);\n\n span.setAttributes({\n \"image.digest\": digest,\n });\n\n span.end();\n\n return {\n ok: true as const,\n image: options.imageTag,\n logs,\n digest,\n };\n } catch (e) {\n recordSpanException(span, e);\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : JSON.stringify(e),\n logs: extractLogs(errors),\n };\n }\n });\n}\n\ntype BuildAndPushSelfHostedImageOptions = SetOptional<\n Omit<\n BuildAndPushImageOptions,\n \"buildId\" | \"buildToken\" | \"buildProjectId\" | \"auth\" | \"loadImage\"\n >,\n \"registryHost\"\n> & {\n pushImage: boolean;\n selfHostedRegistry: boolean;\n};\n\nasync function buildAndPushSelfHostedImage(\n options: BuildAndPushSelfHostedImageOptions\n): Promise<BuildAndPushImageResults> {\n return await tracer.startActiveSpan(\"buildAndPushSelfHostedImage\", async (span) => {\n span.setAttributes({\n \"options.imageTag\": options.imageTag,\n \"options.buildPlatform\": options.buildPlatform,\n \"options.projectId\": options.projectId,\n \"options.deploymentId\": options.deploymentId,\n \"options.deploymentVersion\": options.deploymentVersion,\n \"options.contentHash\": options.contentHash,\n \"options.projectRef\": options.projectRef,\n });\n\n const imageRef = `${options.registryHost ? `${options.registryHost}/` : \"\"}${options.imageTag}`;\n\n const buildArgs = [\n \"build\",\n \"-f\",\n \"Containerfile\",\n \"--platform\",\n options.buildPlatform,\n \"--build-arg\",\n `TRIGGER_PROJECT_ID=${options.projectId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_ID=${options.deploymentId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_VERSION=${options.deploymentVersion}`,\n \"--build-arg\",\n `TRIGGER_CONTENT_HASH=${options.contentHash}`,\n \"--build-arg\",\n `TRIGGER_PROJECT_REF=${options.projectRef}`,\n \"-t\",\n imageRef,\n \".\", // The build context\n ].filter(Boolean) as string[];\n\n logger.debug(`docker ${buildArgs.join(\" \")}`);\n\n span.setAttribute(\"docker.command.build\", `docker ${buildArgs.join(\" \")}`);\n\n // Build the image\n const buildProcess = execa(\"docker\", buildArgs, {\n cwd: options.cwd,\n });\n\n const errors: string[] = [];\n let digest: string | undefined;\n\n try {\n const processCode = await new Promise<number | null>((res, rej) => {\n // For some reason everything is output on stderr, not stdout\n buildProcess.stderr?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n errors.push(text);\n logger.debug(text);\n });\n\n buildProcess.on(\"error\", (e) => rej(e));\n buildProcess.on(\"close\", (code) => res(code));\n });\n\n if (processCode !== 0) {\n return {\n ok: false as const,\n error: \"Error building image\",\n logs: extractLogs(errors),\n };\n }\n\n digest = extractImageDigest(errors);\n\n span.setAttributes({\n \"image.digest\": digest,\n });\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : JSON.stringify(e),\n logs: extractLogs(errors),\n };\n }\n\n const pushArgs = [\"push\", imageRef].filter(Boolean) as string[];\n\n logger.debug(`docker ${pushArgs.join(\" \")}`);\n\n span.setAttribute(\"docker.command.push\", `docker ${pushArgs.join(\" \")}`);\n\n if (options.selfHostedRegistry || options.pushImage) {\n // Push the image\n const pushProcess = execa(\"docker\", pushArgs, {\n cwd: options.cwd,\n });\n\n try {\n const processCode = await new Promise<number | null>((res, rej) => {\n pushProcess.stdout?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n logger.debug(text);\n });\n\n pushProcess.stderr?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n logger.debug(text);\n });\n\n pushProcess.on(\"error\", (e) => rej(e));\n pushProcess.on(\"close\", (code) => res(code));\n });\n\n if (processCode !== 0) {\n return {\n ok: false as const,\n error: \"Error pushing image\",\n logs: extractLogs(errors),\n };\n }\n\n span.end();\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : JSON.stringify(e),\n logs: extractLogs(errors),\n };\n }\n }\n\n span.end();\n\n return {\n ok: true as const,\n image: options.imageTag,\n digest,\n logs: extractLogs(errors),\n };\n });\n}\n\nfunction extractImageDigest(outputs: string[]) {\n const imageDigestRegex = /sha256:[a-f0-9]{64}/;\n\n for (const line of outputs) {\n if (line.includes(\"pushing manifest\")) {\n const imageDigestMatch = line.match(imageDigestRegex);\n if (imageDigestMatch) {\n return imageDigestMatch[0];\n }\n }\n }\n}\n\nfunction extractLogs(outputs: string[]) {\n // Remove empty lines\n const cleanedOutputs = outputs.map((line) => line.trim()).filter((line) => line !== \"\");\n\n return cleanedOutputs.map((line) => line.trim()).join(\"\\n\");\n}\n\nasync function compileProject(\n config: ResolvedConfig,\n options: DeployCommandOptions,\n configPath?: string\n) {\n return await tracer.startActiveSpan(\"compileProject\", async (span) => {\n try {\n if (!options.skipTypecheck) {\n const typecheck = await typecheckProject(config, options);\n\n if (!typecheck) {\n throw new Error(\"Typecheck failed, aborting deployment\");\n }\n }\n\n const compileSpinner = spinner();\n compileSpinner.start(`Building project in ${config.projectDir}`);\n\n const taskFiles = await gatherTaskFiles(config);\n const workerFacade = readFileSync(\n new URL(importResolve(\"./workers/prod/worker-facade.js\", import.meta.url)).href.replace(\n \"file://\",\n \"\"\n ),\n \"utf-8\"\n );\n\n const workerSetupPath = new URL(\n importResolve(\"./workers/prod/worker-setup.js\", import.meta.url)\n ).href.replace(\"file://\", \"\");\n\n let workerContents = workerFacade\n .replace(\"__TASKS__\", createTaskFileImports(taskFiles))\n .replace(\"__WORKER_SETUP__\", `import { tracingSDK } from \"${workerSetupPath}\";`);\n\n if (configPath) {\n logger.debug(\"Importing project config from\", { configPath });\n\n workerContents = workerContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `import * as importedConfigExports from \"${configPath}\"; const importedConfig = importedConfigExports.config; const handleError = importedConfigExports.handleError;`\n );\n } else {\n workerContents = workerContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `const importedConfig = undefined; const handleError = undefined;`\n );\n }\n\n const result = await build({\n stdin: {\n contents: workerContents,\n resolveDir: process.cwd(),\n sourcefile: \"__entryPoint.ts\",\n },\n bundle: true,\n metafile: true,\n write: false,\n minify: false,\n sourcemap: \"external\", // does not set the //# sourceMappingURL= comment in the file, we handle it ourselves\n logLevel: \"error\",\n platform: \"node\",\n format: \"cjs\", // This is needed to support opentelemetry instrumentation that uses module patching\n target: [\"node18\", \"es2020\"],\n outdir: \"out\",\n define: {\n TRIGGER_API_URL: `\"${config.triggerUrl}\"`,\n __PROJECT_CONFIG__: JSON.stringify(config),\n },\n plugins: [\n bundleDependenciesPlugin(\n \"workerFacade\",\n config.dependenciesToBundle,\n config.tsconfigPath\n ),\n workerSetupImportConfigPlugin(configPath),\n ],\n });\n\n if (result.errors.length > 0) {\n compileSpinner.stop(\"Build failed, aborting deployment\");\n\n span.setAttributes({\n \"build.workerErrors\": result.errors.map(\n (error) => `Error: ${error.text} at ${error.location?.file}`\n ),\n });\n\n throw new Error(\"Build failed, aborting deployment\");\n }\n\n if (options.outputMetafile) {\n await writeJSONFile(join(options.outputMetafile, \"worker.json\"), result.metafile);\n }\n\n const entryPointContents = readFileSync(\n new URL(importResolve(\"./workers/prod/entry-point.js\", import.meta.url)).href.replace(\n \"file://\",\n \"\"\n ),\n \"utf-8\"\n );\n\n const entryPointResult = await build({\n stdin: {\n contents: entryPointContents,\n resolveDir: process.cwd(),\n sourcefile: \"index.ts\",\n },\n bundle: true,\n metafile: true,\n write: false,\n minify: false,\n sourcemap: false,\n logLevel: \"error\",\n platform: \"node\",\n packages: \"external\",\n format: \"cjs\", // This is needed to support opentelemetry instrumentation that uses module patching\n target: [\"node18\", \"es2020\"],\n outdir: \"out\",\n define: {\n __PROJECT_CONFIG__: JSON.stringify(config),\n },\n plugins: [\n bundleDependenciesPlugin(\n \"entryPoint.ts\",\n config.dependenciesToBundle,\n config.tsconfigPath\n ),\n ],\n });\n\n if (entryPointResult.errors.length > 0) {\n compileSpinner.stop(\"Build failed, aborting deployment\");\n\n span.setAttributes({\n \"build.entryPointErrors\": entryPointResult.errors.map(\n (error) => `Error: ${error.text} at ${error.location?.file}`\n ),\n });\n\n throw new Error(\"Build failed, aborting deployment\");\n }\n\n if (options.outputMetafile) {\n await writeJSONFile(\n join(options.outputMetafile, \"entry-point.json\"),\n entryPointResult.metafile\n );\n }\n\n // Create a tmp directory to store the build\n const tempDir = await createTempDir();\n\n logger.debug(`Writing compiled files to ${tempDir}`);\n\n // Get the metaOutput for the result build\n const metaOutput = result.metafile!.outputs[join(\"out\", \"stdin.js\")];\n\n invariant(metaOutput, \"Meta output for the result build is missing\");\n\n // Get the metaOutput for the entryPoint build\n const entryPointMetaOutput = entryPointResult.metafile!.outputs[join(\"out\", \"stdin.js\")];\n\n invariant(entryPointMetaOutput, \"Meta output for the entryPoint build is missing\");\n\n // Get the outputFile and the sourceMapFile for the result build\n const workerOutputFile = result.outputFiles.find(\n (file) => file.path === join(config.projectDir, \"out\", \"stdin.js\")\n );\n\n invariant(workerOutputFile, \"Output file for the result build is missing\");\n\n const workerSourcemapFile = result.outputFiles.find(\n (file) => file.path === join(config.projectDir, \"out\", \"stdin.js.map\")\n );\n\n invariant(workerSourcemapFile, \"Sourcemap file for the result build is missing\");\n\n // Get the outputFile for the entryPoint build\n\n const entryPointOutputFile = entryPointResult.outputFiles.find(\n (file) => file.path === join(config.projectDir, \"out\", \"stdin.js\")\n );\n\n invariant(entryPointOutputFile, \"Output file for the entryPoint build is missing\");\n\n // Save the result outputFile to /tmp/dir/worker.js (and make sure to map the sourceMap to the correct location in the file)\n await writeFile(\n join(tempDir, \"worker.js\"),\n `${workerOutputFile.text}\\n//# sourceMappingURL=worker.js.map`\n );\n // Save the sourceMapFile to /tmp/dir/worker.js.map\n await writeFile(join(tempDir, \"worker.js.map\"), workerSourcemapFile.text);\n // Save the entryPoint outputFile to /tmp/dir/index.js\n await writeFile(join(tempDir, \"index.js\"), entryPointOutputFile.text);\n\n logger.debug(\"Getting the imports for the worker and entryPoint builds\", {\n workerImports: metaOutput.imports,\n entryPointImports: entryPointMetaOutput.imports,\n });\n\n // Get all the required dependencies from the metaOutputs and save them to /tmp/dir/package.json\n const allImports = [...metaOutput.imports, ...entryPointMetaOutput.imports];\n\n const externalPackageJson = await readJSONFile(join(config.projectDir, \"package.json\"));\n\n const dependencies = await gatherRequiredDependencies(\n allImports,\n config,\n externalPackageJson\n );\n\n const packageJsonContents = {\n name: \"trigger-worker\",\n version: \"0.0.0\",\n description: \"\",\n dependencies,\n scripts: {\n postinstall: externalPackageJson?.scripts?.postinstall,\n },\n };\n\n await writeJSONFile(join(tempDir, \"package.json\"), packageJsonContents);\n\n await copyAdditionalFiles(config, tempDir);\n\n compileSpinner.stop(\"Project built successfully\");\n\n const resolvingDependenciesResult = await resolveDependencies(\n tempDir,\n packageJsonContents,\n config,\n options\n );\n\n if (!resolvingDependenciesResult) {\n throw new SkipLoggingError(\"Failed to resolve dependencies\");\n }\n\n // Write the Containerfile to /tmp/dir/Containerfile\n const containerFilePath = new URL(\n importResolve(\"./Containerfile.prod\", import.meta.url)\n ).href.replace(\"file://\", \"\");\n // Copy the Containerfile to /tmp/dir/Containerfile\n await copyFile(containerFilePath, join(tempDir, \"Containerfile\"));\n\n const contentHasher = createHash(\"sha256\");\n contentHasher.update(Buffer.from(entryPointOutputFile.text));\n contentHasher.update(Buffer.from(workerOutputFile.text));\n contentHasher.update(Buffer.from(JSON.stringify(dependencies)));\n\n const contentHash = contentHasher.digest(\"hex\");\n\n const workerSetupEnvVars = await findAllEnvironmentVariableReferencesInFile(workerSetupPath);\n\n const workerFacadeEnvVars = findAllEnvironmentVariableReferences(workerContents);\n\n const envVars = findAllEnvironmentVariableReferences(workerOutputFile.text);\n\n // Remove workerFacadeEnvVars and workerSetupEnvVars from envVars\n const finalEnvVars = envVars.filter(\n (envVar) => !workerFacadeEnvVars.includes(envVar) && !workerSetupEnvVars.includes(envVar)\n );\n\n span.setAttributes({\n contentHash: contentHash,\n envVars: finalEnvVars,\n });\n\n span.end();\n\n return { path: tempDir, contentHash, envVars: finalEnvVars };\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n throw e;\n }\n });\n}\n\n// Let's first create a digest from the package.json, and then use that digest to lookup a cached package-lock.json\n// in the `.trigger/cache` directory. If the package-lock.json is found, we'll write it to the project directory\n// If the package-lock.json is not found, we will run `npm install --package-lock-only` and then write the package-lock.json\n// to the project directory, and finally we'll write the digest to the `.trigger/cache` directory with the contents of the package-lock.json\nasync function resolveDependencies(\n projectDir: string,\n packageJsonContents: any,\n config: ResolvedConfig,\n options: DeployCommandOptions\n) {\n return await tracer.startActiveSpan(\"resolveDependencies\", async (span) => {\n const resolvingDepsSpinner = spinner();\n resolvingDepsSpinner.start(\"Resolving dependencies\");\n\n const hasher = createHash(\"sha256\");\n hasher.update(JSON.stringify(packageJsonContents));\n const digest = hasher.digest(\"hex\").slice(0, 16);\n\n const cacheDir = join(config.projectDir, \".trigger\", \"cache\");\n const cachePath = join(cacheDir, `${digest}.json`);\n\n span.setAttributes({\n \"packageJson.digest\": digest,\n \"cache.path\": cachePath,\n ...flattenAttributes(packageJsonContents, \"packageJson.contents\"),\n });\n\n try {\n const cachedPackageLock = await readFile(cachePath, \"utf-8\");\n\n logger.debug(`Using cached package-lock.json for ${digest}`);\n\n await writeFile(join(projectDir, \"package-lock.json\"), cachedPackageLock);\n\n span.setAttributes({\n \"cache.hit\": true,\n });\n\n span.end();\n\n resolvingDepsSpinner.stop(\"Dependencies resolved\");\n\n return true;\n } catch (e) {\n // If the file doesn't exist, we'll continue to the next step\n if (e instanceof Error && \"code\" in e && e.code !== \"ENOENT\") {\n span.recordException(e as Error);\n span.end();\n\n resolvingDepsSpinner.stop(`Failed to resolve dependencies: ${e.message}`);\n\n return false;\n }\n\n span.setAttributes({\n \"cache.hit\": false,\n });\n\n logger.debug(`No cached package-lock.json found for ${digest}`);\n\n try {\n await execa(\"npm\", [\"install\", \"--package-lock-only\", \"--ignore-scripts\", \"--no-audit\"], {\n cwd: projectDir,\n stdio: logger.loggerLevel === \"debug\" ? \"inherit\" : \"pipe\",\n });\n\n const packageLockContents = await readFile(join(projectDir, \"package-lock.json\"), \"utf-8\");\n\n logger.debug(`Writing package-lock.json to cache for ${digest}`);\n\n // Make sure the cache directory exists\n await mkdir(cacheDir, { recursive: true });\n\n // Save the package-lock.json to the cache\n await writeFile(cachePath, packageLockContents);\n\n // Write the package-lock.json to the project directory\n await writeFile(join(projectDir, \"package-lock.json\"), packageLockContents);\n\n span.end();\n\n resolvingDepsSpinner.stop(\"Dependencies resolved\");\n\n return true;\n } catch (installError) {\n recordSpanException(span, installError);\n span.end();\n\n const parsedError = parseNpmInstallError(installError);\n\n if (typeof parsedError === \"string\") {\n resolvingDepsSpinner.stop(`Failed to resolve dependencies: ${parsedError}`);\n } else {\n switch (parsedError.type) {\n case \"package-not-found-error\": {\n resolvingDepsSpinner.stop(`Failed to resolve dependencies`);\n\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not be found in the npm registry.`\n );\n\n break;\n }\n case \"no-matching-version-error\": {\n resolvingDepsSpinner.stop(`Failed to resolve dependencies`);\n\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not resolve because the version doesn't exist`\n );\n\n break;\n }\n }\n }\n\n return false;\n }\n }\n });\n}\n\nasync function typecheckProject(config: ResolvedConfig, options: DeployCommandOptions) {\n return await tracer.startActiveSpan(\"typecheckProject\", async (span) => {\n try {\n const typecheckSpinner = spinner();\n typecheckSpinner.start(\"Typechecking project\");\n\n const tscTypecheck = execa(\"npm\", [\"exec\", \"tsc\", \"--\", \"--noEmit\"], {\n cwd: config.projectDir,\n });\n\n const stdouts: string[] = [];\n const stderrs: string[] = [];\n\n tscTypecheck.stdout?.on(\"data\", (chunk) => stdouts.push(chunk.toString()));\n tscTypecheck.stderr?.on(\"data\", (chunk) => stderrs.push(chunk.toString()));\n\n try {\n await new Promise((resolve, reject) => {\n tscTypecheck.addListener(\"exit\", (code) => (code === 0 ? resolve(code) : reject(code)));\n });\n } catch (error) {\n typecheckSpinner.stop(\n `Typechecking failed, check the logs below to view the issues. To skip typechecking, pass the --skip-typecheck flag`\n );\n\n logger.log(\"\");\n\n for (const stdout of stdouts) {\n logger.log(stdout);\n }\n\n span.recordException(new Error(stdouts.join(\"\\n\")));\n span.end();\n\n return false;\n }\n\n typecheckSpinner.stop(`Typechecking passed with 0 errors`);\n\n span.end();\n return true;\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n return false;\n }\n });\n}\n\n// Returns the dependencies that are required by the output that are found in output and the CLI package dependencies\n// Returns the dependency names and the version to use (taken from the CLI deps package.json)\nasync function gatherRequiredDependencies(\n imports: Metafile[\"outputs\"][string][\"imports\"],\n config: ResolvedConfig,\n projectPackageJson: any\n) {\n const dependencies: Record<string, string> = {};\n\n for (const file of imports) {\n if ((file.kind !== \"require-call\" && file.kind !== \"dynamic-import\") || !file.external) {\n continue;\n }\n\n const packageName = detectPackageNameFromImportPath(file.path);\n\n if (dependencies[packageName]) {\n continue;\n }\n\n const externalDependencyVersion = (projectPackageJson?.dependencies ?? {})[packageName];\n\n if (externalDependencyVersion) {\n dependencies[packageName] = stripWorkspaceFromVersion(externalDependencyVersion);\n continue;\n }\n\n const internalDependencyVersion =\n (packageJson.dependencies as Record<string, string>)[packageName] ??\n detectDependencyVersion(packageName);\n\n if (internalDependencyVersion) {\n dependencies[packageName] = stripWorkspaceFromVersion(internalDependencyVersion);\n }\n }\n\n if (config.additionalPackages) {\n for (const packageName of config.additionalPackages) {\n if (dependencies[packageName]) {\n continue;\n }\n\n const packageParts = parsePackageName(packageName);\n\n if (packageParts.version) {\n dependencies[packageParts.name] = packageParts.version;\n continue;\n } else {\n const externalDependencyVersion = {\n ...projectPackageJson?.devDependencies,\n ...projectPackageJson?.dependencies,\n }[packageName];\n\n if (externalDependencyVersion) {\n dependencies[packageParts.name] = externalDependencyVersion;\n continue;\n } else {\n logger.log(\n `${chalkWarning(\"X Warning:\")} Could not find version for package ${chalkPurple(\n packageName\n )}, add a version specifier to the package name (e.g. ${\n packageParts.name\n }@latest) or add it to your project's package.json`\n );\n }\n }\n }\n }\n\n // Make sure we sort the dependencies by key to ensure consistent hashing\n return Object.fromEntries(Object.entries(dependencies).sort(([a], [b]) => a.localeCompare(b)));\n}\n\nasync function copyAdditionalFiles(config: ResolvedConfig, tempDir: string) {\n const additionalFiles = config.additionalFiles ?? [];\n\n if (additionalFiles.length === 0) {\n return;\n }\n\n return await tracer.startActiveSpan(\n \"copyAdditionalFiles\",\n {\n attributes: {\n \"config.additionalFiles\": additionalFiles,\n },\n },\n async (span) => {\n try {\n logger.debug(`Copying files to ${tempDir}`, {\n additionalFiles,\n });\n\n const glob = new Glob(additionalFiles, {\n withFileTypes: true,\n ignore: [\"node_modules\"],\n cwd: config.projectDir,\n nodir: true,\n });\n\n for await (const file of glob) {\n const relativeDestinationPath = join(\n tempDir,\n relative(config.projectDir, file.fullpath())\n );\n\n logger.debug(`Copying file ${file.fullpath()} to ${relativeDestinationPath}`);\n await mkdir(dirname(relativeDestinationPath), { recursive: true });\n await copyFile(file.fullpath(), relativeDestinationPath);\n }\n\n span.end();\n } catch (error) {\n recordSpanException(span, error);\n\n span.end();\n\n throw error;\n }\n }\n );\n}\n\nasync function ensureLoggedIntoDockerRegistry(\n registryHost: string,\n auth: { username: string; password: string }\n) {\n const tmpDir = await createTempDir();\n // Read the current docker config\n const dockerConfigPath = join(tmpDir, \"config.json\");\n\n await writeJSONFile(dockerConfigPath, {\n auths: {\n [registryHost]: {\n auth: Buffer.from(`${auth.username}:${auth.password}`).toString(\"base64\"),\n },\n },\n });\n\n logger.debug(`Writing docker config to ${dockerConfigPath}`);\n\n return tmpDir;\n}\n\nasync function findAllEnvironmentVariableReferencesInFile(filePath: string) {\n const fileContents = await readFile(filePath, \"utf-8\");\n\n return findAllEnvironmentVariableReferences(fileContents);\n}\n\nconst IGNORED_ENV_VARS = [\"NODE_ENV\", \"SHELL\", \"HOME\", \"PWD\", \"LOGNAME\", \"USER\", \"PATH\", \"DEBUG\"];\n\nfunction findAllEnvironmentVariableReferences(code: string): string[] {\n const regex = /\\bprocess\\.env\\.([a-zA-Z_][a-zA-Z0-9_]*)\\b/g;\n\n const matches = code.matchAll(regex);\n\n const matchesArray = Array.from(matches, (match) => match[1]).filter(Boolean) as string[];\n\n const filteredMatches = matchesArray.filter((match) => !IGNORED_ENV_VARS.includes(match));\n\n // Make sure and remove duplicates\n return Array.from(new Set(filteredMatches));\n}\n\nfunction arrayToSentence(items: string[]): string {\n if (items.length === 1 && typeof items[0] === \"string\") {\n return items[0];\n }\n\n if (items.length === 2) {\n return `${items[0]} and ${items[1]}`;\n }\n\n return `${items.slice(0, -1).join(\", \")}, and ${items[items.length - 1]}`;\n}\n","{\n \"name\": \"trigger.dev\",\n \"version\": \"3.0.0-beta.7\",\n \"description\": \"A Command-Line Interface for Trigger.dev (v3) projects\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/triggerdotdev/trigger.dev.git\",\n \"directory\": \"packages/cli-v3\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"keywords\": [\n \"typescript\",\n \"trigger.dev\",\n \"workflows\",\n \"orchestration\",\n \"events\",\n \"webhooks\",\n \"integrations\",\n \"apis\",\n \"jobs\",\n \"background jobs\",\n \"nextjs\"\n ],\n \"files\": [\n \"dist\"\n ],\n \"type\": \"module\",\n \"exports\": \"./dist/index.js\",\n \"bin\": {\n \"triggerdev\": \"./dist/index.js\"\n },\n \"devDependencies\": {\n \"@trigger.dev/core-apps\": \"workspace:*\",\n \"@trigger.dev/tsconfig\": \"workspace:*\",\n \"@types/gradient-string\": \"^1.1.2\",\n \"@types/jsonlines\": \"^0.1.5\",\n \"@types/mock-fs\": \"^4.13.1\",\n \"@types/node\": \"18\",\n \"@types/object-hash\": \"^3.0.6\",\n \"@types/react\": \"^18.2.48\",\n \"@types/semver\": \"^7.3.13\",\n \"@types/ws\": \"^8.5.3\",\n \"cpy-cli\": \"^5.0.0\",\n \"npm-run-all\": \"^4.1.5\",\n \"npm-watch\": \"^0.11.0\",\n \"open\": \"^10.0.3\",\n \"p-retry\": \"^6.1.0\",\n \"rimraf\": \"^3.0.2\",\n \"tsup\": \"^8.0.1\",\n \"type-fest\": \"^3.6.0\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^0.34.4\",\n \"xdg-app-paths\": \"^8.3.0\"\n },\n \"watch\": {\n \"build:prod-containerfile\": \"src/Containerfile.prod\"\n },\n \"scripts\": {\n \"typecheck\": \"tsc -p tsconfig.check.json\",\n \"build\": \"npm run clean && run-p build:**\",\n \"build:main\": \"tsup\",\n \"build:workers\": \"tsup --config tsup.workers.config.ts\",\n \"build:prod-containerfile\": \"cpy --flat src/Containerfile.prod dist/\",\n \"dev\": \"npm run clean && run-p dev:**\",\n \"dev:main\": \"tsup --watch\",\n \"dev:workers\": \"tsup --config tsup.workers.config.ts --watch\",\n \"dev:prod-containerfile\": \"npm-watch\",\n \"clean\": \"rimraf dist\",\n \"start\": \"node dist/index.js\",\n \"test\": \"vitest\"\n },\n \"dependencies\": {\n \"@clack/prompts\": \"^0.7.0\",\n \"@depot/cli\": \"0.0.1-cli.2.55.0\",\n \"@opentelemetry/api\": \"^1.8.0\",\n \"@opentelemetry/api-logs\": \"^0.49.1\",\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/instrumentation-fetch\": \"^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 \"@trigger.dev/core\": \"workspace:^3.0.0-beta.6\",\n \"@types/degit\": \"^2.8.3\",\n \"chalk\": \"^5.2.0\",\n \"chokidar\": \"^3.5.3\",\n \"cli-table3\": \"^0.6.3\",\n \"commander\": \"^9.4.1\",\n \"degit\": \"^2.8.4\",\n \"dotenv\": \"^16.4.4\",\n \"esbuild\": \"^0.19.11\",\n \"evt\": \"^2.4.13\",\n \"execa\": \"^8.0.0\",\n \"find-up\": \"^7.0.0\",\n \"glob\": \"^10.3.10\",\n \"gradient-string\": \"^2.0.2\",\n \"import-meta-resolve\": \"^4.0.0\",\n \"ink\": \"^4.4.1\",\n \"jsonc-parser\": \"^3.2.1\",\n \"jsonlines\": \"^0.1.1\",\n \"liquidjs\": \"^10.9.2\",\n \"mock-fs\": \"^5.2.0\",\n \"nanoid\": \"^4.0.2\",\n \"node-fetch\": \"^3.3.0\",\n \"npm-check-updates\": \"^16.12.2\",\n \"object-hash\": \"^3.0.0\",\n \"p-debounce\": \"^4.0.0\",\n \"p-throttle\": \"^6.1.0\",\n \"partysocket\": \"^0.0.17\",\n \"proxy-agent\": \"^6.3.0\",\n \"react\": \"^18.2.0\",\n \"react-error-boundary\": \"^4.0.12\",\n \"semver\": \"^7.5.0\",\n \"simple-git\": \"^3.19.0\",\n \"socket.io-client\": \"^4.7.4\",\n \"source-map-support\": \"^0.5.21\",\n \"terminal-link\": \"^3.0.0\",\n \"tiny-invariant\": \"^1.2.0\",\n \"tsconfig-paths\": \"^4.2.0\",\n \"update-check\": \"^1.5.4\",\n \"url\": \"^0.11.1\",\n \"ws\": \"^8.12.0\",\n \"zod\": \"3.22.3\",\n \"zod-validation-error\": \"^1.5.0\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n }\n}\n","import { z } from \"zod\";\nimport {\n CreateAuthorizationCodeResponseSchema,\n GetPersonalAccessTokenResponseSchema,\n WhoAmIResponseSchema,\n CreateBackgroundWorkerRequestBody,\n CreateBackgroundWorkerResponse,\n StartDeploymentIndexingResponseBody,\n GetProjectEnvResponse,\n GetEnvironmentVariablesResponseBody,\n InitializeDeploymentResponseBody,\n InitializeDeploymentRequestBody,\n StartDeploymentIndexingRequestBody,\n GetDeploymentResponseBody,\n GetProjectsResponseBody,\n GetProjectResponseBody,\n} from \"@trigger.dev/core/v3\";\n\nexport class CliApiClient {\n private readonly apiURL: string;\n\n constructor(\n apiURL: string,\n private readonly accessToken?: string\n ) {\n this.apiURL = apiURL.replace(/\\/$/, \"\");\n }\n\n async createAuthorizationCode() {\n return zodfetch(\n CreateAuthorizationCodeResponseSchema,\n `${this.apiURL}/api/v1/authorization-code`,\n {\n method: \"POST\",\n }\n );\n }\n\n async getPersonalAccessToken(authorizationCode: string) {\n return zodfetch(GetPersonalAccessTokenResponseSchema, `${this.apiURL}/api/v1/token`, {\n method: \"POST\",\n body: JSON.stringify({\n authorizationCode,\n }),\n });\n }\n\n async whoAmI() {\n if (!this.accessToken) {\n throw new Error(\"whoAmI: No access token\");\n }\n\n return zodfetch(WhoAmIResponseSchema, `${this.apiURL}/api/v2/whoami`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async getProject(projectRef: string) {\n if (!this.accessToken) {\n throw new Error(\"getProject: No access token\");\n }\n\n return zodfetch(GetProjectResponseBody, `${this.apiURL}/api/v1/projects/${projectRef}`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async getProjects() {\n if (!this.accessToken) {\n throw new Error(\"getProjects: No access token\");\n }\n\n return zodfetch(GetProjectsResponseBody, `${this.apiURL}/api/v1/projects`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async createBackgroundWorker(projectRef: string, body: CreateBackgroundWorkerRequestBody) {\n if (!this.accessToken) {\n throw new Error(\"createBackgroundWorker: No access token\");\n }\n\n return zodfetch(\n CreateBackgroundWorkerResponse,\n `${this.apiURL}/api/v1/projects/${projectRef}/background-workers`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async getProjectEnv({\n projectRef,\n env,\n }: {\n projectRef: string;\n env: \"dev\" | \"prod\" | \"staging\";\n }) {\n if (!this.accessToken) {\n throw new Error(\"getProjectDevEnv: No access token\");\n }\n\n return zodfetch(GetProjectEnvResponse, `${this.apiURL}/api/v1/projects/${projectRef}/${env}`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async getEnvironmentVariables(projectRef: string) {\n if (!this.accessToken) {\n throw new Error(\"getEnvironmentVariables: No access token\");\n }\n\n return zodfetch(\n GetEnvironmentVariablesResponseBody,\n `${this.apiURL}/api/v1/projects/${projectRef}/envvars`,\n {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n }\n );\n }\n\n async initializeDeployment(body: InitializeDeploymentRequestBody) {\n if (!this.accessToken) {\n throw new Error(\"initializeDeployment: No access token\");\n }\n\n return zodfetch(InitializeDeploymentResponseBody, `${this.apiURL}/api/v1/deployments`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async startDeploymentIndexing(deploymentId: string, body: StartDeploymentIndexingRequestBody) {\n if (!this.accessToken) {\n throw new Error(\"startDeploymentIndexing: No access token\");\n }\n\n return zodfetch(\n StartDeploymentIndexingResponseBody,\n `${this.apiURL}/api/v1/deployments/${deploymentId}/start-indexing`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async getDeployment(deploymentId: string) {\n if (!this.accessToken) {\n throw new Error(\"getDeployment: No access token\");\n }\n\n return zodfetch(\n GetDeploymentResponseBody,\n `${this.apiURL}/api/v1/deployments/${deploymentId}`,\n {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n Accept: \"application/json\",\n },\n }\n );\n }\n}\n\ntype ApiResult<TSuccessResult> =\n | { success: true; data: TSuccessResult }\n | {\n success: false;\n error: string;\n };\n\nasync 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 success: 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 { success: false, error: \"Something went wrong\" };\n }\n\n return { success: false, error: body.error };\n }\n\n if (response.status !== 200) {\n return {\n success: 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 { success: true, data: parsedResult.data };\n }\n\n if (\"error\" in jsonBody) {\n return {\n success: false,\n error: typeof jsonBody.error === \"string\" ? jsonBody.error : JSON.stringify(jsonBody.error),\n };\n }\n\n return { success: false, error: parsedResult.error.message };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : JSON.stringify(error),\n };\n }\n}\n","import { flattenAttributes, recordSpanException } from \"@trigger.dev/core/v3\";\nimport { Command } from \"commander\";\nimport { z } from \"zod\";\nimport { getTracer, provider } from \"../telemetry/tracing\";\nimport { fromZodError } from \"zod-validation-error\";\nimport { logger } from \"../utilities/logger\";\nimport { outro } from \"@clack/prompts\";\nimport { chalkError } from \"../utilities/cliOutput\";\n\nexport const CommonCommandOptions = z.object({\n apiUrl: z.string().optional(),\n logLevel: z.enum([\"debug\", \"info\", \"log\", \"warn\", \"error\", \"none\"]).default(\"log\"),\n skipTelemetry: z.boolean().default(false),\n profile: z.string().default(\"default\"),\n});\n\nexport type CommonCommandOptions = z.infer<typeof CommonCommandOptions>;\n\nexport function commonOptions(command: Command) {\n return command\n .option(\"--profile <profile>\", \"The login profile to use\", \"default\")\n .option(\"-a, --api-url <value>\", \"Override the API URL\", \"https://api.trigger.dev\")\n .option(\n \"-l, --log-level <level>\",\n \"The CLI log level to use (debug, info, log, warn, error, none). This does not effect the log level of your trigger.dev tasks.\",\n \"log\"\n )\n .option(\"--skip-telemetry\", \"Opt-out of sending telemetry\");\n}\n\nexport class SkipLoggingError extends Error {}\nexport class SkipCommandError extends Error {}\nexport class OutroCommandError extends SkipCommandError {}\n\nexport async function handleTelemetry(action: () => Promise<void>) {\n try {\n await action();\n\n await provider?.forceFlush();\n } catch (e) {\n await provider?.forceFlush();\n\n process.exitCode = 1;\n }\n}\n\nexport const tracer = getTracer();\n\nexport async function wrapCommandAction<T extends z.AnyZodObject, TResult>(\n name: string,\n schema: T,\n options: unknown,\n action: (opts: z.output<T>) => Promise<TResult>\n): Promise<TResult> {\n return await tracer.startActiveSpan(name, async (span) => {\n try {\n const parsedOptions = schema.safeParse(options);\n\n if (!parsedOptions.success) {\n throw new Error(fromZodError(parsedOptions.error).toString());\n }\n\n span.setAttributes({\n ...flattenAttributes(parsedOptions.data, \"cli.options\"),\n });\n\n logger.loggerLevel = parsedOptions.data.logLevel;\n\n logger.debug(`Running \"${name}\" with the following options`, {\n options: options,\n spanContext: span?.spanContext(),\n });\n\n const result = await action(parsedOptions.data);\n\n span.end();\n\n return result;\n } catch (e) {\n if (e instanceof SkipLoggingError) {\n recordSpanException(span, e);\n } else if (e instanceof OutroCommandError) {\n outro(\"Operation cancelled\");\n } else if (e instanceof SkipCommandError) {\n // do nothing\n } else {\n recordSpanException(span, e);\n\n logger.log(`${chalkError(\"X Error:\")} ${e instanceof Error ? e.message : String(e)}`);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n","import { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-http\";\nimport { registerInstrumentations } from \"@opentelemetry/instrumentation\";\nimport { Resource, detectResourcesSync, processDetectorSync } from \"@opentelemetry/resources\";\nimport { NodeTracerProvider, SimpleSpanProcessor } from \"@opentelemetry/sdk-trace-node\";\nimport { FetchInstrumentation } from \"@opentelemetry/instrumentation-fetch\";\nimport { DiagConsoleLogger, DiagLogLevel, diag, trace } from \"@opentelemetry/api\";\nimport * as packageJson from \"../../package.json\";\n\nfunction initializeTracing(): NodeTracerProvider | undefined {\n if (process.argv.includes(\"--skip-telemetry\") || process.env.TRIGGER_DEV_SKIP_TELEMETRY) {\n return;\n }\n\n if (process.env.OTEL_INTERNAL_DIAG_DEBUG) {\n diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);\n }\n\n const resource = detectResourcesSync({\n detectors: [processDetectorSync],\n }).merge(\n new Resource({\n service: \"trigger.dev cli v3\",\n })\n );\n\n const traceProvider = new NodeTracerProvider({\n forceFlushTimeoutMillis: 500,\n resource,\n spanLimits: {\n attributeCountLimit: 1000,\n attributeValueLengthLimit: 1000,\n eventCountLimit: 100,\n attributePerEventCountLimit: 100,\n linkCountLimit: 10,\n attributePerLinkCountLimit: 100,\n },\n });\n\n const spanExporter = new OTLPTraceExporter({\n url: \"https://otel.baselime.io/v1\",\n timeoutMillis: 500,\n headers: {\n \"x-api-key\": \"e9f963244f8b092850d42e34a5339b2d5e68070b\".split(\"\").reverse().join(\"\"), // this is a joke\n },\n });\n\n const spanProcessor = new SimpleSpanProcessor(spanExporter);\n\n traceProvider.addSpanProcessor(spanProcessor);\n traceProvider.register();\n\n registerInstrumentations({\n instrumentations: [new FetchInstrumentation()],\n });\n\n return traceProvider;\n}\n\nexport const provider = initializeTracing();\n\nexport function getTracer() {\n return trace.getTracer(\"trigger.dev cli\", packageJson.version);\n}\n","// This is a copy of the logger utility from the wrangler repo: https://github.com/cloudflare/workers-sdk/blob/main/packages/wrangler/src/logger.ts\n\nimport { format } from \"node:util\";\nimport chalk from \"chalk\";\nimport CLITable from \"cli-table3\";\nimport { formatMessagesSync } from \"esbuild\";\nimport type { Message } from \"esbuild\";\nimport { getEnvironmentVariableFactory } from \"./getEnvironmentVariableFactory.js\";\nexport const LOGGER_LEVELS = {\n none: -1,\n error: 0,\n warn: 1,\n info: 2,\n log: 3,\n debug: 4,\n} as const;\n\nexport type LoggerLevel = keyof typeof LOGGER_LEVELS;\n\n/** A map from LOGGER_LEVEL to the error `kind` needed by `formatMessagesSync()`. */\nconst LOGGER_LEVEL_FORMAT_TYPE_MAP = {\n error: \"error\",\n warn: \"warning\",\n info: undefined,\n log: undefined,\n debug: undefined,\n} as const;\n\nconst getLogLevelFromEnv = getEnvironmentVariableFactory({\n variableName: \"TRIGGER_LOG_LEVEL\",\n});\n\nfunction getLoggerLevel(): LoggerLevel {\n const fromEnv = getLogLevelFromEnv()?.toLowerCase();\n if (fromEnv !== undefined) {\n if (fromEnv in LOGGER_LEVELS) return fromEnv as LoggerLevel;\n const expected = Object.keys(LOGGER_LEVELS)\n .map((level) => `\"${level}\"`)\n .join(\" | \");\n console.warn(\n `Unrecognised WRANGLER_LOG value ${JSON.stringify(\n fromEnv\n )}, expected ${expected}, defaulting to \"log\"...`\n );\n }\n return \"log\";\n}\n\nexport type TableRow<Keys extends string> = Record<Keys, string>;\n\nexport class Logger {\n constructor() {}\n\n loggerLevel = getLoggerLevel();\n columns = process.stdout.columns;\n\n debug = (...args: unknown[]) => this.doLog(\"debug\", args);\n ignore = (...args: unknown[]) => {};\n debugWithSanitization = (label: string, ...args: unknown[]) => {\n this.doLog(\"debug\", [label, ...args]);\n };\n info = (...args: unknown[]) => this.doLog(\"info\", args);\n log = (...args: unknown[]) => this.doLog(\"log\", args);\n warn = (...args: unknown[]) => this.doLog(\"warn\", args);\n error = (...args: unknown[]) => this.doLog(\"error\", args);\n table<Keys extends string>(data: TableRow<Keys>[], level?: Exclude<LoggerLevel, \"none\">) {\n const keys: Keys[] = data.length === 0 ? [] : (Object.keys(data[0]!) as Keys[]);\n const t = new CLITable({\n head: keys,\n style: {\n head: chalk.level ? [\"blue\"] : [],\n border: chalk.level ? [\"gray\"] : [],\n },\n });\n t.push(...data.map((row) => keys.map((k) => row[k])));\n return this.doLog(level ?? \"log\", [t.toString()]);\n }\n\n private doLog(messageLevel: Exclude<LoggerLevel, \"none\">, args: unknown[]) {\n const message = this.formatMessage(messageLevel, format(...args));\n\n // only send logs to the terminal if their level is at least the configured log-level\n if (LOGGER_LEVELS[this.loggerLevel] >= LOGGER_LEVELS[messageLevel]) {\n console[messageLevel](message);\n }\n }\n\n private formatMessage(level: Exclude<LoggerLevel, \"none\">, message: string): string {\n const kind = LOGGER_LEVEL_FORMAT_TYPE_MAP[level];\n if (kind) {\n // Format the message using the esbuild formatter.\n // The first line of the message is the main `text`,\n // subsequent lines are put into the `notes`.\n const [firstLine, ...otherLines] = message.split(\"\\n\");\n const notes = otherLines.length > 0 ? otherLines.map((text) => ({ text })) : undefined;\n return formatMessagesSync([{ text: firstLine, notes }], {\n color: true,\n kind,\n terminalWidth: this.columns,\n })[0]!;\n } else {\n return message;\n }\n }\n}\n\n/**\n * A drop-in replacement for `console` for outputting logging messages.\n *\n * Errors and Warnings will get additional formatting to highlight them to the user.\n * You can also set a `logger.loggerLevel` value to one of \"debug\", \"log\", \"warn\" or \"error\",\n * to filter out logging messages.\n */\nexport const logger = new Logger();\n\nexport function logBuildWarnings(warnings: Message[]) {\n const logs = formatMessagesSync(warnings, { kind: \"warning\", color: true });\n for (const log of logs) console.warn(log);\n}\n\n/**\n * Logs all errors/warnings associated with an esbuild BuildFailure in the same\n * style esbuild would.\n */\nexport function logBuildFailure(errors: Message[], warnings: Message[]) {\n const logs = formatMessagesSync(errors, { kind: \"error\", color: true });\n for (const log of logs) console.error(log);\n logBuildWarnings(warnings);\n}\n","import { logger } from \"./logger.js\";\n\ntype VariableNames = \"TRIGGER_API_URL\" | \"TRIGGER_SECRET_KEY\" | \"TRIGGER_LOG_LEVEL\";\n\ntype DeprecatedNames = \"\";\n\n/**\n * Create a function used to access an environment variable.\n *\n * This is not memoized to allow us to change the value at runtime, such as in testing.\n * A warning is shown if the client is using a deprecated version - but only once.\n */\nexport function getEnvironmentVariableFactory({\n variableName,\n deprecatedName,\n}: {\n variableName: VariableNames;\n deprecatedName?: DeprecatedNames;\n}): () => string | undefined;\n\n/**\n * Create a function used to access an environment variable, with a default value.\n *\n * This is not memoized to allow us to change the value at runtime, such as in testing.\n * A warning is shown if the client is using a deprecated version - but only once.\n */\nexport function getEnvironmentVariableFactory({\n variableName,\n deprecatedName,\n defaultValue,\n}: {\n variableName: VariableNames;\n deprecatedName?: DeprecatedNames;\n defaultValue: () => string;\n}): () => string;\n\n/**\n * Create a function used to access an environment variable.\n *\n * This is not memoized to allow us to change the value at runtime, such as in testing.\n * A warning is shown if the client is using a deprecated version - but only once.\n */\nexport function getEnvironmentVariableFactory({\n variableName,\n deprecatedName,\n defaultValue,\n}: {\n variableName: VariableNames;\n deprecatedName?: DeprecatedNames;\n defaultValue?: () => string;\n}): () => string | undefined {\n let hasWarned = false;\n return () => {\n if (process.env[variableName]) {\n return process.env[variableName];\n } else if (deprecatedName && process.env[deprecatedName]) {\n if (!hasWarned) {\n // Only show the warning once.\n hasWarned = true;\n logger.warn(\n `Using \"${deprecatedName}\" environment variable. This is deprecated. Please use \"${variableName}\", instead.`\n );\n }\n return process.env[deprecatedName];\n } else {\n return defaultValue?.();\n }\n };\n}\n","import chalk from \"chalk\";\n\nexport const green = \"#4FFF54\";\nexport const purple = \"#735BF3\";\n\nexport function chalkGreen(text: string) {\n return chalk.hex(green)(text);\n}\n\nexport function chalkPurple(text: string) {\n return chalk.hex(purple)(text);\n}\n\nexport function chalkGrey(text: string) {\n return chalk.hex(\"#878C99\")(text);\n}\n\nexport function chalkError(text: string) {\n return chalk.hex(\"#E11D48\")(text);\n}\n\nexport function chalkWarning(text: string) {\n return chalk.yellow(text);\n}\n\nexport function chalkSuccess(text: string) {\n return chalk.hex(\"#28BF5C\")(text);\n}\n\nexport function chalkLink(text: string) {\n return chalk.underline.hex(\"#D7D9DD\")(text);\n}\n\nexport function chalkWorker(text: string) {\n return chalk.hex(\"#FFFF89\")(text);\n}\n\nexport function chalkTask(text: string) {\n return chalk.hex(\"#60A5FA\")(text);\n}\n\nexport function chalkRun(text: string) {\n return chalk.hex(\"#A78BFA\")(text);\n}\n\nexport function logo() {\n return `${chalk.hex(green).bold(\"Trigger\")}${chalk.hex(purple).bold(\".dev\")}`;\n}\n\n// Mar 27 09:17:25.653\nexport function prettyPrintDate(date: Date = new Date()) {\n let formattedDate = new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n hour12: false,\n }).format(date);\n\n // Append milliseconds\n formattedDate += \".\" + (\"00\" + date.getMilliseconds()).slice(-3);\n\n return formattedDate;\n}\n","import { Config, ResolvedConfig } from \"@trigger.dev/core/v3\";\nimport { findUp } from \"find-up\";\nimport { mkdirSync, writeFileSync } from \"node:fs\";\nimport path, { join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport xdgAppPaths from \"xdg-app-paths\";\nimport { z } from \"zod\";\nimport { CLOUD_API_URL, CONFIG_FILES } from \"../consts.js\";\nimport { createTempDir, readJSONFileSync } from \"./fileSystem.js\";\nimport { logger } from \"./logger.js\";\nimport { findTriggerDirectories, resolveTriggerDirectories } from \"./taskFiles.js\";\nimport { build } from \"esbuild\";\n\nfunction getGlobalConfigFolderPath() {\n const configDir = xdgAppPaths(\"trigger\").config();\n\n return configDir;\n}\n\n//auth config file\nexport const UserAuthConfigSchema = z.object({\n accessToken: z.string().optional(),\n apiUrl: z.string().optional(),\n});\n\nexport type UserAuthConfig = z.infer<typeof UserAuthConfigSchema>;\n\nconst UserAuthConfigFileSchema = z.record(UserAuthConfigSchema);\n\ntype UserAuthConfigFile = z.infer<typeof UserAuthConfigFileSchema>;\n\nfunction getAuthConfigFilePath() {\n return path.join(getGlobalConfigFolderPath(), \"default.json\");\n}\n\nexport function writeAuthConfigProfile(config: UserAuthConfig, profile: string = \"default\") {\n const existingConfig = readAuthConfigFile() || {};\n\n existingConfig[profile] = config;\n\n writeAuthConfigFile(existingConfig);\n}\n\nexport function readAuthConfigProfile(profile: string = \"default\"): UserAuthConfig | undefined {\n try {\n const authConfigFilePath = getAuthConfigFilePath();\n\n logger.debug(`Reading auth config file`, { authConfigFilePath });\n\n const json = readJSONFileSync(authConfigFilePath);\n const parsed = UserAuthConfigFileSchema.parse(json);\n return parsed[profile];\n } catch (error) {\n logger.debug(`Error reading auth config file: ${error}`);\n return undefined;\n }\n}\n\nexport function deleteAuthConfigProfile(profile: string = \"default\") {\n const existingConfig = readAuthConfigFile() || {};\n\n delete existingConfig[profile];\n\n writeAuthConfigFile(existingConfig);\n}\n\nexport function readAuthConfigFile(): UserAuthConfigFile | undefined {\n try {\n const authConfigFilePath = getAuthConfigFilePath();\n\n logger.debug(`Reading auth config file`, { authConfigFilePath });\n\n const json = readJSONFileSync(authConfigFilePath);\n const parsed = UserAuthConfigFileSchema.parse(json);\n return parsed;\n } catch (error) {\n logger.debug(`Error reading auth config file: ${error}`);\n return undefined;\n }\n}\n\nexport function writeAuthConfigFile(config: UserAuthConfigFile) {\n const authConfigFilePath = getAuthConfigFilePath();\n mkdirSync(path.dirname(authConfigFilePath), {\n recursive: true,\n });\n writeFileSync(path.join(authConfigFilePath), JSON.stringify(config), {\n encoding: \"utf-8\",\n });\n}\n\nasync function getConfigPath(dir: string, fileName?: string): Promise<string | undefined> {\n logger.debug(\"Searching for the config file\", {\n dir,\n fileName,\n configFiles: CONFIG_FILES,\n });\n\n return await findUp(fileName ? [fileName] : CONFIG_FILES, { cwd: dir });\n}\n\nexport type ReadConfigOptions = {\n projectRef?: string;\n configFile?: string;\n};\n\nexport type ReadConfigResult =\n | {\n status: \"file\";\n config: ResolvedConfig;\n path: string;\n }\n | {\n status: \"in-memory\";\n config: ResolvedConfig;\n };\n\nexport async function readConfig(\n dir: string,\n options?: ReadConfigOptions\n): Promise<ReadConfigResult> {\n const absoluteDir = path.resolve(process.cwd(), dir);\n\n const configPath = await getConfigPath(dir, options?.configFile);\n\n if (!configPath) {\n if (options?.projectRef) {\n const rawConfig = await normalizeConfig({ project: options.projectRef });\n const config = Config.parse(rawConfig);\n\n return {\n status: \"in-memory\",\n config: await resolveConfig(absoluteDir, config),\n };\n } else {\n throw new Error(`Config file not found in ${absoluteDir} or any parent directory.`);\n }\n }\n\n const tempDir = await createTempDir();\n\n const builtConfigFilePath = join(tempDir, \"config.js\");\n const builtConfigFileHref = pathToFileURL(builtConfigFilePath).href;\n\n logger.debug(\"Building config file\", {\n configPath,\n builtConfigFileHref,\n builtConfigFilePath,\n });\n\n // We need to build the path to the config file, and then import it?\n await build({\n entryPoints: [configPath],\n bundle: true,\n metafile: true,\n minify: false,\n write: true,\n format: \"cjs\",\n platform: \"node\",\n target: [\"es2018\", \"node18\"],\n outfile: builtConfigFilePath,\n logLevel: \"silent\",\n });\n\n // import the config file\n const userConfigModule = await import(builtConfigFileHref);\n const rawConfig = await normalizeConfig(\n userConfigModule ? userConfigModule.config : { project: options?.projectRef }\n );\n const config = Config.parse(rawConfig);\n\n return {\n status: \"file\",\n config: await resolveConfig(absoluteDir, config),\n path: configPath,\n };\n}\n\nexport async function resolveConfig(path: string, config: Config): Promise<ResolvedConfig> {\n if (!config.triggerDirectories) {\n config.triggerDirectories = await findTriggerDirectories(path);\n }\n\n config.triggerDirectories = resolveTriggerDirectories(config.triggerDirectories);\n\n if (!config.triggerUrl) {\n config.triggerUrl = CLOUD_API_URL;\n }\n\n if (!config.projectDir) {\n config.projectDir = path;\n }\n\n if (!config.tsconfigPath) {\n config.tsconfigPath = await getConfigPath(path, \"tsconfig.json\");\n }\n\n return config as ResolvedConfig;\n}\n\nexport async function normalizeConfig(config: any): Promise<any> {\n if (typeof config === \"function\") {\n config = config();\n }\n\n return await config;\n}\n","// deno-fmt-ignore-file ## prefer customized `prettier` formatting\n\nimport _ from '../mod.cjs.js';\nexport * from '../mod.cjs.js';\nexport default _;\n","import path from \"path\";\nimport { fileURLToPath } from \"url\";\n\n// With the move to TSUP as a build tool, this keeps path routes in other files (installers, loaders, etc) in check more easily.\n// Path is in relation to a single index.js file inside ./dist\nconst __filename = fileURLToPath(import.meta.url);\nconst distPath = path.dirname(__filename);\n\nexport const PKG_ROOT = path.join(distPath, \"../\");\nexport const COMMAND_NAME = \"trigger.dev\";\nexport const CLOUD_WEB_URL = \"https://cloud.trigger.dev\";\nexport const CLOUD_API_URL = \"https://api.trigger.dev\";\nexport const CONFIG_FILES = [\"trigger.config.ts\", \"trigger.config.js\", \"trigger.config.mjs\"];\n","import fsSync from \"fs\";\nimport fsModule, { writeFile } from \"fs/promises\";\nimport fs from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport pathModule from \"node:path\";\n\n// Creates a file at the given path, if the directory doesn't exist it will be created\nexport async function createFile(path: string, contents: string): Promise<string> {\n await fsModule.mkdir(pathModule.dirname(path), { recursive: true });\n await fsModule.writeFile(path, contents);\n\n return path;\n}\n\nexport function isDirectory(configPath: string) {\n try {\n return fs.statSync(configPath).isDirectory();\n } catch (error) {\n // ignore error\n return false;\n }\n}\n\nexport async function pathExists(path: string): Promise<boolean> {\n return fsSync.existsSync(path);\n}\n\nexport async function someFileExists(directory: string, filenames: string[]): Promise<boolean> {\n for (let index = 0; index < filenames.length; index++) {\n const filename = filenames[index];\n if (!filename) continue;\n\n const path = pathModule.join(directory, filename);\n if (await pathExists(path)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport async function removeFile(path: string) {\n await fsModule.unlink(path);\n}\n\nexport async function readFile(path: string) {\n return await fsModule.readFile(path, \"utf8\");\n}\n\nexport async function readJSONFile(path: string) {\n const fileContents = await fsModule.readFile(path, \"utf8\");\n\n return JSON.parse(fileContents);\n}\n\nexport async function safeFeadJSONFile(path: string) {\n try {\n const fileExists = await pathExists(path);\n\n if (!fileExists) return;\n\n const fileContents = await readFile(path);\n\n return JSON.parse(fileContents);\n } catch {\n return;\n }\n}\n\nexport async function writeJSONFile(path: string, json: any) {\n await writeFile(path, JSON.stringify(json), \"utf8\");\n}\n\nexport function readJSONFileSync(path: string) {\n const fileContents = fsSync.readFileSync(path, \"utf8\");\n\n return JSON.parse(fileContents);\n}\n\nexport function safeDeleteFileSync(path: string) {\n try {\n fs.unlinkSync(path);\n } catch (error) {\n // ignore error\n }\n}\n\n// Create a temporary directory within the OS's temp directory\nexport async function createTempDir(): Promise<string> {\n // Generate a unique temp directory path\n const tempDirPath: string = pathModule.join(tmpdir(), \"trigger-\");\n\n // Create the temp directory synchronously and return the path\n const directory = await fsModule.mkdtemp(tempDirPath);\n\n return directory;\n}\n","import { ResolvedConfig } from \"@trigger.dev/core/v3\";\nimport fs from \"node:fs\";\nimport { join, relative, resolve } from \"node:path\";\nimport { TaskFile } from \"../types\";\n\nexport function createTaskFileImports(taskFiles: TaskFile[]) {\n return taskFiles\n .map(\n (taskFile) =>\n `import * as ${taskFile.importName} from \"./${taskFile.importPath}\"; TaskFileImports[\"${\n taskFile.importName\n }\"] = ${taskFile.importName}; TaskFiles[\"${taskFile.importName}\"] = ${JSON.stringify(\n taskFile\n )};`\n )\n .join(\"\\n\");\n}\n\n// Find all the top-level .js or .ts files in the trigger directories\nexport async function gatherTaskFiles(config: ResolvedConfig): Promise<Array<TaskFile>> {\n const taskFiles: Array<TaskFile> = [];\n\n for (const triggerDir of config.triggerDirectories) {\n const files = await fs.promises.readdir(triggerDir, { withFileTypes: true });\n for (const file of files) {\n if (!file.isFile()) continue;\n if (!file.name.endsWith(\".js\") && !file.name.endsWith(\".ts\")) continue;\n\n const fullPath = join(triggerDir, file.name);\n\n const filePath = relative(config.projectDir, fullPath);\n const importPath = filePath.replace(/\\.(js|ts)$/, \"\");\n const importName = importPath.replace(/\\//g, \"_\").replace(/\\./g, \"_\").replace(/-/g, \"_\");\n\n taskFiles.push({ triggerDir, importPath, importName, filePath });\n }\n }\n\n return taskFiles;\n}\n\nexport function resolveTriggerDirectories(dirs: string[]): string[] {\n return dirs.map((dir) => resolve(dir));\n}\n\nconst IGNORED_DIRS = [\"node_modules\", \".git\", \"dist\", \"build\"];\n\nexport async function findTriggerDirectories(dirPath: string): Promise<string[]> {\n return getTriggerDirectories(dirPath);\n}\n\nasync function getTriggerDirectories(dirPath: string): Promise<string[]> {\n const entries = await fs.promises.readdir(dirPath, { withFileTypes: true });\n const triggerDirectories: string[] = [];\n\n for (const entry of entries) {\n if (!entry.isDirectory() || IGNORED_DIRS.includes(entry.name)) continue;\n\n const fullPath = join(dirPath, entry.name);\n\n if (entry.name === \"trigger\") {\n triggerDirectories.push(fullPath);\n }\n\n triggerDirectories.push(...(await getTriggerDirectories(fullPath)));\n }\n\n return triggerDirectories;\n}\n","import { spinner } from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport type { Result } from \"update-check\";\nimport checkForUpdate from \"update-check\";\nimport pkg from \"../../package.json\";\nimport { chalkGrey, chalkRun, chalkTask, chalkWorker, green, logo } from \"./cliOutput.js\";\nimport { getVersion } from \"./getVersion.js\";\nimport { logger } from \"./logger.js\";\n\nexport async function printInitialBanner(performUpdateCheck = true) {\n const packageVersion = getVersion();\n const text = `\\n${logo()} ${chalkGrey(`(${packageVersion})`)}\\n`;\n\n logger.info(text);\n\n let maybeNewVersion: string | undefined;\n if (performUpdateCheck) {\n const loadingSpinner = spinner();\n loadingSpinner.start(\"Checking for updates\");\n maybeNewVersion = await updateCheck();\n\n // Log a slightly more noticeable message if this is a major bump\n if (maybeNewVersion !== undefined) {\n loadingSpinner.stop(`Update available ${chalk.green(maybeNewVersion)}`);\n const currentMajor = parseInt(packageVersion.split(\".\")[0]!);\n const newMajor = parseInt(maybeNewVersion.split(\".\")[0]!);\n if (newMajor > currentMajor) {\n logger.warn(\n `Please update to the latest version of \\`trigger.dev\\` to prevent critical errors.\nRun \\`npm install --save-dev trigger.dev@${newMajor}\\` to update to the latest version.\nAfter installation, run Trigger.dev with \\`npx trigger.dev\\`.`\n );\n }\n } else {\n loadingSpinner.stop(\"On latest version\");\n }\n }\n}\n\nexport async function printStandloneInitialBanner(performUpdateCheck = true) {\n const packageVersion = getVersion();\n\n let text = `\\n${logo()} ${chalkGrey(\"(v3 Developer Preview)\")}`;\n\n if (performUpdateCheck) {\n const maybeNewVersion = await updateCheck();\n\n // Log a slightly more noticeable message if this is a major bump\n if (maybeNewVersion !== undefined) {\n text = `${text} (update available ${chalk.green(maybeNewVersion)})`;\n }\n }\n\n logger.log(text + \"\\n\" + chalkGrey(\"-\".repeat(54)));\n}\n\nexport function printDevBanner() {\n logger.log(\n `${chalkGrey(\"Key:\")} ${chalkWorker(\"Version\")} ${chalkGrey(\"|\")} ${chalkTask(\n \"Task\"\n )} ${chalkGrey(\"|\")} ${chalkRun(\"Run\")}`\n );\n logger.log(chalkGrey(\"-\".repeat(54)));\n}\n\nasync function doUpdateCheck(): Promise<string | undefined> {\n let update: Result | null = null;\n try {\n // default cache for update check is 1 day\n update = await checkForUpdate(pkg, {\n distTag: pkg.version.startsWith(\"0.0.0\") ? \"beta\" : \"latest\",\n });\n } catch (err) {\n // ignore error\n }\n return update?.latest;\n}\n\n//only do this once while the cli is running\nlet updateCheckPromise: Promise<string | undefined>;\nexport function updateCheck(): Promise<string | undefined> {\n return (updateCheckPromise ??= doUpdateCheck());\n}\n","import { type PackageJson } from \"type-fest\";\nimport path from \"path\";\nimport { PKG_ROOT } from \"../consts.js\";\nimport { readJSONFileSync } from \"./fileSystem.js\";\n\nexport function getVersion() {\n const packageJsonPath = path.join(PKG_ROOT, \"package.json\");\n\n const packageJsonContent = readJSONFileSync(packageJsonPath) as PackageJson;\n\n return packageJsonContent.version ?? \"1.0.0\";\n}\n","import { execa } from \"execa\";\nimport { join } from \"node:path\";\nimport { readJSONFile, writeJSONFile } from \"./fileSystem\";\nimport { logger } from \"./logger\";\n\nexport type InstallPackagesOptions = { cwd?: string };\n\nexport async function installPackages(\n packages: Record<string, string>,\n options?: InstallPackagesOptions\n) {\n const cwd = options?.cwd ?? process.cwd();\n\n logger.debug(\"Installing packages\", { packages });\n\n await setPackageJsonDeps(join(cwd, \"package.json\"), packages);\n\n await execa(\n \"npm\",\n [\"install\", \"--install-strategy\", \"nested\", \"--ignore-scripts\", \"--no-audit\", \"--no-fund\"],\n {\n cwd,\n stderr: \"pipe\",\n }\n );\n}\n\nasync function getPackageVersion(path: string) {\n try {\n const packageJsonPath = join(path, \"package.json\");\n const packageJson = await readJSONFile(packageJsonPath);\n\n return packageJson.version;\n } catch (error) {\n return undefined;\n }\n}\n\n// Expects path to be in the format:\n// - source-map-support/register.js\n// - @opentelemetry/api\n// - zod\n//\n// With the result being:\n// - source-map-support\n// - @opentelemetry/api\n// - zod\nexport function detectPackageNameFromImportPath(path: string): string {\n if (path.startsWith(\"@\")) {\n return path.split(\"/\").slice(0, 2).join(\"/\");\n } else {\n return path.split(\"/\")[0] as string;\n }\n}\n\n/**\n * Removes the workspace prefix from a version string.\n * @param version - The version string to strip the workspace prefix from.\n * @returns The version string without the workspace prefix.\n * @example\n * stripWorkspaceFromVersion(\"workspace:1.0.0\") // \"1.0.0\"\n * stripWorkspaceFromVersion(\"1.0.0\") // \"1.0.0\"\n */\nexport function stripWorkspaceFromVersion(version: string) {\n return version.replace(/^workspace:/, \"\");\n}\n\nexport function parsePackageName(packageSpecifier: string): { name: string; version?: string } {\n const parts = packageSpecifier.split(\"@\");\n\n if (parts.length === 1 && typeof parts[0] === \"string\") {\n return { name: parts[0] };\n }\n\n if (parts.length === 2 && typeof parts[0] === \"string\" && typeof parts[1] === \"string\") {\n return { name: parts[0], version: parts[1] };\n }\n\n return { name: packageSpecifier };\n}\n\nasync function setPackageJsonDeps(path: string, deps: Record<string, string>) {\n try {\n const existingPackageJson = await readJSONFile(path);\n\n const newPackageJson = {\n ...existingPackageJson,\n dependencies: {\n ...deps,\n },\n };\n\n await writeJSONFile(path, newPackageJson);\n } catch (error) {\n const defaultPackageJson = {\n name: \"temp\",\n version: \"1.0.0\",\n description: \"\",\n dependencies: deps,\n };\n\n await writeJSONFile(path, defaultPackageJson);\n }\n}\n","import { intro, log, outro, select, spinner } from \"@clack/prompts\";\nimport { recordSpanException } from \"@trigger.dev/core/v3\";\nimport { Command } from \"commander\";\nimport open from \"open\";\nimport pRetry, { AbortError } from \"p-retry\";\nimport { z } from \"zod\";\nimport { CliApiClient } from \"../apiClient.js\";\nimport {\n CommonCommandOptions,\n SkipLoggingError,\n commonOptions,\n handleTelemetry,\n tracer,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { chalkLink } from \"../utilities/cliOutput.js\";\nimport { readAuthConfigProfile, writeAuthConfigProfile } from \"../utilities/configFiles.js\";\nimport { getVersion } from \"../utilities/getVersion.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { LoginResult } from \"../utilities/session.js\";\nimport { whoAmI } from \"./whoami.js\";\nimport { logger } from \"../utilities/logger.js\";\n\nexport const LoginCommandOptions = CommonCommandOptions.extend({\n apiUrl: z.string(),\n});\n\nexport type LoginCommandOptions = z.infer<typeof LoginCommandOptions>;\n\nexport function configureLoginCommand(program: Command) {\n return commonOptions(\n program\n .command(\"login\")\n .description(\"Login with Trigger.dev so you can perform authenticated actions\")\n )\n .version(getVersion(), \"-v, --version\", \"Display the version number\")\n .action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await loginCommand(options);\n });\n });\n}\n\nexport async function loginCommand(options: unknown) {\n return await wrapCommandAction(\"loginCommand\", LoginCommandOptions, options, async (opts) => {\n return await _loginCommand(opts);\n });\n}\n\nasync function _loginCommand(options: LoginCommandOptions) {\n return login({ defaultApiUrl: options.apiUrl, embedded: false, profile: options.profile });\n}\n\nexport type LoginOptions = {\n defaultApiUrl?: string;\n embedded?: boolean;\n profile?: string;\n};\n\nexport async function login(options?: LoginOptions): Promise<LoginResult> {\n return await tracer.startActiveSpan(\"login\", async (span) => {\n try {\n const opts = { defaultApiUrl: \"https://api.trigger.dev\", embedded: false, ...options };\n\n span.setAttributes({\n \"cli.config.apiUrl\": opts.defaultApiUrl,\n \"cli.options.profile\": opts.profile,\n });\n\n if (!opts.embedded) {\n intro(\"Logging in to Trigger.dev\");\n }\n\n const authConfig = readAuthConfigProfile(options?.profile);\n\n if (authConfig && authConfig.accessToken) {\n const whoAmIResult = await whoAmI(\n {\n profile: options?.profile ?? \"default\",\n skipTelemetry: !span.isRecording(),\n logLevel: logger.loggerLevel,\n },\n opts.embedded\n );\n\n if (!whoAmIResult.success) {\n throw new Error(whoAmIResult.error);\n } else {\n if (!opts.embedded) {\n const continueOption = await select({\n message: \"You are already logged in.\",\n options: [\n {\n value: false,\n label: \"Exit\",\n },\n {\n value: true,\n label: \"Login with a different account\",\n },\n ],\n initialValue: false,\n });\n\n if (continueOption !== true) {\n outro(\"Already logged in\");\n\n span.setAttributes({\n \"cli.userId\": whoAmIResult.data.userId,\n \"cli.email\": whoAmIResult.data.email,\n \"cli.config.apiUrl\": authConfig.apiUrl ?? opts.defaultApiUrl,\n });\n\n span.end();\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: whoAmIResult.data.userId,\n email: whoAmIResult.data.email,\n dashboardUrl: whoAmIResult.data.dashboardUrl,\n auth: {\n accessToken: authConfig.accessToken,\n apiUrl: authConfig.apiUrl ?? opts.defaultApiUrl,\n },\n };\n }\n } else {\n span.setAttributes({\n \"cli.userId\": whoAmIResult.data.userId,\n \"cli.email\": whoAmIResult.data.email,\n \"cli.config.apiUrl\": authConfig.apiUrl ?? opts.defaultApiUrl,\n });\n\n span.end();\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: whoAmIResult.data.userId,\n email: whoAmIResult.data.email,\n dashboardUrl: whoAmIResult.data.dashboardUrl,\n auth: {\n accessToken: authConfig.accessToken,\n apiUrl: authConfig.apiUrl ?? opts.defaultApiUrl,\n },\n };\n }\n }\n }\n\n if (opts.embedded) {\n log.step(\"You must login to continue.\");\n }\n\n const apiClient = new CliApiClient(authConfig?.apiUrl ?? opts.defaultApiUrl);\n\n //generate authorization code\n const authorizationCodeResult = await createAuthorizationCode(apiClient);\n\n //Link the user to the authorization code\n log.step(\n `Please visit the following URL to login:\\n${chalkLink(authorizationCodeResult.url)}`\n );\n\n await open(authorizationCodeResult.url);\n\n //poll for personal access token (we need to poll for it)\n const getPersonalAccessTokenSpinner = spinner();\n getPersonalAccessTokenSpinner.start(\"Waiting for you to login\");\n try {\n const indexResult = await pRetry(\n () => getPersonalAccessToken(apiClient, authorizationCodeResult.authorizationCode),\n {\n //this means we're polling, same distance between each attempt\n factor: 1,\n retries: 60,\n minTimeout: 1000,\n }\n );\n\n getPersonalAccessTokenSpinner.stop(`Logged in with token ${indexResult.obfuscatedToken}`);\n\n writeAuthConfigProfile(\n { accessToken: indexResult.token, apiUrl: opts.defaultApiUrl },\n options?.profile\n );\n\n const whoAmIResult = await whoAmI(\n {\n profile: options?.profile ?? \"default\",\n skipTelemetry: !span.isRecording(),\n logLevel: logger.loggerLevel,\n },\n opts.embedded\n );\n\n if (!whoAmIResult.success) {\n throw new Error(whoAmIResult.error);\n }\n\n if (opts.embedded) {\n log.step(\"Logged in successfully\");\n } else {\n outro(\"Logged in successfully\");\n }\n\n span.end();\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: whoAmIResult.data.userId,\n email: whoAmIResult.data.email,\n dashboardUrl: whoAmIResult.data.dashboardUrl,\n auth: {\n accessToken: indexResult.token,\n apiUrl: authConfig?.apiUrl ?? opts.defaultApiUrl,\n },\n };\n } catch (e) {\n getPersonalAccessTokenSpinner.stop(`Failed to get access token`);\n\n if (e instanceof AbortError) {\n log.error(e.message);\n }\n\n recordSpanException(span, e);\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : String(e),\n };\n }\n } catch (e) {\n recordSpanException(span, e);\n span.end();\n\n if (options?.embedded) {\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : String(e),\n };\n }\n\n throw e;\n }\n });\n}\n\nasync function getPersonalAccessToken(apiClient: CliApiClient, authorizationCode: string) {\n return await tracer.startActiveSpan(\"getPersonalAccessToken\", async (span) => {\n try {\n const token = await apiClient.getPersonalAccessToken(authorizationCode);\n\n if (!token.success) {\n throw new AbortError(token.error);\n }\n\n if (!token.data.token) {\n throw new Error(\"No token found yet\");\n }\n\n span.end();\n\n return {\n token: token.data.token.token,\n obfuscatedToken: token.data.token.obfuscatedToken,\n };\n } catch (e) {\n if (e instanceof AbortError) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function createAuthorizationCode(apiClient: CliApiClient) {\n return await tracer.startActiveSpan(\"createAuthorizationCode\", async (span) => {\n try {\n //generate authorization code\n const createAuthCodeSpinner = spinner();\n createAuthCodeSpinner.start(\"Creating authorition code\");\n const authorizationCodeResult = await apiClient.createAuthorizationCode();\n\n if (!authorizationCodeResult.success) {\n createAuthCodeSpinner.stop(\n `Failed to create authorization code\\n${authorizationCodeResult.error}`\n );\n\n throw new SkipLoggingError(\n `Failed to create authorization code\\n${authorizationCodeResult.error}`\n );\n }\n\n createAuthCodeSpinner.stop(\"Created authorization code\");\n\n span.end();\n\n return authorizationCodeResult.data;\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n throw e;\n }\n });\n}\n","import process from 'node:process';\nimport {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport isWsl from 'is-wsl';\nimport defineLazyProperty from 'define-lazy-prop';\nimport defaultBrowser from 'default-browser';\nimport isInsideContainer from 'is-inside-container';\n\n// Path to included `xdg-open`.\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\n/**\nGet the mount point for fixed drives in WSL.\n\n@inner\n@returns {string} The mount point.\n*/\nconst getWslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst configMountPoint = /(?<!#.*)root\\s*=\\s*(?<mountPoint>.*)/g.exec(configContent);\n\n\t\tif (!configMountPoint) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = configMountPoint.groups.mountPoint.trim();\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nconst pTryEach = async (array, mapper) => {\n\tlet latestError;\n\n\tfor (const item of array) {\n\t\ttry {\n\t\t\treturn await mapper(item); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tlatestError = error;\n\t\t}\n\t}\n\n\tthrow latestError;\n};\n\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(options.app)) {\n\t\treturn pTryEach(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp,\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app ?? {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn pTryEach(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments,\n\t\t\t},\n\t\t}));\n\t}\n\n\tif (app === 'browser' || app === 'browserPrivate') {\n\t\t// IDs from default-browser for macOS and windows are the same\n\t\tconst ids = {\n\t\t\t'com.google.chrome': 'chrome',\n\t\t\t'google-chrome.desktop': 'chrome',\n\t\t\t'org.mozilla.firefox': 'firefox',\n\t\t\t'firefox.desktop': 'firefox',\n\t\t\t'com.microsoft.msedge': 'edge',\n\t\t\t'com.microsoft.edge': 'edge',\n\t\t\t'microsoft-edge.desktop': 'edge',\n\t\t};\n\n\t\t// Incognito flags for each browser in `apps`.\n\t\tconst flags = {\n\t\t\tchrome: '--incognito',\n\t\t\tfirefox: '--private-window',\n\t\t\tedge: '--inPrivate',\n\t\t};\n\n\t\tconst browser = await defaultBrowser();\n\t\tif (browser.id in ids) {\n\t\t\tconst browserName = ids[browser.id];\n\n\t\t\tif (app === 'browserPrivate') {\n\t\t\t\tappArguments.push(flags[browserName]);\n\t\t\t}\n\n\t\t\treturn baseOpen({\n\t\t\t\t...options,\n\t\t\t\tapp: {\n\t\t\t\t\tname: apps[browserName],\n\t\t\t\t\targuments: appArguments,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(`${browser.name} is not supported as a default browser`);\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || (isWsl && !isInsideContainer() && !app)) {\n\t\tconst mountPoint = await getWslDrivesMountPoint();\n\n\t\tcommand = isWsl\n\t\t\t? `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`\n\t\t\t: `${process.env.SYSTEMROOT || process.env.windir || 'C:\\\\Windows'}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell`;\n\n\t\tcliArguments.push(\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'-ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand',\n\t\t);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\tconst encodedArguments = ['Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\t// Double quote with double quotes to ensure the inner quotes are passed through.\n\t\t\t// Inner quotes are delimited for PowerShell interpretation with backticks.\n\t\t\tencodedArguments.push(`\"\\`\"${app}\\`\"\"`);\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.push(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(`\"${options.target}\"`);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(argument => `\"\\`\"${argument}\\`\"\"`);\n\t\t\tencodedArguments.push('-ArgumentList', appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron\n\t\t\t\t?? (platform === 'android' || isBundled || !exeLocalXdgOpen);\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\t// This has to come after `--args`.\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget,\n\t});\n};\n\nexport const openApp = (name, options) => {\n\tif (typeof name !== 'string') {\n\t\tthrow new TypeError('Expected a `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options ?? {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments,\n\t\t},\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nexport const apps = {};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: 'C:\\\\Program Files\\\\Mozilla Firefox\\\\firefox.exe',\n\tlinux: 'firefox',\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe',\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev'],\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',\n}));\n\ndefineLazyProperty(apps, 'browser', () => 'browser');\n\ndefineLazyProperty(apps, 'browserPrivate', () => 'browserPrivate');\n\nexport default open;\n","import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport isInsideContainer from 'is-inside-container';\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isInsideContainer()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')\n\t\t\t? !isInsideContainer() : false;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();\n","import fs from 'node:fs';\nimport isDocker from 'is-docker';\n\nlet cachedResult;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default function isInsideContainer() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n","import fs from 'node:fs';\n\nlet isDockerCached;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport default function isDocker() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (isDockerCached === undefined) {\n\t\tisDockerCached = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDockerCached;\n}\n","export default function defineLazyProperty(object, propertyName, valueGetter) {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = valueGetter();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?<id>[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\treturn match?.groups.id ?? 'com.apple.Safari';\n}\n","import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments]);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n","import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n","import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tMSEdgeDHTML: {name: 'Edge', id: 'com.microsoft.edge'}, // On macOS, it's \"com.microsoft.edgemac\"\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // Newer Edge/Win10 releases\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n};\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?<id>\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\tconst browser = windowsBrowserProgIds[id];\n\tif (!browser) {\n\t\tthrow new UnknownBrowserError(`Unknown browser ID: ${id}`);\n\t}\n\n\treturn browser;\n}\n","import retry from 'retry';\nimport isNetworkError from 'is-network-error';\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nconst decorateErrorWithCounts = (error, attemptNumber, options) => {\n\t// Minus 1 from attemptNumber because the first attempt does not count as a retry\n\tconst retriesLeft = options.retries - (attemptNumber - 1);\n\n\terror.attemptNumber = attemptNumber;\n\terror.retriesLeft = retriesLeft;\n\treturn error;\n};\n\nexport default async function pRetry(input, options) {\n\treturn new Promise((resolve, reject) => {\n\t\toptions = {\n\t\t\tonFailedAttempt() {},\n\t\t\tretries: 10,\n\t\t\t...options,\n\t\t};\n\n\t\tconst operation = retry.operation(options);\n\n\t\tconst abortHandler = () => {\n\t\t\toperation.stop();\n\t\t\treject(options.signal?.reason);\n\t\t};\n\n\t\tif (options.signal && !options.signal.aborted) {\n\t\t\toptions.signal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tconst cleanUp = () => {\n\t\t\toptions.signal?.removeEventListener('abort', abortHandler);\n\t\t\toperation.stop();\n\t\t};\n\n\t\toperation.attempt(async attemptNumber => {\n\t\t\ttry {\n\t\t\t\tconst result = await input(attemptNumber);\n\t\t\t\tcleanUp();\n\t\t\t\tresolve(result);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof AbortError) {\n\t\t\t\t\t\tthrow error.originalError;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof TypeError && !isNetworkError(error)) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\tawait options.onFailedAttempt(decorateErrorWithCounts(error, attemptNumber, options));\n\n\t\t\t\t\tif (!operation.retry(error)) {\n\t\t\t\t\t\tthrow operation.mainError();\n\t\t\t\t\t}\n\t\t\t\t} catch (finalError) {\n\t\t\t\t\tdecorateErrorWithCounts(finalError, attemptNumber, options);\n\t\t\t\t\tcleanUp();\n\t\t\t\t\treject(finalError);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Load failed', // Safari 17+\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\t// We do an extra check for Safari 17+ as it has a very generic error message.\n\t// Network errors in Safari have no stack.\n\tif (error.message === 'Load failed') {\n\t\treturn error.stack === undefined;\n\t}\n\n\treturn errorMessages.has(error.message);\n}\n","import { intro, note, spinner } from \"@clack/prompts\";\nimport { chalkLink } from \"../utilities/cliOutput.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport { isLoggedIn } from \"../utilities/session.js\";\nimport { Command } from \"commander\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport {\n CommonCommandOptions,\n commonOptions,\n handleTelemetry,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { z } from \"zod\";\nimport { CliApiClient } from \"../apiClient.js\";\n\ntype WhoAmIResult =\n | {\n success: true;\n data: {\n userId: string;\n email: string;\n dashboardUrl: string;\n };\n }\n | {\n success: false;\n error: string;\n };\n\nconst WhoamiCommandOptions = CommonCommandOptions;\n\ntype WhoamiCommandOptions = z.infer<typeof WhoamiCommandOptions>;\n\nexport function configureWhoamiCommand(program: Command) {\n return commonOptions(\n program.command(\"whoami\").description(\"display the current logged in user and project details\")\n ).action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await whoAmICommand(options);\n });\n });\n}\n\nexport async function whoAmICommand(options: unknown) {\n return await wrapCommandAction(\"whoamiCommand\", WhoamiCommandOptions, options, async (opts) => {\n return await whoAmI(opts);\n });\n}\n\nexport async function whoAmI(\n options?: WhoamiCommandOptions,\n embedded: boolean = false\n): Promise<WhoAmIResult> {\n if (!embedded) {\n intro(`Displaying your account details [${options?.profile ?? \"default\"}]`);\n }\n\n const loadingSpinner = spinner();\n loadingSpinner.start(\"Checking your account details\");\n\n const authentication = await isLoggedIn(options?.profile);\n\n if (!authentication.ok) {\n if (authentication.error === \"fetch failed\") {\n loadingSpinner.stop(\"Fetch failed. Platform down?\");\n } else {\n loadingSpinner.stop(\n `You must login first. Use \\`trigger.dev login --profile ${\n options?.profile ?? \"default\"\n }\\` to login.`\n );\n }\n\n return {\n success: false,\n error: authentication.error,\n };\n }\n\n const apiClient = new CliApiClient(authentication.auth.apiUrl, authentication.auth.accessToken);\n const userData = await apiClient.whoAmI();\n\n if (!userData.success) {\n loadingSpinner.stop(\"Error getting your account details\");\n logger.error(userData.error);\n return {\n success: false,\n error: userData.error,\n };\n }\n\n if (!embedded) {\n loadingSpinner.stop(\"Retrieved your account details\");\n note(\n `User ID: ${userData.data.userId}\nEmail: ${userData.data.email}\nURL: ${chalkLink(authentication.auth.apiUrl)}\n`,\n `Account details [${authentication.profile}]`\n );\n } else {\n loadingSpinner.stop(`Retrieved your account details for ${userData.data.email}`);\n }\n\n return userData;\n}\n","import { recordSpanException } from \"@trigger.dev/core/v3\";\nimport { CliApiClient } from \"../apiClient.js\";\nimport { readAuthConfigProfile } from \"./configFiles.js\";\nimport { getTracer } from \"../telemetry/tracing.js\";\n\nconst tracer = getTracer();\n\nexport type LoginResult =\n | {\n ok: true;\n profile: string,\n userId: string;\n email: string;\n dashboardUrl: string;\n auth: {\n apiUrl: string;\n accessToken: string;\n };\n }\n | {\n ok: false;\n error: string;\n auth?: {\n apiUrl: string;\n accessToken: string;\n };\n };\n\nexport async function isLoggedIn(profile: string = \"default\"): Promise<LoginResult> {\n return await tracer.startActiveSpan(\"isLoggedIn\", async (span) => {\n try {\n const config = readAuthConfigProfile(profile);\n\n if (!config?.accessToken || !config?.apiUrl) {\n span.recordException(new Error(\"You must login first\"));\n span.end();\n return { ok: false as const, error: \"You must login first\" };\n }\n\n const apiClient = new CliApiClient(config.apiUrl, config.accessToken);\n const userData = await apiClient.whoAmI();\n\n if (!userData.success) {\n recordSpanException(span, userData.error);\n span.end();\n\n return {\n ok: false as const,\n error: userData.error,\n auth: {\n apiUrl: config.apiUrl,\n accessToken: config.accessToken,\n },\n };\n }\n\n span.setAttributes({\n \"login.userId\": userData.data.userId,\n \"login.email\": userData.data.email,\n \"login.dashboardUrl\": userData.data.dashboardUrl,\n \"login.profile\": profile,\n });\n\n span.end();\n\n return {\n ok: true as const,\n profile,\n userId: userData.data.userId,\n email: userData.data.email,\n dashboardUrl: userData.data.dashboardUrl,\n auth: {\n apiUrl: config.apiUrl,\n accessToken: config.accessToken,\n },\n };\n } catch (e) {\n recordSpanException(span, e);\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : \"Unknown error\",\n };\n }\n });\n}\n","import type * as esbuild from \"esbuild\";\nimport type { Plugin } from \"esbuild\";\nimport { readFileSync } from \"node:fs\";\nimport { extname, isAbsolute } from \"node:path\";\nimport tsConfigPaths from \"tsconfig-paths\";\nimport { logger } from \"./logger\";\n\nexport function bundleTriggerDevCore(buildIdentifier: string, tsconfigPath?: string): Plugin {\n return {\n name: \"trigger-bundle-core\",\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.path !== \"@trigger.dev/core/v3\") {\n return undefined;\n }\n\n const triggerSdkPath = require.resolve(\"@trigger.dev/sdk/v3\", { paths: [process.cwd()] });\n\n logger.debug(`[${buildIdentifier}][trigger-bundle-core] Resolved @trigger.dev/sdk/v3`, {\n ...args,\n triggerSdkPath,\n });\n\n const resolvedPath = require.resolve(\"@trigger.dev/core/v3\", {\n paths: [triggerSdkPath],\n });\n\n logger.debug(\n `[${buildIdentifier}][trigger-bundle-core] Externalizing @trigger.dev/core/v3`,\n {\n ...args,\n triggerSdkPath,\n resolvedPath,\n }\n );\n\n return {\n path: resolvedPath,\n external: false,\n };\n });\n },\n };\n}\n\nexport function workerSetupImportConfigPlugin(configPath?: string): Plugin {\n return {\n name: \"trigger-worker-setup\",\n setup(build) {\n if (!configPath) {\n return;\n }\n\n build.onLoad({ filter: /worker-setup\\.js$/ }, async (args) => {\n let workerSetupContents = readFileSync(args.path, \"utf-8\");\n\n workerSetupContents = workerSetupContents.replace(\n \"__SETUP_IMPORTED_PROJECT_CONFIG__\",\n `import * as setupImportedConfigExports from \"${configPath}\"; const setupImportedConfig = setupImportedConfigExports.config;`\n );\n\n logger.debug(\"Loading worker setup\", {\n args,\n workerSetupContents,\n configPath,\n });\n\n return {\n contents: workerSetupContents,\n loader: \"js\",\n };\n });\n },\n };\n}\n\nexport function bundleDependenciesPlugin(\n buildIdentifier: string,\n dependenciesToBundle?: Array<string | RegExp>,\n tsconfigPath?: string\n): Plugin {\n const matchPath = tsconfigPath ? createMatchPath(tsconfigPath) : undefined;\n\n function resolvePath(id: string) {\n if (!matchPath) {\n return id;\n }\n return matchPath(id, undefined, undefined, [\".ts\", \".tsx\", \".js\", \".jsx\"]) || id;\n }\n\n return {\n name: \"trigger-bundle-dependencies\",\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n const resolvedPath = resolvePath(args.path);\n\n if (!isBareModuleId(resolvedPath)) {\n return undefined; // let esbuild handle it\n }\n\n // Skip assets that are treated as files (.css, .svg, .png, etc.).\n // Otherwise, esbuild would emit code that would attempt to require()\n // or import these files --- which aren't JavaScript!\n let loader;\n try {\n loader = getLoaderForFile(args.path);\n } catch (e) {\n if (!(e instanceof Error && e.message.startsWith(\"Cannot get loader for file\"))) {\n throw e;\n }\n }\n if (loader === \"file\") {\n return undefined;\n }\n\n for (let pattern of dependenciesToBundle ?? []) {\n if (typeof pattern === \"string\" ? args.path === pattern : pattern.test(args.path)) {\n return undefined; // let esbuild bundle it\n }\n }\n\n logger.ignore(`[${buildIdentifier}] Externalizing ${args.path}`, {\n ...args,\n });\n\n // Everything else should be external\n return {\n path: args.path,\n external: true,\n };\n });\n },\n };\n}\n\nfunction isBareModuleId(id: string): boolean {\n return !id.startsWith(\"node:\") && !id.startsWith(\".\") && !isAbsolute(id);\n}\n\nexport function createMatchPath(tsconfigPath: string | undefined) {\n // There is no tsconfig to match paths against.\n if (!tsconfigPath) {\n return undefined;\n }\n\n // When passing a absolute path, loadConfig assumes that the path contains\n // a tsconfig file.\n // Ref.: https://github.com/dividab/tsconfig-paths/blob/v4.0.0/src/__tests__/config-loader.test.ts#L74\n let configLoaderResult = tsConfigPaths.loadConfig(tsconfigPath);\n\n if (configLoaderResult.resultType === \"failed\") {\n if (configLoaderResult.message === \"Missing baseUrl in compilerOptions\") {\n throw new Error(\n `🚨 Oops! No baseUrl found, please set compilerOptions.baseUrl in your tsconfig or jsconfig`\n );\n }\n return undefined;\n }\n\n return tsConfigPaths.createMatchPath(\n configLoaderResult.absoluteBaseUrl,\n configLoaderResult.paths,\n configLoaderResult.mainFields,\n configLoaderResult.addMatchAll\n );\n}\n\nconst loaders: { [ext: string]: esbuild.Loader } = {\n \".aac\": \"file\",\n \".avif\": \"file\",\n \".css\": \"file\",\n \".csv\": \"file\",\n \".eot\": \"file\",\n \".fbx\": \"file\",\n \".flac\": \"file\",\n \".gif\": \"file\",\n \".glb\": \"file\",\n \".gltf\": \"file\",\n \".gql\": \"text\",\n \".graphql\": \"text\",\n \".hdr\": \"file\",\n \".ico\": \"file\",\n \".jpeg\": \"file\",\n \".jpg\": \"file\",\n \".js\": \"jsx\",\n \".jsx\": \"jsx\",\n \".json\": \"json\",\n // We preprocess md and mdx files using @mdx-js/mdx and send through\n // the JSX for esbuild to handle\n \".md\": \"jsx\",\n \".mdx\": \"jsx\",\n \".mov\": \"file\",\n \".mp3\": \"file\",\n \".mp4\": \"file\",\n \".node\": \"copy\",\n \".ogg\": \"file\",\n \".otf\": \"file\",\n \".png\": \"file\",\n \".psd\": \"file\",\n \".sql\": \"text\",\n \".svg\": \"file\",\n \".ts\": \"ts\",\n \".tsx\": \"tsx\",\n \".ttf\": \"file\",\n \".wasm\": \"file\",\n \".wav\": \"file\",\n \".webm\": \"file\",\n \".webmanifest\": \"file\",\n \".webp\": \"file\",\n \".woff\": \"file\",\n \".woff2\": \"file\",\n \".zip\": \"file\",\n};\n\nexport function getLoaderForFile(file: string): esbuild.Loader {\n const ext = extname(file);\n const loader = loaders[ext];\n\n if (loader) return loader;\n\n throw new Error(`Cannot get loader for file ${file}`);\n}\n","import chalk from \"chalk\";\nimport { relative } from \"node:path\";\nimport { chalkError, chalkPurple, chalkGrey, chalkGreen, chalkWarning } from \"./cliOutput\";\nimport { logger } from \"./logger\";\nimport { ReadConfigResult } from \"./configFiles\";\nimport { TaskMetadataParseError } from \"../workers/common/errors\";\nimport { z } from \"zod\";\nimport { groupTaskMetadataIssuesByTask } from \"@trigger.dev/core/v3\";\n\nexport type ESMRequireError = {\n type: \"esm-require-error\";\n moduleName: string;\n};\n\nexport type BuildError = ESMRequireError | string;\n\nfunction errorIsErrorLike(error: unknown): error is Error {\n return (\n error instanceof Error || (typeof error === \"object\" && error !== null && \"message\" in error)\n );\n}\n\nexport function parseBuildErrorStack(error: unknown): BuildError {\n if (typeof error === \"string\") {\n return error;\n }\n\n if (errorIsErrorLike(error)) {\n if (typeof error.stack === \"string\") {\n const isErrRequireEsm = error.stack.includes(\"ERR_REQUIRE_ESM\");\n\n let moduleName = null;\n\n if (isErrRequireEsm) {\n // Regular expression to match the module path\n const moduleRegex = /node_modules\\/(@[^\\/]+\\/[^\\/]+|[^\\/]+)\\/[^\\/]+\\s/;\n const match = moduleRegex.exec(error.stack);\n if (match) {\n moduleName = match[1] as string; // Capture the module name\n\n return {\n type: \"esm-require-error\",\n moduleName,\n };\n }\n }\n } else {\n return error.message;\n }\n }\n\n return \"Unknown error\";\n}\n\nexport function logESMRequireError(parsedError: ESMRequireError, resolvedConfig: ReadConfigResult) {\n logger.log(\n `\\n${chalkError(\"X Error:\")} The ${chalkPurple(\n parsedError.moduleName\n )} module is being required even though it's ESM only, and builds only support CommonJS. There are two ${chalk.underline(\n \"possible\"\n )} ways to fix this:`\n );\n logger.log(\n `\\n${chalkGrey(\"○\")} Dynamically import the module in your code: ${chalkGrey(\n `const myModule = await import(\"${parsedError.moduleName}\");`\n )}`\n );\n\n if (resolvedConfig.status === \"file\") {\n const relativePath = relative(resolvedConfig.config.projectDir, resolvedConfig.path).replace(\n /\\\\/g,\n \"/\"\n );\n\n logger.log(\n `${chalkGrey(\"○\")} ${chalk.underline(\"Or\")} add ${chalkPurple(\n parsedError.moduleName\n )} to the ${chalkGreen(\"dependenciesToBundle\")} array in your config file ${chalkGrey(\n `(${relativePath})`\n )}. This will bundle the module with your code.\\n`\n );\n } else {\n logger.log(\n `${chalkGrey(\"○\")} ${chalk.underline(\"Or\")} add ${chalkPurple(\n parsedError.moduleName\n )} to the ${chalkGreen(\"dependenciesToBundle\")} array in your config file ${chalkGrey(\n \"(you'll need to create one)\"\n )}. This will bundle the module with your code.\\n`\n );\n }\n}\n\nexport type PackageNotFoundError = {\n type: \"package-not-found-error\";\n packageName: string;\n};\n\nexport type NoMatchingVersionError = {\n type: \"no-matching-version-error\";\n packageName: string;\n};\n\nexport type NpmInstallError = PackageNotFoundError | NoMatchingVersionError | string;\n\nexport function parseNpmInstallError(error: unknown): NpmInstallError {\n if (typeof error === \"string\") {\n return error;\n }\n\n if (error instanceof Error) {\n if (typeof error.stack === \"string\") {\n const isPackageNotFoundError =\n error.stack.includes(\"ERR! 404 Not Found\") &&\n error.stack.includes(\"is not in this registry\");\n let packageName = null;\n\n if (isPackageNotFoundError) {\n // Regular expression to match the package name\n const packageNameRegex = /'([^']+)' is not in this registry/;\n const match = packageNameRegex.exec(error.stack);\n if (match) {\n packageName = match[1] as string; // Capture the package name\n }\n }\n\n if (packageName) {\n return {\n type: \"package-not-found-error\",\n packageName,\n };\n }\n\n const noMatchingVersionRegex = /No matching version found for ([^\\s]+)\\s/;\n const noMatchingVersionMatch = noMatchingVersionRegex.exec(error.stack);\n if (noMatchingVersionMatch) {\n return {\n type: \"no-matching-version-error\",\n packageName: (noMatchingVersionMatch[1] as string).replace(/.$/, \"\"),\n };\n }\n\n return error.message;\n } else {\n return error.message;\n }\n }\n\n return \"Unknown error\";\n}\n\nexport function logTaskMetadataParseError(zodIssues: z.ZodIssue[], tasks: any) {\n logger.log(\n `\\n${chalkError(\"X Error:\")} Failed to start. The following ${\n zodIssues.length === 1 ? \"task issue was\" : \"task issues were\"\n } found:`\n );\n\n const groupedIssues = groupTaskMetadataIssuesByTask(tasks, zodIssues);\n\n for (const key in groupedIssues) {\n const taskWithIssues = groupedIssues[key];\n\n if (!taskWithIssues) {\n continue;\n }\n\n logger.log(\n `\\n ${chalkWarning(\"❯\")} ${taskWithIssues.exportName} ${chalkGrey(\"in\")} ${\n taskWithIssues.filePath\n }`\n );\n\n for (const issue of taskWithIssues.issues) {\n if (issue.path) {\n logger.log(` ${chalkError(\"x\")} ${issue.path} ${chalkGrey(issue.message)}`);\n } else {\n logger.log(` ${chalkError(\"x\")} ${chalkGrey(issue.message)}`);\n }\n }\n }\n}\n","export function safeJsonParse(json?: string): unknown {\n if (!json) {\n return undefined;\n }\n\n try {\n return JSON.parse(json);\n } catch {\n return undefined;\n }\n}\n","import {\n CreateBackgroundWorkerRequestBody,\n ResolvedConfig,\n TaskResource,\n ZodMessageHandler,\n ZodMessageSender,\n clientWebsocketMessages,\n detectDependencyVersion,\n serverWebsocketMessages,\n} from \"@trigger.dev/core/v3\";\nimport { watch } from \"chokidar\";\nimport { Command } from \"commander\";\nimport { BuildContext, Metafile, context } from \"esbuild\";\nimport { resolve as importResolve } from \"import-meta-resolve\";\nimport { render, useInput } from \"ink\";\nimport { createHash } from \"node:crypto\";\nimport fs, { readFileSync } from \"node:fs\";\nimport { ClientRequestArgs } from \"node:http\";\nimport { basename, dirname, join } from \"node:path\";\nimport pDebounce from \"p-debounce\";\nimport { WebSocket } from \"partysocket\";\nimport React, { Suspense, useEffect } from \"react\";\nimport { ClientOptions, WebSocket as wsWebSocket } from \"ws\";\nimport { z } from \"zod\";\nimport * as packageJson from \"../../package.json\";\nimport { CliApiClient } from \"../apiClient\";\nimport { CommonCommandOptions, commonOptions, wrapCommandAction } from \"../cli/common.js\";\nimport {\n bundleDependenciesPlugin,\n bundleTriggerDevCore,\n workerSetupImportConfigPlugin,\n} from \"../utilities/build\";\nimport { chalkError, chalkGrey, chalkPurple, chalkTask, chalkWorker } from \"../utilities/cliOutput\";\nimport { readConfig } from \"../utilities/configFiles\";\nimport { readJSONFile } from \"../utilities/fileSystem\";\nimport { printDevBanner, printStandloneInitialBanner } from \"../utilities/initialBanner.js\";\nimport {\n detectPackageNameFromImportPath,\n parsePackageName,\n stripWorkspaceFromVersion,\n} from \"../utilities/installPackages\";\nimport { logger } from \"../utilities/logger.js\";\nimport { isLoggedIn } from \"../utilities/session.js\";\nimport { createTaskFileImports, gatherTaskFiles } from \"../utilities/taskFiles\";\nimport { TaskMetadataParseError, UncaughtExceptionError } from \"../workers/common/errors\";\nimport { BackgroundWorker, BackgroundWorkerCoordinator } from \"../workers/dev/backgroundWorker.js\";\nimport { runtimeCheck } from \"../utilities/runtimeCheck\";\nimport {\n logESMRequireError,\n logTaskMetadataParseError,\n parseBuildErrorStack,\n parseNpmInstallError,\n} from \"../utilities/deployErrors\";\nimport { findUp, pathExists } from \"find-up\";\n\nlet apiClient: CliApiClient | undefined;\n\nconst DevCommandOptions = CommonCommandOptions.extend({\n debugger: z.boolean().default(false),\n debugOtel: z.boolean().default(false),\n config: z.string().optional(),\n projectRef: z.string().optional(),\n});\n\ntype DevCommandOptions = z.infer<typeof DevCommandOptions>;\n\nexport function configureDevCommand(program: Command) {\n return commonOptions(\n program\n .command(\"dev\")\n .description(\"Run your Trigger.dev tasks locally\")\n .argument(\"[path]\", \"The path to the project\", \".\")\n .option(\"-c, --config <config file>\", \"The name of the config file, found at [path].\")\n .option(\n \"-p, --project-ref <project ref>\",\n \"The project ref. Required if there is no config file.\"\n )\n .option(\"--debugger\", \"Enable the debugger\")\n .option(\"--debug-otel\", \"Enable OpenTelemetry debugging\")\n ).action(async (path, options) => {\n wrapCommandAction(\"dev\", DevCommandOptions, options, async (opts) => {\n await devCommand(path, opts);\n });\n });\n}\n\nconst MINIMUM_NODE_MAJOR = 18;\nconst MINIMUM_NODE_MINOR = 16;\n\nexport async function devCommand(dir: string, options: DevCommandOptions) {\n try {\n runtimeCheck(MINIMUM_NODE_MAJOR, MINIMUM_NODE_MINOR);\n } catch (e) {\n logger.log(`${chalkError(\"X Error:\")} ${e}`);\n process.exitCode = 1;\n return;\n }\n\n const authorization = await isLoggedIn(options.profile);\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n logger.log(\n `${chalkError(\n \"X Error:\"\n )} Connecting to the server failed. Please check your internet connection or contact eric@trigger.dev for help.`\n );\n } else {\n logger.log(`${chalkError(\"X Error:\")} You must login first. Use the \\`login\\` CLI command.`);\n }\n process.exitCode = 1;\n return;\n }\n\n const devInstance = await startDev(dir, options, authorization.auth);\n const { waitUntilExit } = devInstance.devReactElement;\n await waitUntilExit();\n}\n\nasync function startDev(\n dir: string,\n options: DevCommandOptions,\n authorization: { apiUrl: string; accessToken: string }\n) {\n let rerender: (node: React.ReactNode) => void | undefined;\n\n try {\n if (options.logLevel) {\n logger.loggerLevel = options.logLevel;\n }\n\n await printStandloneInitialBanner(true);\n printDevBanner();\n\n logger.debug(\"Starting dev session\", { dir, options, authorization });\n\n let config = await readConfig(dir, {\n projectRef: options.projectRef,\n configFile: options.config,\n });\n\n logger.debug(\"Initial config\", { config });\n\n async function getDevReactElement(\n configParam: ResolvedConfig,\n authorization: { apiUrl: string; accessToken: string },\n configPath?: string\n ) {\n const accessToken = authorization.accessToken;\n const apiUrl = authorization.apiUrl;\n\n apiClient = new CliApiClient(apiUrl, accessToken);\n\n const devEnv = await apiClient.getProjectEnv({\n projectRef: config.config.project,\n env: \"dev\",\n });\n\n if (!devEnv.success) {\n if (devEnv.error === \"Project not found\") {\n logger.error(\n `Project not found: ${config.config.project}. Ensure you are using the correct project ref and CLI profile (use --profile). Currently using the \"${options.profile}\" profile, which points to ${authorization.apiUrl}`\n );\n } else {\n logger.error(\n `Failed to initialize dev environment: ${devEnv.error}. Using project ref ${config.config.project}`\n );\n }\n\n process.exit(1);\n }\n\n const environmentClient = new CliApiClient(apiUrl, devEnv.data.apiKey);\n\n return (\n <DevUI\n config={configParam}\n apiUrl={apiUrl}\n apiKey={devEnv.data.apiKey}\n environmentClient={environmentClient}\n projectName={devEnv.data.name}\n debuggerOn={options.debugger}\n debugOtel={options.debugOtel}\n configPath={configPath}\n />\n );\n }\n\n const devReactElement = render(\n await getDevReactElement(\n config.config,\n authorization,\n config.status === \"file\" ? config.path : undefined\n )\n );\n\n rerender = devReactElement.rerender;\n\n return {\n devReactElement,\n stop: async () => {\n devReactElement.unmount();\n },\n };\n } catch (e) {\n throw e;\n }\n}\n\ntype DevProps = {\n config: ResolvedConfig;\n apiUrl: string;\n apiKey: string;\n environmentClient: CliApiClient;\n projectName: string;\n debuggerOn: boolean;\n debugOtel: boolean;\n configPath?: string;\n};\n\nfunction useDev({\n config,\n apiUrl,\n apiKey,\n environmentClient,\n projectName,\n debuggerOn,\n debugOtel,\n configPath,\n}: DevProps) {\n useEffect(() => {\n const websocketUrl = new URL(apiUrl);\n websocketUrl.protocol = websocketUrl.protocol.replace(\"http\", \"ws\");\n websocketUrl.pathname = `/ws`;\n\n const websocket = new WebSocket(websocketUrl.href, [], {\n WebSocket: WebsocketFactory(apiKey),\n connectionTimeout: 10000,\n maxRetries: 10,\n minReconnectionDelay: 1000,\n maxReconnectionDelay: 30000,\n reconnectionDelayGrowFactor: 1.4, // This leads to the following retry times: 1, 1.4, 1.96, 2.74, 3.84, 5.38, 7.53, 10.54, 14.76, 20.66\n maxEnqueuedMessages: 250,\n });\n\n const sender = new ZodMessageSender({\n schema: clientWebsocketMessages,\n sender: async (message) => {\n websocket.send(JSON.stringify(message));\n },\n });\n\n const backgroundWorkerCoordinator = new BackgroundWorkerCoordinator(\n `${apiUrl}/projects/v3/${config.project}`\n );\n\n websocket.addEventListener(\"open\", async (event) => {});\n websocket.addEventListener(\"close\", (event) => {});\n websocket.addEventListener(\"error\", (event) => {});\n\n backgroundWorkerCoordinator.onWorkerTaskHeartbeat.attach(\n async ({ worker, backgroundWorkerId, id }) => {\n await sender.send(\"BACKGROUND_WORKER_MESSAGE\", {\n backgroundWorkerId,\n data: {\n type: \"TASK_HEARTBEAT\",\n id,\n },\n });\n }\n );\n\n backgroundWorkerCoordinator.onTaskCompleted.attach(\n async ({ backgroundWorkerId, completion, execution }) => {\n await sender.send(\"BACKGROUND_WORKER_MESSAGE\", {\n backgroundWorkerId,\n data: {\n type: \"TASK_RUN_COMPLETED\",\n completion,\n execution,\n },\n });\n }\n );\n\n backgroundWorkerCoordinator.onWorkerRegistered.attach(async ({ id, worker, record }) => {\n await sender.send(\"READY_FOR_TASKS\", {\n backgroundWorkerId: id,\n });\n });\n\n backgroundWorkerCoordinator.onWorkerDeprecated.attach(async ({ id, worker }) => {\n await sender.send(\"BACKGROUND_WORKER_DEPRECATED\", {\n backgroundWorkerId: id,\n });\n });\n\n websocket.addEventListener(\"message\", async (event) => {\n const data = JSON.parse(\n typeof event.data === \"string\" ? event.data : new TextDecoder(\"utf-8\").decode(event.data)\n );\n\n const messageHandler = new ZodMessageHandler({\n schema: serverWebsocketMessages,\n messages: {\n SERVER_READY: async (payload) => {\n for (const worker of backgroundWorkerCoordinator.currentWorkers) {\n await sender.send(\"READY_FOR_TASKS\", {\n backgroundWorkerId: worker.id,\n });\n }\n },\n BACKGROUND_WORKER_MESSAGE: async (payload) => {\n await backgroundWorkerCoordinator.handleMessage(\n payload.backgroundWorkerId,\n payload.data\n );\n },\n },\n });\n\n await messageHandler.handleMessage(data);\n });\n\n let ctx: BuildContext | undefined;\n\n async function runBuild() {\n if (ctx) {\n // This will stop the watching\n await ctx.dispose();\n }\n\n let latestWorkerContentHash: string | undefined;\n\n const taskFiles = await gatherTaskFiles(config);\n\n const workerFacade = readFileSync(\n new URL(importResolve(\"./workers/dev/worker-facade.js\", import.meta.url)).href.replace(\n \"file://\",\n \"\"\n ),\n \"utf-8\"\n );\n\n const workerSetupPath = new URL(\n importResolve(\"./workers/dev/worker-setup.js\", import.meta.url)\n ).href.replace(\"file://\", \"\");\n\n let entryPointContents = workerFacade\n .replace(\"__TASKS__\", createTaskFileImports(taskFiles))\n .replace(\"__WORKER_SETUP__\", `import { tracingSDK, sender } from \"${workerSetupPath}\";`);\n\n if (configPath) {\n logger.debug(\"Importing project config from\", { configPath });\n\n entryPointContents = entryPointContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `import * as importedConfigExports from \"${configPath}\"; const importedConfig = importedConfigExports.config; const handleError = importedConfigExports.handleError;`\n );\n } else {\n entryPointContents = entryPointContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `const importedConfig = undefined; const handleError = undefined;`\n );\n }\n\n let firstBuild = true;\n\n logger.log(chalkGrey(\"○ Building background worker…\"));\n\n ctx = await context({\n stdin: {\n contents: entryPointContents,\n resolveDir: process.cwd(),\n sourcefile: \"__entryPoint.ts\",\n },\n bundle: true,\n metafile: true,\n write: false,\n minify: false,\n sourcemap: \"external\", // does not set the //# sourceMappingURL= comment in the file, we handle it ourselves\n logLevel: \"error\",\n platform: \"node\",\n format: \"cjs\", // This is needed to support opentelemetry instrumentation that uses module patching\n target: [\"node18\", \"es2020\"],\n outdir: \"out\",\n define: {\n TRIGGER_API_URL: `\"${config.triggerUrl}\"`,\n __PROJECT_CONFIG__: JSON.stringify(config),\n },\n plugins: [\n bundleTriggerDevCore(\"workerFacade\", config.tsconfigPath),\n bundleDependenciesPlugin(\n \"workerFacade\",\n (config.dependenciesToBundle ?? []).concat([/^@trigger.dev/]),\n config.tsconfigPath\n ),\n workerSetupImportConfigPlugin(configPath),\n {\n name: \"trigger.dev v3\",\n setup(build) {\n build.onEnd(async (result) => {\n if (result.errors.length > 0) return;\n if (!result || !result.outputFiles) {\n logger.error(\"Build failed: no result\");\n return;\n }\n\n if (!firstBuild) {\n logger.log(chalkGrey(\"○ Building background worker…\"));\n }\n\n const metaOutputKey = join(\"out\", `stdin.js`);\n\n const metaOutput = result.metafile!.outputs[metaOutputKey];\n\n if (!metaOutput) {\n throw new Error(`Could not find metafile`);\n }\n\n const outputFileKey = join(config.projectDir, metaOutputKey);\n const outputFile = result.outputFiles.find((file) => file.path === outputFileKey);\n\n if (!outputFile) {\n throw new Error(\n `Could not find output file for entry point ${metaOutput.entryPoint}`\n );\n }\n\n const sourceMapFileKey = join(config.projectDir, `${metaOutputKey}.map`);\n const sourceMapFile = result.outputFiles.find(\n (file) => file.path === sourceMapFileKey\n );\n\n const md5Hasher = createHash(\"md5\");\n md5Hasher.update(Buffer.from(outputFile.contents.buffer));\n\n const contentHash = md5Hasher.digest(\"hex\");\n\n if (latestWorkerContentHash === contentHash) {\n logger.log(chalkGrey(\"○ No changes detected, skipping build…\"));\n\n return;\n }\n\n // Create a file at join(dir, \".trigger\", path) with the fileContents\n const fullPath = join(config.projectDir, \".trigger\", `${contentHash}.js`);\n const sourceMapPath = `${fullPath}.map`;\n\n const outputFileWithSourceMap = `${\n outputFile.text\n }\\n//# sourceMappingURL=${basename(sourceMapPath)}`;\n\n await fs.promises.mkdir(dirname(fullPath), { recursive: true });\n await fs.promises.writeFile(fullPath, outputFileWithSourceMap);\n\n logger.debug(`Wrote background worker to ${fullPath}`);\n\n const dependencies = await gatherRequiredDependencies(metaOutput, config);\n\n if (sourceMapFile) {\n const sourceMapPath = `${fullPath}.map`;\n await fs.promises.writeFile(sourceMapPath, sourceMapFile.text);\n }\n\n const environmentVariablesResponse =\n await environmentClient.getEnvironmentVariables(config.project);\n\n const processEnv = await gatherProcessEnv();\n\n const backgroundWorker = new BackgroundWorker(fullPath, {\n projectConfig: config,\n dependencies,\n env: {\n ...processEnv,\n TRIGGER_API_URL: apiUrl,\n TRIGGER_SECRET_KEY: apiKey,\n ...(environmentVariablesResponse.success\n ? environmentVariablesResponse.data.variables\n : {}),\n },\n debuggerOn,\n debugOtel,\n });\n\n try {\n await backgroundWorker.initialize();\n\n latestWorkerContentHash = contentHash;\n\n let packageVersion: string | undefined;\n\n const taskResources: Array<TaskResource> = [];\n\n if (!backgroundWorker.tasks) {\n throw new Error(`Background Worker started without tasks`);\n }\n\n for (const task of backgroundWorker.tasks) {\n taskResources.push(task);\n\n packageVersion = task.packageVersion;\n }\n\n if (!packageVersion) {\n throw new Error(`Background Worker started without package version`);\n }\n\n // Check for any duplicate task ids\n const taskIds = taskResources.map((task) => task.id);\n const duplicateTaskIds = taskIds.filter(\n (id, index) => taskIds.indexOf(id) !== index\n );\n\n if (duplicateTaskIds.length > 0) {\n logger.error(\n createDuplicateTaskIdOutputErrorMessage(duplicateTaskIds, taskResources)\n );\n return;\n }\n\n const backgroundWorkerBody: CreateBackgroundWorkerRequestBody = {\n localOnly: true,\n metadata: {\n packageVersion,\n cliPackageVersion: packageJson.version,\n tasks: taskResources,\n contentHash: contentHash,\n },\n };\n\n const backgroundWorkerRecord = await environmentClient.createBackgroundWorker(\n config.project,\n backgroundWorkerBody\n );\n\n if (!backgroundWorkerRecord.success) {\n throw new Error(backgroundWorkerRecord.error);\n }\n\n backgroundWorker.metadata = backgroundWorkerRecord.data;\n\n logger.log(\n `${chalkGrey(\n `○ Background worker started -> ${chalkWorker(\n backgroundWorkerRecord.data.version\n )}`\n )}`\n );\n\n firstBuild = false;\n\n await backgroundWorkerCoordinator.registerWorker(\n backgroundWorkerRecord.data,\n backgroundWorker\n );\n } catch (e) {\n if (e instanceof TaskMetadataParseError) {\n logTaskMetadataParseError(e.zodIssues, e.tasks);\n return;\n } else if (e instanceof UncaughtExceptionError) {\n const parsedBuildError = parseBuildErrorStack(e.originalError);\n\n if (typeof parsedBuildError !== \"string\") {\n logESMRequireError(\n parsedBuildError,\n configPath\n ? { status: \"file\", path: configPath, config }\n : { status: \"in-memory\", config }\n );\n return;\n } else {\n }\n\n if (e.originalError.stack) {\n logger.log(\n `${chalkError(\"X Error:\")} Worker failed to start`,\n e.originalError.stack\n );\n }\n\n return;\n }\n\n const parsedError = parseNpmInstallError(e);\n\n if (typeof parsedError === \"string\") {\n logger.log(`${chalkError(\"X Error:\")} ${parsedError}`);\n } else {\n switch (parsedError.type) {\n case \"package-not-found-error\": {\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not be found in the npm registry.`\n );\n\n break;\n }\n case \"no-matching-version-error\": {\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not resolve because the version doesn't exist`\n );\n\n break;\n }\n }\n }\n }\n });\n },\n },\n ],\n });\n\n await ctx.watch();\n }\n\n const throttledRebuild = pDebounce(runBuild, 250, { before: true });\n\n const taskFileWatcher = watch(\n config.triggerDirectories.map((triggerDir) => `${triggerDir}/*.ts`),\n {\n ignoreInitial: true,\n }\n );\n\n taskFileWatcher.on(\"add\", async (path) => {\n throttledRebuild().catch((error) => {\n logger.error(error);\n });\n });\n\n taskFileWatcher.on(\"unlink\", async (path) => {\n throttledRebuild().catch((error) => {\n logger.error(error);\n });\n });\n\n throttledRebuild().catch((error) => {\n logger.error(error);\n });\n\n return () => {\n logger.debug(`Shutting down dev session for ${config.project}`);\n\n taskFileWatcher.close();\n\n websocket?.close();\n backgroundWorkerCoordinator.close();\n ctx?.dispose().catch((error) => {\n console.error(error);\n });\n };\n }, [config, apiUrl, apiKey, environmentClient]);\n}\n\nfunction DevUI(props: DevProps) {\n return (\n <Suspense>\n <DevUIImp {...props} />\n </Suspense>\n );\n}\n\nfunction DevUIImp(props: DevProps) {\n const dev = useDev(props);\n\n return (\n <>\n <HotKeys />\n </>\n );\n}\n\nfunction useHotkeys() {\n useInput(async (input, key) => {});\n}\n\nfunction HotKeys() {\n useHotkeys();\n\n return <></>;\n}\n\nfunction WebsocketFactory(apiKey: string) {\n return class extends wsWebSocket {\n constructor(address: string | URL, options?: ClientOptions | ClientRequestArgs) {\n super(address, { ...(options ?? {}), headers: { Authorization: `Bearer ${apiKey}` } });\n }\n };\n}\n\n// Returns the dependencies that are required by the output that are found in output and the CLI package dependencies\n// Returns the dependency names and the version to use (taken from the CLI deps package.json)\nasync function gatherRequiredDependencies(\n outputMeta: Metafile[\"outputs\"][string],\n config: ResolvedConfig\n) {\n const dependencies: Record<string, string> = {};\n\n logger.debug(\"Gathering required dependencies from imports\", {\n imports: outputMeta.imports,\n });\n\n for (const file of outputMeta.imports) {\n if ((file.kind !== \"require-call\" && file.kind !== \"dynamic-import\") || !file.external) {\n continue;\n }\n\n const packageName = detectPackageNameFromImportPath(file.path);\n\n if (dependencies[packageName]) {\n continue;\n }\n\n const internalDependencyVersion =\n (packageJson.dependencies as Record<string, string>)[packageName] ??\n detectDependencyVersion(packageName);\n\n if (internalDependencyVersion) {\n dependencies[packageName] = stripWorkspaceFromVersion(internalDependencyVersion);\n }\n }\n\n if (config.additionalPackages) {\n const projectPackageJson = await readJSONFile(join(config.projectDir, \"package.json\"));\n\n for (const packageName of config.additionalPackages) {\n if (dependencies[packageName]) {\n continue;\n }\n\n const packageParts = parsePackageName(packageName);\n\n if (packageParts.version) {\n dependencies[packageParts.name] = packageParts.version;\n continue;\n } else {\n const externalDependencyVersion = {\n ...projectPackageJson?.devDependencies,\n ...projectPackageJson?.dependencies,\n }[packageName];\n\n if (externalDependencyVersion) {\n dependencies[packageParts.name] = externalDependencyVersion;\n continue;\n } else {\n logger.warn(\n `Could not find version for package ${packageName}, add a version specifier to the package name (e.g. ${packageParts.name}@latest) or add it to your project's package.json`\n );\n }\n }\n }\n }\n\n return dependencies;\n}\n\nfunction createDuplicateTaskIdOutputErrorMessage(\n duplicateTaskIds: Array<string>,\n taskResources: Array<TaskResource>\n) {\n const duplicateTable = duplicateTaskIds\n .map((id) => {\n const tasks = taskResources.filter((task) => task.id === id);\n\n return `\\n\\n${chalkTask(id)} was found in:${tasks\n .map((task) => `\\n${task.filePath} -> ${task.exportName}`)\n .join(\"\")}`;\n })\n .join(\"\");\n\n return `Duplicate ${chalkTask(\"task id\")} detected:${duplicateTable}`;\n}\n\nasync function gatherProcessEnv() {\n const env = {\n NODE_ENV: process.env.NODE_ENV ?? \"development\",\n PATH: process.env.PATH,\n USER: process.env.USER,\n SHELL: process.env.SHELL,\n NVM_INC: process.env.NVM_INC,\n NVM_DIR: process.env.NVM_DIR,\n NVM_BIN: process.env.NVM_BIN,\n LANG: process.env.LANG,\n TERM: process.env.TERM,\n NODE_PATH: await amendNodePathWithPnpmNodeModules(process.env.NODE_PATH),\n HOME: process.env.HOME,\n BUN_INSTALL: process.env.BUN_INSTALL,\n };\n\n // Filter out undefined values\n return Object.fromEntries(Object.entries(env).filter(([key, value]) => value !== undefined));\n}\n\nasync function amendNodePathWithPnpmNodeModules(nodePath?: string): Promise<string | undefined> {\n const pnpmModulesPath = await findPnpmNodeModulesPath();\n\n if (!pnpmModulesPath) {\n return nodePath;\n }\n\n if (nodePath) {\n if (nodePath.includes(pnpmModulesPath)) {\n return nodePath;\n }\n\n return `${nodePath}:${pnpmModulesPath}`;\n }\n\n return pnpmModulesPath;\n}\n\nasync function findPnpmNodeModulesPath(): Promise<string | undefined> {\n return await findUp(\n async (directory) => {\n const pnpmModules = join(directory, \"node_modules\", \".pnpm\", \"node_modules\");\n\n const hasPnpmNodeModules = await pathExists(pnpmModules);\n\n if (hasPnpmNodeModules) {\n return pnpmModules;\n }\n },\n { type: \"directory\" }\n );\n}\n","import { z } from \"zod\";\n\nexport class UncaughtExceptionError extends Error {\n constructor(\n public readonly originalError: { name: string; message: string; stack?: string },\n public readonly origin: \"uncaughtException\" | \"unhandledRejection\"\n ) {\n super(`Uncaught exception: ${originalError.message}`);\n\n this.name = \"UncaughtExceptionError\";\n }\n}\n\nexport class TaskMetadataParseError extends Error {\n constructor(\n public readonly zodIssues: z.ZodIssue[],\n public readonly tasks: any\n ) {\n super(`Failed to parse task metadata`);\n\n this.name = \"TaskMetadataParseError\";\n }\n}\n","import {\n BackgroundWorkerProperties,\n BackgroundWorkerServerMessages,\n CreateBackgroundWorkerResponse,\n ResolvedConfig,\n SemanticInternalAttributes,\n TaskMetadataWithFilePath,\n TaskRunBuiltInError,\n TaskRunError,\n TaskRunErrorCodes,\n TaskRunExecution,\n TaskRunExecutionPayload,\n TaskRunExecutionResult,\n ZodMessageHandler,\n ZodMessageSender,\n childToWorkerMessages,\n correctErrorStackTrace,\n formatDurationMilliseconds,\n workerToChildMessages,\n} from \"@trigger.dev/core/v3\";\nimport dotenv from \"dotenv\";\nimport { Evt } from \"evt\";\nimport { ChildProcess, fork } from \"node:child_process\";\nimport { dirname, resolve } from \"node:path\";\nimport terminalLink from \"terminal-link\";\nimport {\n chalkError,\n chalkGrey,\n chalkLink,\n chalkRun,\n chalkSuccess,\n chalkTask,\n chalkWarning,\n chalkWorker,\n prettyPrintDate,\n} from \"../../utilities/cliOutput.js\";\nimport { safeDeleteFileSync } from \"../../utilities/fileSystem.js\";\nimport { installPackages } from \"../../utilities/installPackages.js\";\nimport { logger } from \"../../utilities/logger.js\";\nimport { TaskMetadataParseError, UncaughtExceptionError } from \"../common/errors.js\";\n\nexport type CurrentWorkers = BackgroundWorkerCoordinator[\"currentWorkers\"];\nexport class BackgroundWorkerCoordinator {\n public onTaskCompleted: Evt<{\n backgroundWorkerId: string;\n completion: TaskRunExecutionResult;\n worker: BackgroundWorker;\n execution: TaskRunExecution;\n }> = new Evt();\n public onWorkerRegistered: Evt<{\n worker: BackgroundWorker;\n id: string;\n record: CreateBackgroundWorkerResponse;\n }> = new Evt();\n public onWorkerTaskHeartbeat: Evt<{\n id: string;\n backgroundWorkerId: string;\n worker: BackgroundWorker;\n }> = new Evt();\n public onWorkerDeprecated: Evt<{ worker: BackgroundWorker; id: string }> = new Evt();\n private _backgroundWorkers: Map<string, BackgroundWorker> = new Map();\n private _records: Map<string, CreateBackgroundWorkerResponse> = new Map();\n private _deprecatedWorkers: Set<string> = new Set();\n\n constructor(private baseURL: string) {\n this.onTaskCompleted.attach(async ({ completion, execution }) => {\n if (!completion.ok && typeof completion.retry !== \"undefined\") {\n return;\n }\n\n await this.#notifyWorkersOfTaskCompletion(completion, execution);\n });\n }\n\n async #notifyWorkersOfTaskCompletion(\n completion: TaskRunExecutionResult,\n execution: TaskRunExecution\n ) {\n for (const worker of this._backgroundWorkers.values()) {\n await worker.taskRunCompletedNotification(completion, execution);\n }\n }\n\n get currentWorkers() {\n return Array.from(this._backgroundWorkers.entries()).map(([id, worker]) => ({\n id,\n worker,\n record: this._records.get(id)!,\n isDeprecated: this._deprecatedWorkers.has(id),\n }));\n }\n\n async registerWorker(record: CreateBackgroundWorkerResponse, worker: BackgroundWorker) {\n for (const [workerId, existingWorker] of this._backgroundWorkers.entries()) {\n if (workerId === record.id) {\n continue;\n }\n\n this._deprecatedWorkers.add(workerId);\n this.onWorkerDeprecated.post({ worker: existingWorker, id: workerId });\n }\n\n this._backgroundWorkers.set(record.id, worker);\n this._records.set(record.id, record);\n this.onWorkerRegistered.post({ worker, id: record.id, record });\n\n worker.onTaskHeartbeat.attach((id) => {\n this.onWorkerTaskHeartbeat.post({ id, backgroundWorkerId: record.id, worker });\n });\n }\n\n close() {\n for (const worker of this._backgroundWorkers.values()) {\n worker.close();\n }\n\n this._backgroundWorkers.clear();\n this._records.clear();\n }\n\n async handleMessage(id: string, message: BackgroundWorkerServerMessages) {\n logger.debug(`Received message from worker ${id}`, JSON.stringify({ workerMessage: message }));\n\n switch (message.type) {\n case \"EXECUTE_RUNS\": {\n await Promise.all(message.payloads.map((payload) => this.#executeTaskRun(id, payload)));\n break;\n }\n case \"CANCEL_ATTEMPT\": {\n // Need to cancel the attempt somehow here\n const worker = this._backgroundWorkers.get(id);\n\n if (!worker) {\n logger.error(`Could not find worker ${id}`);\n return;\n }\n\n await worker.cancelRun(message.taskRunId);\n }\n }\n }\n\n async #executeTaskRun(id: string, payload: TaskRunExecutionPayload) {\n const worker = this._backgroundWorkers.get(id);\n\n if (!worker) {\n logger.error(`Could not find worker ${id}`);\n return;\n }\n\n const record = this._records.get(id);\n\n if (!record) {\n logger.error(`Could not find worker record ${id}`);\n return;\n }\n\n const { execution } = payload;\n\n // ○ Mar 27 09:17:25.653 -> View logs | 20240326.20 | create-avatar | run_slufhjdfiv8ejnrkw9dsj.1\n\n const logsUrl = `${this.baseURL}/runs/${execution.run.id}`;\n\n const pipe = chalkGrey(\"|\");\n const bullet = chalkGrey(\"○\");\n const link = chalkLink(terminalLink(\"View logs\", logsUrl));\n let timestampPrefix = chalkGrey(prettyPrintDate(payload.execution.attempt.startedAt));\n const workerPrefix = chalkWorker(record.version);\n const taskPrefix = chalkTask(execution.task.id);\n const runId = chalkRun(`${execution.run.id}.${execution.attempt.number}`);\n\n logger.log(\n `${bullet} ${timestampPrefix} ${chalkGrey(\n \"->\"\n )} ${link} ${pipe} ${workerPrefix} ${pipe} ${taskPrefix} ${pipe} ${runId}`\n );\n\n const now = performance.now();\n\n const completion = await worker.executeTaskRun(payload);\n\n const elapsed = performance.now() - now;\n\n const retryingText = chalkGrey(\n !completion.ok && completion.skippedRetrying\n ? \" (retrying skipped)\"\n : !completion.ok && completion.retry !== undefined\n ? ` (retrying in ${completion.retry.delay}ms)`\n : \"\"\n );\n\n const resultText = !completion.ok\n ? completion.error.type === \"INTERNAL_ERROR\" &&\n (completion.error.code === TaskRunErrorCodes.TASK_EXECUTION_ABORTED ||\n completion.error.code === TaskRunErrorCodes.TASK_RUN_CANCELLED)\n ? chalkWarning(\"Cancelled\")\n : `${chalkError(\"Error\")}${retryingText}`\n : chalkSuccess(\"Success\");\n\n const errorText = !completion.ok\n ? this.#formatErrorLog(completion.error)\n : \"retry\" in completion\n ? `retry in ${completion.retry}ms`\n : \"\";\n\n const elapsedText = chalkGrey(`(${formatDurationMilliseconds(elapsed, { style: \"short\" })})`);\n\n timestampPrefix = chalkGrey(prettyPrintDate());\n\n logger.log(\n `${bullet} ${timestampPrefix} ${chalkGrey(\n \"->\"\n )} ${link} ${pipe} ${workerPrefix} ${pipe} ${taskPrefix} ${pipe} ${runId} ${pipe} ${resultText} ${elapsedText}${errorText}`\n );\n\n this.onTaskCompleted.post({ completion, execution, worker, backgroundWorkerId: id });\n }\n\n #formatErrorLog(error: TaskRunError) {\n switch (error.type) {\n case \"INTERNAL_ERROR\": {\n return \"\";\n }\n case \"STRING_ERROR\": {\n return `\\n\\n${chalkError(\"X Error:\")} ${error.raw}\\n`;\n }\n case \"CUSTOM_ERROR\": {\n return `\\n\\n${chalkError(\"X Error:\")} ${error.raw}\\n`;\n }\n case \"BUILT_IN_ERROR\": {\n return `\\n\\n${error.stackTrace.replace(/^Error: /, chalkError(\"X Error: \"))}\\n`;\n }\n }\n }\n}\n\nclass UnexpectedExitError extends Error {\n constructor(public code: number) {\n super(`Unexpected exit with code ${code}`);\n\n this.name = \"UnexpectedExitError\";\n }\n}\n\nclass CleanupProcessError extends Error {\n constructor() {\n super(\"Cancelled\");\n\n this.name = \"CleanupProcessError\";\n }\n}\n\nclass CancelledProcessError extends Error {\n constructor() {\n super(\"Cancelled\");\n\n this.name = \"CancelledProcessError\";\n }\n}\n\nexport type BackgroundWorkerParams = {\n env: Record<string, string>;\n dependencies?: Record<string, string>;\n projectConfig: ResolvedConfig;\n debuggerOn: boolean;\n debugOtel?: boolean;\n};\nexport class BackgroundWorker {\n private _initialized: boolean = false;\n private _handler = new ZodMessageHandler({\n schema: childToWorkerMessages,\n });\n\n public onTaskHeartbeat: Evt<string> = new Evt();\n private _onClose: Evt<void> = new Evt();\n\n public tasks: Array<TaskMetadataWithFilePath> = [];\n public metadata: BackgroundWorkerProperties | undefined;\n\n _taskRunProcesses: Map<string, TaskRunProcess> = new Map();\n\n private _closed: boolean = false;\n\n constructor(\n public path: string,\n private params: BackgroundWorkerParams\n ) {}\n\n close() {\n if (this._closed) {\n return;\n }\n\n this._closed = true;\n\n this.onTaskHeartbeat.detach();\n\n // We need to close all the task run processes\n for (const taskRunProcess of this._taskRunProcesses.values()) {\n taskRunProcess.cleanup(true);\n }\n\n // Delete worker files\n this._onClose.post();\n\n safeDeleteFileSync(this.path);\n safeDeleteFileSync(`${this.path}.map`);\n }\n\n async initialize() {\n if (this._initialized) {\n throw new Error(\"Worker already initialized\");\n }\n\n // Install the dependencies in dirname(this.path) using npm and child_process\n if (this.params.dependencies) {\n await installPackages(this.params.dependencies, { cwd: dirname(this.path) });\n }\n\n let resolved = false;\n\n const cwd = dirname(this.path);\n\n const fullEnv = {\n ...this.params.env,\n ...this.#readEnvVars(),\n };\n\n logger.debug(\"Initializing worker\", { path: this.path, cwd, fullEnv });\n\n this.tasks = await new Promise<Array<TaskMetadataWithFilePath>>((resolve, reject) => {\n const child = fork(this.path, {\n stdio: [/*stdin*/ \"ignore\", /*stdout*/ \"pipe\", /*stderr*/ \"pipe\", \"ipc\"],\n cwd,\n env: fullEnv,\n });\n\n // Set a timeout to kill the child process if it doesn't respond\n const timeout = setTimeout(() => {\n if (resolved) {\n return;\n }\n\n resolved = true;\n child.kill();\n reject(new Error(\"Worker timed out\"));\n }, 5000);\n\n child.on(\"message\", async (msg: any) => {\n const message = this._handler.parseMessage(msg);\n\n if (message.type === \"TASKS_READY\" && !resolved) {\n clearTimeout(timeout);\n resolved = true;\n resolve(message.payload.tasks);\n child.kill();\n } else if (message.type === \"UNCAUGHT_EXCEPTION\") {\n clearTimeout(timeout);\n resolved = true;\n reject(new UncaughtExceptionError(message.payload.error, message.payload.origin));\n child.kill();\n } else if (message.type === \"TASKS_FAILED_TO_PARSE\") {\n clearTimeout(timeout);\n resolved = true;\n reject(new TaskMetadataParseError(message.payload.zodIssues, message.payload.tasks));\n child.kill();\n }\n });\n\n child.on(\"exit\", (code) => {\n if (!resolved) {\n clearTimeout(timeout);\n resolved = true;\n reject(new Error(`Worker exited with code ${code}`));\n }\n });\n });\n\n this._initialized = true;\n }\n\n // We need to notify all the task run processes that a task run has completed,\n // in case they are waiting for it through triggerAndWait\n async taskRunCompletedNotification(\n completion: TaskRunExecutionResult,\n execution: TaskRunExecution\n ) {\n for (const taskRunProcess of this._taskRunProcesses.values()) {\n taskRunProcess.taskRunCompletedNotification(completion, execution);\n }\n }\n\n async #initializeTaskRunProcess(payload: TaskRunExecutionPayload): Promise<TaskRunProcess> {\n if (!this.metadata) {\n throw new Error(\"Worker not registered\");\n }\n\n if (!this._taskRunProcesses.has(payload.execution.run.id)) {\n const taskRunProcess = new TaskRunProcess(\n payload.execution,\n this.path,\n {\n ...this.params.env,\n ...(payload.environment ?? {}),\n ...this.#readEnvVars(),\n },\n this.metadata,\n this.params\n );\n\n taskRunProcess.onExit.attach(() => {\n this._taskRunProcesses.delete(payload.execution.run.id);\n });\n\n taskRunProcess.onTaskHeartbeat.attach((id) => {\n this.onTaskHeartbeat.post(id);\n });\n\n await taskRunProcess.initialize();\n\n this._taskRunProcesses.set(payload.execution.run.id, taskRunProcess);\n }\n\n return this._taskRunProcesses.get(payload.execution.run.id) as TaskRunProcess;\n }\n\n async cancelRun(taskRunId: string) {\n const taskRunProcess = this._taskRunProcesses.get(taskRunId);\n\n if (!taskRunProcess) {\n return;\n }\n\n await taskRunProcess.cancel();\n }\n\n // We need to fork the process before we can execute any tasks\n async executeTaskRun(payload: TaskRunExecutionPayload): Promise<TaskRunExecutionResult> {\n try {\n const taskRunProcess = await this.#initializeTaskRunProcess(payload);\n const result = await taskRunProcess.executeTaskRun(payload);\n\n // Kill the worker if the task was successful or if it's not going to be retried);\n await taskRunProcess.cleanup(result.ok || result.retry === undefined);\n\n if (result.ok) {\n return result;\n }\n\n const error = result.error;\n\n if (error.type === \"BUILT_IN_ERROR\") {\n const mappedError = await this.#correctError(error, payload.execution);\n\n return {\n ...result,\n error: mappedError,\n };\n }\n\n return result;\n } catch (e) {\n if (e instanceof CancelledProcessError) {\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_RUN_CANCELLED,\n },\n };\n }\n\n if (e instanceof CleanupProcessError) {\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_EXECUTION_ABORTED,\n },\n };\n }\n\n if (e instanceof UnexpectedExitError) {\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE,\n },\n };\n }\n\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_EXECUTION_FAILED,\n },\n };\n }\n }\n\n #readEnvVars() {\n const result: { [key: string]: string } = {};\n\n dotenv.config({\n processEnv: result,\n path: [\".env\", \".env.local\", \".env.development.local\"].map((p) => resolve(process.cwd(), p)),\n });\n\n process.env.TRIGGER_API_URL && (result.TRIGGER_API_URL = process.env.TRIGGER_API_URL);\n\n // remove TRIGGER_API_URL and TRIGGER_SECRET_KEY, since those should be coming from the worker\n delete result.TRIGGER_API_URL;\n delete result.TRIGGER_SECRET_KEY;\n\n return result;\n }\n\n async #correctError(\n error: TaskRunBuiltInError,\n execution: TaskRunExecution\n ): Promise<TaskRunBuiltInError> {\n return {\n ...error,\n stackTrace: correctErrorStackTrace(error.stackTrace, this.params.projectConfig.projectDir),\n };\n }\n}\n\nclass TaskRunProcess {\n private _handler = new ZodMessageHandler({\n schema: childToWorkerMessages,\n });\n private _sender: ZodMessageSender<typeof workerToChildMessages>;\n private _child: ChildProcess | undefined;\n private _attemptPromises: Map<\n string,\n { resolver: (value: TaskRunExecutionResult) => void; rejecter: (err?: any) => void }\n > = new Map();\n private _attemptStatuses: Map<string, \"PENDING\" | \"REJECTED\" | \"RESOLVED\"> = new Map();\n private _currentExecution: TaskRunExecution | undefined;\n private _isBeingKilled: boolean = false;\n private _isBeingCancelled: boolean = false;\n public onTaskHeartbeat: Evt<string> = new Evt();\n public onExit: Evt<number> = new Evt();\n\n constructor(\n private execution: TaskRunExecution,\n private path: string,\n private env: NodeJS.ProcessEnv,\n private metadata: BackgroundWorkerProperties,\n private worker: BackgroundWorkerParams\n ) {\n this._sender = new ZodMessageSender({\n schema: workerToChildMessages,\n sender: async (message) => {\n if (this._child?.connected && !this._isBeingKilled && !this._child.killed) {\n this._child.send(message);\n }\n },\n });\n }\n\n async cancel() {\n this._isBeingCancelled = true;\n\n await this.cleanup(true);\n }\n\n async initialize() {\n const fullEnv = {\n ...(this.execution.run.isTest ? { TRIGGER_LOG_LEVEL: \"debug\" } : {}),\n ...this.env,\n OTEL_RESOURCE_ATTRIBUTES: JSON.stringify({\n [SemanticInternalAttributes.PROJECT_DIR]: this.worker.projectConfig.projectDir,\n }),\n OTEL_EXPORTER_OTLP_COMPRESSION: \"none\",\n ...(this.worker.debugOtel ? { OTEL_LOG_LEVEL: \"debug\" } : {}),\n };\n\n const cwd = dirname(this.path);\n\n logger.debug(`[${this.execution.run.id}] initializing task run process`, {\n env: fullEnv,\n path: this.path,\n cwd,\n });\n\n this._child = fork(this.path, {\n stdio: [/*stdin*/ \"ignore\", /*stdout*/ \"pipe\", /*stderr*/ \"pipe\", \"ipc\"],\n cwd,\n env: fullEnv,\n execArgv: this.worker.debuggerOn\n ? [\"--inspect-brk\", \"--trace-uncaught\", \"--no-warnings=ExperimentalWarning\"]\n : [\"--trace-uncaught\", \"--no-warnings=ExperimentalWarning\"],\n });\n\n this._child.on(\"message\", this.#handleMessage.bind(this));\n this._child.on(\"exit\", this.#handleExit.bind(this));\n this._child.stdout?.on(\"data\", this.#handleLog.bind(this));\n this._child.stderr?.on(\"data\", this.#handleStdErr.bind(this));\n }\n\n async cleanup(kill: boolean = false) {\n if (kill && this._isBeingKilled) {\n return;\n }\n\n logger.debug(`[${this.execution.run.id}] cleaning up task run process`, { kill });\n\n await this._sender.send(\"CLEANUP\", {\n flush: true,\n kill,\n });\n\n this._isBeingKilled = kill;\n }\n\n async executeTaskRun(payload: TaskRunExecutionPayload): Promise<TaskRunExecutionResult> {\n let resolver: (value: TaskRunExecutionResult) => void;\n let rejecter: (err?: any) => void;\n\n const promise = new Promise<TaskRunExecutionResult>((resolve, reject) => {\n resolver = resolve;\n rejecter = reject;\n });\n\n this._attemptStatuses.set(payload.execution.attempt.id, \"PENDING\");\n\n // @ts-expect-error - We know that the resolver and rejecter are defined\n this._attemptPromises.set(payload.execution.attempt.id, { resolver, rejecter });\n\n const { execution, traceContext } = payload;\n\n this._currentExecution = execution;\n\n await this._sender.send(\"EXECUTE_TASK_RUN\", {\n execution,\n traceContext,\n metadata: this.metadata,\n });\n\n const result = await promise;\n\n this._currentExecution = undefined;\n\n return result;\n }\n\n taskRunCompletedNotification(completion: TaskRunExecutionResult, execution: TaskRunExecution) {\n if (!completion.ok && typeof completion.retry !== \"undefined\") {\n return;\n }\n\n if (execution.run.id === this.execution.run.id) {\n // We don't need to notify the task run process if it's the same as the one we're running\n return;\n }\n\n logger.debug(`[${this.execution.run.id}] task run completed notification`, {\n completion,\n execution,\n });\n\n this._sender.send(\"TASK_RUN_COMPLETED_NOTIFICATION\", {\n completion,\n execution,\n });\n }\n\n async #handleMessage(msg: any) {\n const message = this._handler.parseMessage(msg);\n\n switch (message.type) {\n case \"TASK_RUN_COMPLETED\": {\n const { result, execution } = message.payload;\n\n const promiseStatus = this._attemptStatuses.get(execution.attempt.id);\n\n if (promiseStatus !== \"PENDING\") {\n return;\n }\n\n this._attemptStatuses.set(execution.attempt.id, \"RESOLVED\");\n\n const attemptPromise = this._attemptPromises.get(execution.attempt.id);\n\n if (!attemptPromise) {\n return;\n }\n\n const { resolver } = attemptPromise;\n\n resolver(result);\n\n break;\n }\n case \"READY_TO_DISPOSE\": {\n this.#kill();\n\n break;\n }\n case \"TASK_HEARTBEAT\": {\n this.onTaskHeartbeat.post(message.payload.id);\n\n break;\n }\n case \"TASKS_READY\": {\n break;\n }\n }\n }\n\n async #handleExit(code: number) {\n logger.debug(`[${this.execution.run.id}] task run process exiting`, { code });\n\n // Go through all the attempts currently pending and reject them\n for (const [id, status] of this._attemptStatuses.entries()) {\n if (status === \"PENDING\") {\n this._attemptStatuses.set(id, \"REJECTED\");\n\n const attemptPromise = this._attemptPromises.get(id);\n\n if (!attemptPromise) {\n continue;\n }\n\n const { rejecter } = attemptPromise;\n\n if (this._isBeingCancelled) {\n rejecter(new CancelledProcessError());\n } else if (this._isBeingKilled) {\n rejecter(new CleanupProcessError());\n } else {\n rejecter(new UnexpectedExitError(code));\n }\n }\n }\n\n this.onExit.post(code);\n }\n\n #handleLog(data: Buffer) {\n if (!this._currentExecution) {\n return;\n }\n\n logger.log(\n `[${this.metadata.version}][${this._currentExecution.run.id}.${\n this._currentExecution.attempt.number\n }] ${data.toString()}`\n );\n }\n\n #handleStdErr(data: Buffer) {\n if (this._isBeingKilled) {\n return;\n }\n\n if (!this._currentExecution) {\n logger.error(`[${this.metadata.version}] ${data.toString()}`);\n\n return;\n }\n\n logger.error(\n `[${this.metadata.version}][${this._currentExecution.run.id}.${\n this._currentExecution.attempt.number\n }] ${data.toString()}`\n );\n }\n\n #kill() {\n if (this._child && !this._child.killed) {\n this._child?.kill();\n }\n }\n}\n","import { logger } from \"./logger\";\n\n/**\n * This function is used by the dev CLI to make sure that the runtime is compatible\n */\nexport function runtimeCheck(minimumMajor: number, minimumMinor: number) {\n // Check if the runtime is Node.js\n if (typeof process === \"undefined\") {\n throw \"The dev CLI can only be run in a Node.js compatible environment\";\n }\n\n // Check if the runtime version is compatible\n const [major = 0, minor = 0] = process.versions.node.split(\".\").map(Number);\n\n const isBun = typeof process.versions.bun === \"string\";\n\n if (major < minimumMajor || (major === minimumMajor && minor < minimumMinor)) {\n if (isBun) {\n throw `The dev CLI requires at least Node.js ${minimumMajor}.${minimumMinor}. You are running Bun ${process.versions.bun}, which is compatible with Node.js ${process.versions.node}`;\n } else {\n throw `The dev CLI requires at least Node.js ${minimumMajor}.${minimumMinor}. You are running Node.js ${process.versions.node}`;\n }\n }\n\n logger.debug(\n `Node.js version: ${process.versions.node}${isBun ? ` (Bun ${process.versions.bun})` : \"\"}`\n );\n}\n","import { intro, isCancel, log, outro, select, spinner, text } from \"@clack/prompts\";\nimport { context, trace } from \"@opentelemetry/api\";\nimport {\n GetProjectResponseBody,\n flattenAttributes,\n recordSpanException,\n} from \"@trigger.dev/core/v3\";\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport { execa } from \"execa\";\nimport { applyEdits, modify } from \"jsonc-parser\";\nimport { writeFile } from \"node:fs/promises\";\nimport { join, relative, resolve } from \"node:path\";\nimport terminalLink from \"terminal-link\";\nimport { z } from \"zod\";\nimport { CliApiClient } from \"../apiClient\";\nimport {\n CommonCommandOptions,\n OutroCommandError,\n SkipCommandError,\n SkipLoggingError,\n commonOptions,\n handleTelemetry,\n tracer,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { readConfig } from \"../utilities/configFiles.js\";\nimport { createFileFromTemplate } from \"../utilities/createFileFromTemplate\";\nimport { createFile, pathExists, readFile } from \"../utilities/fileSystem\";\nimport { getUserPackageManager } from \"../utilities/getUserPackageManager\";\nimport { printStandloneInitialBanner } from \"../utilities/initialBanner.js\";\nimport { logger } from \"../utilities/logger\";\nimport { resolveInternalFilePath } from \"../utilities/resolveInternalFilePath\";\nimport { login } from \"./login\";\n\nconst InitCommandOptions = CommonCommandOptions.extend({\n projectRef: z.string().optional(),\n overrideConfig: z.boolean().default(false),\n tag: z.string().default(\"beta\"),\n skipPackageInstall: z.boolean().default(false),\n});\n\ntype InitCommandOptions = z.infer<typeof InitCommandOptions>;\n\nexport function configureInitCommand(program: Command) {\n return commonOptions(\n program\n .command(\"init\")\n .description(\"Initialize your existing project for development with Trigger.dev\")\n .argument(\"[path]\", \"The path to the project\", \".\")\n .option(\n \"-p, --project-ref <project ref>\",\n \"The project ref to use when initializing the project\"\n )\n .option(\n \"-t, --tag <package tag>\",\n \"The version of the @trigger.dev/sdk package to install\",\n \"beta\"\n )\n .option(\"--skip-package-install\", \"Skip installing the @trigger.dev/sdk package\")\n .option(\"--override-config\", \"Override the existing config file if it exists\")\n ).action(async (path, options) => {\n await handleTelemetry(async () => {\n await printStandloneInitialBanner(true);\n await initCommand(path, options);\n });\n });\n}\n\nexport async function initCommand(dir: string, options: unknown) {\n return await wrapCommandAction(\"initCommand\", InitCommandOptions, options, async (opts) => {\n return await _initCommand(dir, opts);\n });\n}\n\nasync function _initCommand(dir: string, options: InitCommandOptions) {\n const span = trace.getSpan(context.active());\n\n intro(\"Initializing project\");\n\n const authorization = await login({\n embedded: true,\n defaultApiUrl: options.apiUrl,\n profile: options.profile,\n });\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n throw new Error(\n `Failed to connect to ${authorization.auth?.apiUrl}. Are you sure it's the correct URL?`\n );\n } else {\n throw new Error(\"You must login first. Use `trigger.dev login` to login.\");\n }\n }\n\n span?.setAttributes({\n \"cli.userId\": authorization.userId,\n \"cli.email\": authorization.email,\n \"cli.config.apiUrl\": authorization.auth.apiUrl,\n \"cli.config.profile\": authorization.profile,\n });\n\n if (!options.overrideConfig) {\n try {\n // check to see if there is an existing trigger.dev config file in the project directory\n const result = await readConfig(dir);\n\n outro(\n result.status === \"file\"\n ? `Project already initialized: Found config file at ${result.path}. Pass --override-config to override`\n : \"Project already initialized\"\n );\n\n return;\n } catch (e) {\n // continue\n }\n }\n\n const apiClient = new CliApiClient(authorization.auth.apiUrl, authorization.auth.accessToken);\n\n const selectedProject = await selectProject(\n apiClient,\n authorization.dashboardUrl,\n options.projectRef\n );\n\n span?.setAttributes({\n ...flattenAttributes(selectedProject, \"cli.project\"),\n });\n\n logger.debug(\"Selected project\", selectedProject);\n\n log.step(`Configuring project \"${selectedProject.name}\" (${selectedProject.externalRef})`);\n\n // Install @trigger.dev/sdk package\n if (!options.skipPackageInstall) {\n await installPackages(dir, options);\n } else {\n log.info(\"Skipping package installation\");\n }\n\n // Create the trigger dir\n const triggerDir = await createTriggerDir(dir, options);\n\n // Create the config file\n await writeConfigFile(dir, selectedProject, options, triggerDir);\n\n // Add trigger.config.ts to tsconfig.json\n await addConfigFileToTsConfig(dir, options);\n\n // Ignore .trigger dir\n await gitIgnoreDotTriggerDir(dir, options);\n\n const projectDashboard = terminalLink(\n \"project dashboard\",\n `${authorization.dashboardUrl}/projects/v3/${selectedProject.externalRef}`\n );\n\n log.success(\"Successfully initialized project for Trigger.dev v3 🫡\");\n log.info(\"Next steps:\");\n log.info(\n ` 1. To start developing, run ${chalk.green(\n `npx trigger.dev@${options.tag} dev`\n )} in your project directory`\n );\n log.info(` 2. Visit your ${projectDashboard} to view your newly created tasks.`);\n log.info(\n ` 3. Head over to our ${terminalLink(\n \"v3 docs\",\n \"https://trigger.dev/docs/v3\"\n )} to learn more.`\n );\n log.info(\n ` 4. Need help? Join our ${terminalLink(\n \"Discord community\",\n \"https://trigger.dev/discord\"\n )} or email us at ${chalk.cyan(\"help@trigger.dev\")}`\n );\n\n outro(`Project initialized successfully. Happy coding!`);\n}\n\nasync function createTriggerDir(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"createTriggerDir\", async (span) => {\n try {\n const defaultValue = `${dir}/src/trigger`;\n\n const location = await text({\n message: \"Where would you like to create the Trigger.dev directory?\",\n defaultValue: defaultValue,\n placeholder: defaultValue,\n });\n\n if (isCancel(location)) {\n throw new OutroCommandError();\n }\n\n const triggerDir = resolve(process.cwd(), location);\n\n span.setAttributes({\n \"cli.triggerDir\": triggerDir,\n });\n\n if (await pathExists(triggerDir)) {\n throw new Error(`Directory already exists at ${triggerDir}`);\n }\n\n const exampleSelection = await select({\n message: `Choose an example to create in the ${location} directory`,\n options: [\n { value: \"simple\", label: \"Simple (Hello World)\" },\n {\n value: \"none\",\n label: \"None\",\n hint: \"skip creating an example\",\n },\n ],\n });\n\n if (isCancel(exampleSelection)) {\n throw new OutroCommandError();\n }\n\n const example = exampleSelection as string;\n\n span.setAttributes({\n \"cli.example\": example,\n });\n\n if (example === \"none\") {\n // Create a .gitkeep file in the trigger dir\n await createFile(join(triggerDir, \".gitkeep\"), \"\");\n\n log.step(`Created directory at ${location}`);\n\n span.end();\n return { location, isCustomValue: location !== defaultValue };\n }\n\n const exampleFile = resolveInternalFilePath(`./templates/examples/${example}.ts.template`);\n const outputPath = join(triggerDir, \"example.ts\");\n\n await createFileFromTemplate({\n templatePath: exampleFile,\n outputPath,\n replacements: {},\n });\n\n const relativeOutputPath = relative(process.cwd(), outputPath);\n\n log.step(`Created example file at ${relativeOutputPath}`);\n\n span.end();\n\n return { location, isCustomValue: location !== defaultValue };\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function gitIgnoreDotTriggerDir(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"gitIgnoreDotTriggerDir\", async (span) => {\n try {\n const projectDir = resolve(process.cwd(), dir);\n const gitIgnorePath = join(projectDir, \".gitignore\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.gitIgnorePath\": gitIgnorePath,\n });\n\n if (!(await pathExists(gitIgnorePath))) {\n // Create .gitignore file\n await createFile(gitIgnorePath, \".trigger\");\n\n log.step(`Added .trigger to .gitignore`);\n\n span.end();\n\n return;\n }\n\n // Check if .gitignore already contains .trigger\n const gitIgnoreContent = await readFile(gitIgnorePath);\n\n if (gitIgnoreContent.includes(\".trigger\")) {\n span.end();\n\n return;\n }\n\n const newGitIgnoreContent = `${gitIgnoreContent}\\n.trigger`;\n\n await writeFile(gitIgnorePath, newGitIgnoreContent, \"utf-8\");\n\n log.step(`Added .trigger to .gitignore`);\n\n span.end();\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function addConfigFileToTsConfig(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"createTriggerDir\", async (span) => {\n try {\n const projectDir = resolve(process.cwd(), dir);\n const tsconfigPath = join(projectDir, \"tsconfig.json\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.tsconfigPath\": tsconfigPath,\n });\n\n const tsconfigContent = await readFile(tsconfigPath);\n\n const edits = modify(tsconfigContent, [\"include\", -1], \"trigger.config.ts\", {\n isArrayInsertion: true,\n formattingOptions: {\n tabSize: 2,\n insertSpaces: true,\n eol: \"\\n\",\n },\n });\n\n logger.debug(\"tsconfig.json edits\", { edits });\n\n const newTsconfigContent = applyEdits(tsconfigContent, edits);\n\n logger.debug(\"new tsconfig.json content\", { newTsconfigContent });\n\n await writeFile(tsconfigPath, newTsconfigContent, \"utf-8\");\n\n log.step(`Added trigger.config.ts to tsconfig.json`);\n\n span.end();\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function installPackages(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"installPackages\", async (span) => {\n const installSpinner = spinner();\n\n try {\n const projectDir = resolve(process.cwd(), dir);\n const pkgManager = await getUserPackageManager(projectDir);\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.packageManager\": pkgManager,\n \"cli.tag\": options.tag,\n });\n\n switch (pkgManager) {\n case \"npm\": {\n installSpinner.start(`Running npm install @trigger.dev/sdk@${options.tag}`);\n\n await execa(\"npm\", [\"install\", `@trigger.dev/sdk@${options.tag}`], {\n cwd: projectDir,\n stdio: options.logLevel === \"debug\" ? \"inherit\" : \"ignore\",\n });\n\n break;\n }\n case \"pnpm\": {\n installSpinner.start(`Running pnpm add @trigger.dev/sdk@${options.tag}`);\n\n await execa(\"pnpm\", [\"add\", `@trigger.dev/sdk@${options.tag}`], {\n cwd: projectDir,\n stdio: options.logLevel === \"debug\" ? \"inherit\" : \"ignore\",\n });\n\n break;\n }\n case \"yarn\": {\n installSpinner.start(`Running yarn add @trigger.dev/sdk@${options.tag}`);\n\n await execa(\"yarn\", [\"add\", `@trigger.dev/sdk@${options.tag}`], {\n cwd: projectDir,\n stdio: options.logLevel === \"debug\" ? \"inherit\" : \"ignore\",\n });\n\n break;\n }\n }\n\n installSpinner.stop(`@trigger.dev/sdk@${options.tag} installed`);\n\n span.end();\n } catch (e) {\n installSpinner.stop(\n `Failed to install @trigger.dev/sdk@${options.tag}. Rerun command with --log-level debug for more details.`\n );\n\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function writeConfigFile(\n dir: string,\n project: GetProjectResponseBody,\n options: InitCommandOptions,\n triggerDir: { location: string; isCustomValue: boolean }\n) {\n return await tracer.startActiveSpan(\"writeConfigFile\", async (span) => {\n try {\n const spnnr = spinner();\n spnnr.start(\"Creating config file\");\n\n const projectDir = resolve(process.cwd(), dir);\n const templatePath = resolveInternalFilePath(\"./templates/trigger.config.ts.template\");\n const outputPath = join(projectDir, \"trigger.config.ts\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.templatePath\": templatePath,\n \"cli.outputPath\": outputPath,\n });\n\n const result = await createFileFromTemplate({\n templatePath,\n replacements: {\n projectRef: project.externalRef,\n triggerDirectoriesOption: triggerDir.isCustomValue\n ? `\\n triggerDirectories: [\"${triggerDir.location}\"],`\n : \"\",\n },\n outputPath,\n override: options.overrideConfig,\n });\n\n const relativePathToOutput = relative(process.cwd(), outputPath);\n\n spnnr.stop(\n result.success\n ? `Config file created at ${relativePathToOutput}`\n : `Failed to create config file: ${result.error}`\n );\n\n if (!result.success) {\n throw new SkipLoggingError(result.error);\n }\n\n span.end();\n\n return result.success;\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function selectProject(apiClient: CliApiClient, dashboardUrl: string, projectRef?: string) {\n return await tracer.startActiveSpan(\"selectProject\", async (span) => {\n try {\n if (projectRef) {\n const projectResponse = await apiClient.getProject(projectRef);\n\n if (!projectResponse.success) {\n log.error(\n `--project-ref ${projectRef} is not a valid project ref. Request to fetch data resulted in: ${projectResponse.error}`\n );\n\n throw new SkipCommandError(projectResponse.error);\n }\n\n span.setAttributes({\n ...flattenAttributes(projectResponse.data, \"cli.project\"),\n });\n\n span.end();\n\n return projectResponse.data;\n }\n\n const projectsResponse = await apiClient.getProjects();\n\n if (!projectsResponse.success) {\n throw new Error(`Failed to get projects: ${projectsResponse.error}`);\n }\n\n if (projectsResponse.data.length === 0) {\n const newProjectLink = terminalLink(\n \"Create new project\",\n `${dashboardUrl}/projects/new?version=v3`\n );\n\n outro(`You don't have any projects yet. ${newProjectLink}`);\n\n throw new SkipCommandError();\n }\n\n const selectedProject = await select({\n message: \"Select an existing Trigger.dev project\",\n options: projectsResponse.data.map((project) => ({\n value: project.externalRef,\n label: `${project.name} - ${project.externalRef}`,\n hint: project.organization.title,\n })),\n });\n\n if (isCancel(selectedProject)) {\n throw new OutroCommandError();\n }\n\n const projectData = projectsResponse.data.find(\n (project) => project.externalRef === selectedProject\n );\n\n if (!projectData) {\n throw new Error(\"Invalid project ref\");\n }\n\n span.setAttributes({\n ...flattenAttributes(projectData, \"cli.project\"),\n });\n\n span.end();\n\n return projectData;\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n","import fs from \"fs/promises\";\nimport { pathExists, readFile } from \"./fileSystem\";\nimport path from \"path\";\n\ntype Result =\n | {\n success: true;\n alreadyExisted: boolean;\n }\n | {\n success: false;\n error: string;\n };\n\nexport async function createFileFromTemplate(params: {\n templatePath: string;\n replacements: Record<string, string>;\n outputPath: string;\n override?: boolean;\n}): Promise<Result> {\n let template = await readFile(params.templatePath);\n\n if ((await pathExists(params.outputPath)) && !params.override) {\n return {\n success: true,\n alreadyExisted: true,\n };\n }\n\n try {\n const output = replaceAll(template, params.replacements);\n\n const directoryName = path.dirname(params.outputPath);\n await fs.mkdir(directoryName, { recursive: true });\n await fs.writeFile(params.outputPath, output);\n\n return {\n success: true,\n alreadyExisted: false,\n };\n } catch (e) {\n if (e instanceof Error) {\n return {\n success: false,\n error: e.message,\n };\n }\n return {\n success: false,\n error: JSON.stringify(e),\n };\n }\n}\n\n// find strings that match ${varName} and replace with the value from a Record<string, string> where { varName: \"value\" }\nexport function replaceAll(input: string, replacements: Record<string, string>) {\n let output = input;\n for (const [key, value] of Object.entries(replacements)) {\n output = output.replace(new RegExp(`\\\\$\\\\{${key}\\\\}`, \"g\"), value);\n }\n return output;\n}\n","import pathModule from \"path\";\nimport { pathExists } from \"./fileSystem.js\";\n\nexport type PackageManager = \"npm\" | \"pnpm\" | \"yarn\";\n\nexport async function getUserPackageManager(path: string): Promise<PackageManager> {\n try {\n return await detectPackageManagerFromArtifacts(path);\n } catch (error) {\n return detectPackageManagerFromCurrentCommand();\n }\n}\n\nfunction detectPackageManagerFromCurrentCommand(): PackageManager {\n // This environment variable is set by npm and yarn but pnpm seems less consistent\n const userAgent = process.env.npm_config_user_agent;\n\n if (userAgent) {\n if (userAgent.startsWith(\"yarn\")) {\n return \"yarn\";\n } else if (userAgent.startsWith(\"pnpm\")) {\n return \"pnpm\";\n } else {\n return \"npm\";\n }\n } else {\n // If no user agent is set, assume npm\n return \"npm\";\n }\n}\n\nasync function detectPackageManagerFromArtifacts(path: string): Promise<PackageManager> {\n const packageFiles = [\n { name: \"yarn.lock\", pm: \"yarn\" } as const,\n { name: \"pnpm-lock.yaml\", pm: \"pnpm\" } as const,\n { name: \"package-lock.json\", pm: \"npm\" } as const,\n { name: \"npm-shrinkwrap.json\", pm: \"npm\" } as const,\n ];\n\n for (const { name, pm } of packageFiles) {\n const exists = await pathExists(pathModule.join(path, name));\n if (exists) {\n return pm;\n }\n }\n\n throw new Error(\"Could not detect package manager from artifacts\");\n}\n","import { resolve as importResolve } from \"import-meta-resolve\";\n\nexport function resolveInternalFilePath(filePath: string): string {\n return new URL(importResolve(filePath, import.meta.url)).href.replace(\"file://\", \"\");\n}\n","import { Command } from \"commander\";\nimport { z } from \"zod\";\nimport {\n CommonCommandOptions,\n commonOptions,\n handleTelemetry,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { deleteAuthConfigProfile, readAuthConfigProfile } from \"../utilities/configFiles.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { logger } from \"../utilities/logger.js\";\n\nconst LogoutCommandOptions = CommonCommandOptions;\n\ntype LogoutCommandOptions = z.infer<typeof LogoutCommandOptions>;\n\nexport function configureLogoutCommand(program: Command) {\n return commonOptions(program.command(\"logout\").description(\"Logout of Trigger.dev\")).action(\n async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await logoutCommand(options);\n });\n }\n );\n}\n\nexport async function logoutCommand(options: unknown) {\n return await wrapCommandAction(\"logoutCommand\", LogoutCommandOptions, options, async (opts) => {\n return await logout(opts);\n });\n}\n\nexport async function logout(options: LogoutCommandOptions) {\n const config = readAuthConfigProfile(options.profile);\n\n if (!config?.accessToken) {\n logger.info(`You are already logged out [${options.profile}]`);\n return;\n }\n\n deleteAuthConfigProfile(options.profile);\n\n logger.info(`Logged out of Trigger.dev [${options.profile}]`);\n}\n","import { Command } from \"commander\";\nimport {\n deleteAuthConfigProfile,\n readAuthConfigFile,\n readAuthConfigProfile,\n writeAuthConfigProfile,\n} from \"../utilities/configFiles.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport {\n CommonCommandOptions,\n commonOptions,\n handleTelemetry,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { z } from \"zod\";\nimport { chalkGrey } from \"../utilities/cliOutput.js\";\nimport { log, outro, text } from \"@clack/prompts\";\n\nconst ListProfilesOptions = CommonCommandOptions;\n\ntype ListProfilesOptions = z.infer<typeof ListProfilesOptions>;\n\nexport function configureListProfilesCommand(program: Command) {\n return program\n .command(\"list-profiles\")\n .description(\"List all of your CLI profiles\")\n .option(\n \"-l, --log-level <level>\",\n \"The CLI log level to use (debug, info, log, warn, error, none). This does not effect the log level of your trigger.dev tasks.\",\n \"log\"\n )\n .option(\"--skip-telemetry\", \"Opt-out of sending telemetry\")\n .action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(true);\n await listProfilesCommand(options);\n });\n });\n}\n\nexport async function listProfilesCommand(options: unknown) {\n return await wrapCommandAction(\"listProfiles\", ListProfilesOptions, options, async (opts) => {\n return await listProfiles(opts);\n });\n}\n\nexport async function listProfiles(options: ListProfilesOptions) {\n const authConfig = readAuthConfigFile();\n\n if (!authConfig) {\n logger.info(\"No profiles found\");\n return;\n }\n\n const profiles = Object.keys(authConfig);\n\n log.message(\"Profiles:\");\n\n for (const profile of profiles) {\n const profileConfig = authConfig[profile];\n\n log.info(`${profile}${profileConfig?.apiUrl ? ` - ${chalkGrey(profileConfig.apiUrl)}` : \"\"}`);\n }\n\n outro(\"Retrieve account info by running whoami --profile <profile>\");\n}\n","#!/usr/bin/env node\n\nimport { program } from \"./cli/index.js\";\nimport { logger } from \"./utilities/logger.js\";\n\nconst main = async () => {\n await program.parseAsync();\n};\n\nmain().catch((err) => {\n if (err instanceof Error) {\n logger.error(err);\n } else {\n logger.error(\"An unknown error has occurred. Please open an issue on github with the below:\");\n logger.error(err);\n }\n process.exit(1);\n});\n"],"mappings":"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","names":["path","XDGAppPaths_","options","_a","path","XDG_","os","path","v","OSPaths_","os","path","path","path","original","require_retry","Command","intro","log","outro","spinner","trace","flattenAttributes","recordSpanException","chalk","build","execa","readFileSync","readFile","writeFile","join","relative","setTimeout","z","text","chalk","text","path","join","_","z","path","path","path","path","fs","z","path","rawConfig","config","join","chalk","path","path","text","chalk","join","join","path","version","intro","outro","spinner","recordSpanException","process","Buffer","path","fileURLToPath","fs","process","fs","fs","fs","fs","process","fs","promisify","process","execFile","process","process","promisify","execFile","execFileAsync","promisify","execFile","execFileAsync","execFileAsync","promisify","execFile","defaultBrowser","process","path","fileURLToPath","process","fs","defaultBrowser","Buffer","resolve","resolve","retry","z","spinner","recordSpanException","tracer","apiClient","recordSpanException","program","spinner","apiClient","z","program","intro","outro","apiClient","spinner","recordSpanException","build","chalk","relative","chalk","relative","z","program","path","trace","intro","flattenAttributes","apiClient","log","version","spinner","join","writeFile","outro","parsedError","chalk","recordSpanException","setTimeout","childProcess","text","execa","readFileSync","build","dependencies","readFile","resolve","relative","ZodMessageHandler","ZodMessageSender","detectDependencyVersion","context","importResolve","createHash","fs","readFileSync","dirname","join","z","dirname","resolve","terminalLink","terminalLink","path","dirname","resolve","findUp","pathExists","z","program","path","authorization","ZodMessageSender","ZodMessageHandler","readFileSync","importResolve","context","build","join","createHash","fs","dirname","dependencies","gatherRequiredDependencies","sourceMapPath","detectDependencyVersion","intro","log","outro","select","spinner","context","trace","flattenAttributes","recordSpanException","chalk","execa","writeFile","join","relative","resolve","terminalLink","z","fs","path","fs","pathModule","path","pathModule","importResolve","z","program","path","trace","context","intro","outro","apiClient","flattenAttributes","log","installPackages","terminalLink","chalk","resolve","select","join","relative","recordSpanException","writeFile","spinner","execa","program","log","outro","program","Command"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/src/lib/XDGAppPaths.ts","../../../node_modules/.pnpm/xdg-portable@10.6.0/node_modules/src/lib/XDG.ts","../../../node_modules/.pnpm/os-paths@7.4.0/node_modules/src/lib/OSPaths.ts","../../../node_modules/.pnpm/os-paths@7.4.0/node_modules/src/platform-adapters/node.ts","../../../node_modules/.pnpm/os-paths@7.4.0/node_modules/src/mod.cjs.ts","../../../node_modules/.pnpm/xdg-portable@10.6.0/node_modules/src/platform-adapters/node.ts","../../../node_modules/.pnpm/xdg-portable@10.6.0/node_modules/src/mod.cjs.ts","../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/src/platform-adapters/node.ts","../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/src/mod.cjs.ts","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry_operation.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/lib/retry.js","../../../node_modules/.pnpm/retry@0.13.1/node_modules/retry/index.js","../src/cli/index.ts","../src/commands/deploy.ts","../package.json","../src/apiClient.ts","../src/cli/common.ts","../src/telemetry/tracing.ts","../src/utilities/logger.ts","../src/utilities/getEnvironmentVariableFactory.ts","../src/utilities/cliOutput.ts","../src/utilities/configFiles.ts","../../../node_modules/.pnpm/xdg-app-paths@8.3.0/node_modules/xdg-app-paths/dist/cjs/esm-wrapper/mod.esm.js","../src/consts.ts","../src/utilities/fileSystem.ts","../src/utilities/taskFiles.ts","../src/utilities/initialBanner.ts","../src/utilities/getVersion.ts","../src/utilities/installPackages.ts","../src/commands/login.ts","../../../node_modules/.pnpm/open@10.0.3/node_modules/open/index.js","../../../node_modules/.pnpm/is-wsl@3.1.0/node_modules/is-wsl/index.js","../../../node_modules/.pnpm/is-inside-container@1.0.0/node_modules/is-inside-container/index.js","../../../node_modules/.pnpm/is-docker@3.0.0/node_modules/is-docker/index.js","../../../node_modules/.pnpm/define-lazy-prop@3.0.0/node_modules/define-lazy-prop/index.js","../../../node_modules/.pnpm/default-browser@5.2.1/node_modules/default-browser/index.js","../../../node_modules/.pnpm/default-browser-id@5.0.0/node_modules/default-browser-id/index.js","../../../node_modules/.pnpm/run-applescript@7.0.0/node_modules/run-applescript/index.js","../../../node_modules/.pnpm/bundle-name@4.1.0/node_modules/bundle-name/index.js","../../../node_modules/.pnpm/default-browser@5.2.1/node_modules/default-browser/windows.js","../../../node_modules/.pnpm/p-retry@6.1.0/node_modules/p-retry/index.js","../../../node_modules/.pnpm/is-network-error@1.0.0/node_modules/is-network-error/index.js","../src/commands/whoami.ts","../src/utilities/session.ts","../src/utilities/build.ts","../src/utilities/deployErrors.ts","../src/utilities/safeJsonParse.ts","../src/commands/dev.tsx","../src/workers/common/errors.ts","../src/workers/dev/backgroundWorker.ts","../src/utilities/runtimeCheck.ts","../src/commands/init.ts","../src/utilities/createFileFromTemplate.ts","../src/utilities/getUserPackageManager.ts","../src/utilities/resolveInternalFilePath.ts","../src/commands/logout.ts","../src/commands/list-profiles.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,"function RetryOperation(timeouts, options) {\n // Compatibility for the old (timeouts, retryForever) signature\n if (typeof options === 'boolean') {\n options = { forever: options };\n }\n\n this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n this._timeouts = timeouts;\n this._options = options || {};\n this._maxRetryTime = options && options.maxRetryTime || Infinity;\n this._fn = null;\n this._errors = [];\n this._attempts = 1;\n this._operationTimeout = null;\n this._operationTimeoutCb = null;\n this._timeout = null;\n this._operationStart = null;\n this._timer = null;\n\n if (this._options.forever) {\n this._cachedTimeouts = this._timeouts.slice(0);\n }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n this._attempts = 1;\n this._timeouts = this._originalTimeouts.slice(0);\n}\n\nRetryOperation.prototype.stop = function() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n if (this._timer) {\n clearTimeout(this._timer);\n }\n\n this._timeouts = [];\n this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n\n if (!err) {\n return false;\n }\n var currentTime = new Date().getTime();\n if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n this._errors.push(err);\n this._errors.unshift(new Error('RetryOperation timeout occurred'));\n return false;\n }\n\n this._errors.push(err);\n\n var timeout = this._timeouts.shift();\n if (timeout === undefined) {\n if (this._cachedTimeouts) {\n // retry forever, only keep last error\n this._errors.splice(0, this._errors.length - 1);\n timeout = this._cachedTimeouts.slice(-1);\n } else {\n return false;\n }\n }\n\n var self = this;\n this._timer = setTimeout(function() {\n self._attempts++;\n\n if (self._operationTimeoutCb) {\n self._timeout = setTimeout(function() {\n self._operationTimeoutCb(self._attempts);\n }, self._operationTimeout);\n\n if (self._options.unref) {\n self._timeout.unref();\n }\n }\n\n self._fn(self._attempts);\n }, timeout);\n\n if (this._options.unref) {\n this._timer.unref();\n }\n\n return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n this._fn = fn;\n\n if (timeoutOps) {\n if (timeoutOps.timeout) {\n this._operationTimeout = timeoutOps.timeout;\n }\n if (timeoutOps.cb) {\n this._operationTimeoutCb = timeoutOps.cb;\n }\n }\n\n var self = this;\n if (this._operationTimeoutCb) {\n this._timeout = setTimeout(function() {\n self._operationTimeoutCb();\n }, self._operationTimeout);\n }\n\n this._operationStart = new Date().getTime();\n\n this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n console.log('Using RetryOperation.try() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n console.log('Using RetryOperation.start() is deprecated');\n this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n if (this._errors.length === 0) {\n return null;\n }\n\n var counts = {};\n var mainError = null;\n var mainErrorCount = 0;\n\n for (var i = 0; i < this._errors.length; i++) {\n var error = this._errors[i];\n var message = error.message;\n var count = (counts[message] || 0) + 1;\n\n counts[message] = count;\n\n if (count >= mainErrorCount) {\n mainError = error;\n mainErrorCount = count;\n }\n }\n\n return mainError;\n};\n","var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n var timeouts = exports.timeouts(options);\n return new RetryOperation(timeouts, {\n forever: options && (options.forever || options.retries === Infinity),\n unref: options && options.unref,\n maxRetryTime: options && options.maxRetryTime\n });\n};\n\nexports.timeouts = function(options) {\n if (options instanceof Array) {\n return [].concat(options);\n }\n\n var opts = {\n retries: 10,\n factor: 2,\n minTimeout: 1 * 1000,\n maxTimeout: Infinity,\n randomize: false\n };\n for (var key in options) {\n opts[key] = options[key];\n }\n\n if (opts.minTimeout > opts.maxTimeout) {\n throw new Error('minTimeout is greater than maxTimeout');\n }\n\n var timeouts = [];\n for (var i = 0; i < opts.retries; i++) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n if (options && options.forever && !timeouts.length) {\n timeouts.push(this.createTimeout(i, opts));\n }\n\n // sort the array numerically ascending\n timeouts.sort(function(a,b) {\n return a - b;\n });\n\n return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n var random = (opts.randomize)\n ? (Math.random() + 1)\n : 1;\n\n var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));\n timeout = Math.min(timeout, opts.maxTimeout);\n\n return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n if (options instanceof Array) {\n methods = options;\n options = null;\n }\n\n if (!methods) {\n methods = [];\n for (var key in obj) {\n if (typeof obj[key] === 'function') {\n methods.push(key);\n }\n }\n }\n\n for (var i = 0; i < methods.length; i++) {\n var method = methods[i];\n var original = obj[method];\n\n obj[method] = function retryWrapper(original) {\n var op = exports.operation(options);\n var args = Array.prototype.slice.call(arguments, 1);\n var callback = args.pop();\n\n args.push(function(err) {\n if (op.retry(err)) {\n return;\n }\n if (err) {\n arguments[0] = op.mainError();\n }\n callback.apply(this, arguments);\n });\n\n op.attempt(function() {\n original.apply(obj, args);\n });\n }.bind(obj, original);\n obj[method].options = options;\n }\n};\n","module.exports = require('./lib/retry');","import { Command } from \"commander\";\nimport { configureDeployCommand } from \"../commands/deploy.js\";\nimport { configureDevCommand } from \"../commands/dev.js\";\nimport { configureInitCommand } from \"../commands/init.js\";\nimport { configureLoginCommand } from \"../commands/login.js\";\nimport { configureLogoutCommand } from \"../commands/logout.js\";\nimport { configureWhoamiCommand } from \"../commands/whoami.js\";\nimport { COMMAND_NAME } from \"../consts.js\";\nimport { getVersion } from \"../utilities/getVersion.js\";\nimport { configureListProfilesCommand } from \"../commands/list-profiles.js\";\n\nexport const program = new Command();\n\nprogram\n .name(COMMAND_NAME)\n .description(\"Create, run locally and deploy Trigger.dev background tasks.\")\n .version(getVersion(), \"-v, --version\", \"Display the version number\");\n\nconfigureLoginCommand(program);\nconfigureInitCommand(program);\nconfigureDevCommand(program);\nconfigureDeployCommand(program);\nconfigureWhoamiCommand(program);\nconfigureLogoutCommand(program);\nconfigureListProfilesCommand(program);\n","import { intro, log, outro, spinner } from \"@clack/prompts\";\nimport { depot } from \"@depot/cli\";\nimport { context, trace } from \"@opentelemetry/api\";\nimport {\n ResolvedConfig,\n TaskMetadataFailedToParseData,\n detectDependencyVersion,\n flattenAttributes,\n recordSpanException,\n} from \"@trigger.dev/core/v3\";\nimport chalk from \"chalk\";\nimport { Command, Option as CommandOption } from \"commander\";\nimport { Metafile, build } from \"esbuild\";\nimport { execa } from \"execa\";\nimport { resolve as importResolve } from \"import-meta-resolve\";\nimport { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport { copyFile, mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { dirname, join, relative } from \"node:path\";\nimport { setTimeout } from \"node:timers/promises\";\nimport terminalLink from \"terminal-link\";\nimport invariant from \"tiny-invariant\";\nimport { z } from \"zod\";\nimport * as packageJson from \"../../package.json\";\nimport { CliApiClient } from \"../apiClient\";\nimport {\n CommonCommandOptions,\n SkipCommandError,\n SkipLoggingError,\n commonOptions,\n handleTelemetry,\n tracer,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { readConfig } from \"../utilities/configFiles.js\";\nimport { createTempDir, readJSONFile, writeJSONFile } from \"../utilities/fileSystem\";\nimport { printStandloneInitialBanner } from \"../utilities/initialBanner.js\";\nimport {\n detectPackageNameFromImportPath,\n parsePackageName,\n stripWorkspaceFromVersion,\n} from \"../utilities/installPackages\";\nimport { logger } from \"../utilities/logger.js\";\nimport { createTaskFileImports, gatherTaskFiles } from \"../utilities/taskFiles\";\nimport { login } from \"./login\";\n\nimport { Glob } from \"glob\";\nimport type { SetOptional } from \"type-fest\";\nimport { bundleDependenciesPlugin, workerSetupImportConfigPlugin } from \"../utilities/build\";\nimport { chalkError, chalkPurple, chalkWarning } from \"../utilities/cliOutput\";\nimport {\n logESMRequireError,\n logTaskMetadataParseError,\n parseBuildErrorStack,\n parseNpmInstallError,\n} from \"../utilities/deployErrors\";\nimport { safeJsonParse } from \"../utilities/safeJsonParse\";\n\nconst DeployCommandOptions = CommonCommandOptions.extend({\n skipTypecheck: z.boolean().default(false),\n skipDeploy: z.boolean().default(false),\n ignoreEnvVarCheck: z.boolean().default(false),\n env: z.enum([\"prod\", \"staging\"]),\n loadImage: z.boolean().default(false),\n buildPlatform: z.enum([\"linux/amd64\", \"linux/arm64\"]).default(\"linux/amd64\"),\n selfHosted: z.boolean().default(false),\n registry: z.string().optional(),\n push: z.boolean().default(false),\n config: z.string().optional(),\n projectRef: z.string().optional(),\n outputMetafile: z.string().optional(),\n apiUrl: z.string().optional(),\n});\n\ntype DeployCommandOptions = z.infer<typeof DeployCommandOptions>;\n\nexport function configureDeployCommand(program: Command) {\n return commonOptions(\n program\n .command(\"deploy\")\n .description(\"Deploy your Trigger.dev v3 project to the cloud.\")\n .argument(\"[path]\", \"The path to the project\", \".\")\n .option(\n \"-e, --env <env>\",\n \"Deploy to a specific environment (currently only prod and staging are supported)\",\n \"prod\"\n )\n .option(\"--skip-typecheck\", \"Whether to skip the pre-build typecheck\")\n .option(\n \"--ignore-env-var-check\",\n \"Detected missing environment variables won't block deployment\"\n )\n .option(\"-c, --config <config file>\", \"The name of the config file, found at [path]\")\n .option(\n \"-p, --project-ref <project ref>\",\n \"The project ref. Required if there is no config file.\"\n )\n )\n .addOption(\n new CommandOption(\n \"--self-hosted\",\n \"Build and load the image using your local Docker. Use the --registry option to specify the registry to push the image to when using --self-hosted, or just use --push-image to push to the default registry.\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--push\",\n \"When using the --self-hosted flag, push the image to the default registry. (defaults to false when not using --registry)\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--registry <registry>\",\n \"The registry to push the image to when using --self-hosted\"\n ).hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--tag <tag>\",\n \"(Coming soon) Specify the tag to use when pushing the image to the registry\"\n ).hideHelp()\n )\n .addOption(new CommandOption(\"-D, --skip-deploy\", \"Skip deploying the image\").hideHelp())\n .addOption(\n new CommandOption(\"--load-image\", \"Load the built image into your local docker\").hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--build-platform <platform>\",\n \"The platform to build the deployment image for\"\n )\n .default(\"linux/amd64\")\n .hideHelp()\n )\n .addOption(\n new CommandOption(\n \"--output-metafile <path>\",\n \"If provided, will save the esbuild metafile for the build to the specified path\"\n ).hideHelp()\n )\n .action(async (path, options) => {\n await handleTelemetry(async () => {\n await printStandloneInitialBanner(true);\n await deployCommand(path, options);\n });\n });\n}\n\nexport async function deployCommand(dir: string, options: unknown) {\n return await wrapCommandAction(\"deployCommand\", DeployCommandOptions, options, async (opts) => {\n return await _deployCommand(dir, opts);\n });\n}\n\nasync function _deployCommand(dir: string, options: DeployCommandOptions) {\n const span = trace.getSpan(context.active());\n\n intro(\"Deploying project\");\n\n const authorization = await login({\n embedded: true,\n defaultApiUrl: options.apiUrl,\n profile: options.profile,\n });\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n throw new Error(\n `Failed to connect to ${authorization.auth?.apiUrl}. Are you sure it's the correct URL?`\n );\n } else {\n throw new Error(\"You must login first. Use `trigger.dev login` to login.\");\n }\n }\n\n span?.setAttributes({\n \"cli.userId\": authorization.userId,\n \"cli.email\": authorization.email,\n \"cli.config.apiUrl\": authorization.auth.apiUrl,\n });\n\n const resolvedConfig = await readConfig(dir, {\n configFile: options.config,\n projectRef: options.projectRef,\n });\n\n logger.debug(\"Resolved config\", { resolvedConfig });\n\n span?.setAttributes({\n \"resolvedConfig.status\": resolvedConfig.status,\n \"resolvedConfig.path\": resolvedConfig.status === \"file\" ? resolvedConfig.path : undefined,\n \"resolvedConfig.config.project\": resolvedConfig.config.project,\n \"resolvedConfig.config.projectDir\": resolvedConfig.config.projectDir,\n \"resolvedConfig.config.triggerUrl\": resolvedConfig.config.triggerUrl,\n \"resolvedConfig.config.triggerDirectories\": resolvedConfig.config.triggerDirectories,\n ...flattenAttributes(resolvedConfig.config.retries, \"resolvedConfig.config.retries\"),\n });\n\n const apiClient = new CliApiClient(authorization.auth.apiUrl, authorization.auth.accessToken);\n\n const deploymentEnv = await apiClient.getProjectEnv({\n projectRef: resolvedConfig.config.project,\n env: options.env,\n });\n\n if (!deploymentEnv.success) {\n throw new Error(deploymentEnv.error);\n }\n\n const environmentClient = new CliApiClient(authorization.auth.apiUrl, deploymentEnv.data.apiKey);\n\n log.step(\n `Preparing to deploy \"${deploymentEnv.data.name}\" (${resolvedConfig.config.project}) to ${options.env}`\n );\n\n // Step 1: Build the project into a temporary directory\n const compilation = await compileProject(\n resolvedConfig.config,\n options,\n resolvedConfig.status === \"file\" ? resolvedConfig.path : undefined\n );\n\n logger.debug(\"Compilation result\", { compilation });\n\n if (compilation.envVars.length > 0) {\n await checkEnvVars(\n compilation.envVars ?? [],\n resolvedConfig.config,\n options,\n environmentClient,\n authorization.dashboardUrl\n );\n }\n\n // Step 2: Initialize a deployment on the server (response will have everything we need to build an image)\n const deploymentResponse = await environmentClient.initializeDeployment({\n contentHash: compilation.contentHash,\n userId: authorization.userId,\n });\n\n if (!deploymentResponse.success) {\n throw new Error(`Failed to start deployment: ${deploymentResponse.error}`);\n }\n\n // If the deployment doesn't have any externalBuildData, then we can't use the remote image builder\n // TODO: handle this and allow the user to the build and push the image themselves\n if (!deploymentResponse.data.externalBuildData && !options.selfHosted) {\n throw new Error(\n `Failed to start deployment, as your instance of trigger.dev does not support hosting. To deploy this project, you must use the --self-hosted flag to build and push the image yourself.`\n );\n }\n\n const version = deploymentResponse.data.version;\n\n const deploymentSpinner = spinner();\n\n deploymentSpinner.start(`Deploying version ${version}`);\n const selfHostedRegistryHost = deploymentResponse.data.registryHost ?? options.registry;\n const registryHost = selfHostedRegistryHost ?? \"registry.trigger.dev\";\n\n const buildImage = async () => {\n if (options.selfHosted) {\n return buildAndPushSelfHostedImage({\n registryHost: selfHostedRegistryHost,\n imageTag: deploymentResponse.data.imageTag,\n cwd: compilation.path,\n projectId: resolvedConfig.config.project,\n deploymentId: deploymentResponse.data.id,\n deploymentVersion: version,\n contentHash: deploymentResponse.data.contentHash,\n projectRef: resolvedConfig.config.project,\n buildPlatform: options.buildPlatform,\n pushImage: options.push,\n selfHostedRegistry: !!options.registry,\n });\n }\n\n if (!deploymentResponse.data.externalBuildData) {\n throw new Error(\n \"Failed to initialize deployment. The deployment does not have any external build data. To deploy this project, you must use the --self-hosted flag to build and push the image yourself.\"\n );\n }\n\n return buildAndPushImage(\n {\n registryHost,\n auth: authorization.auth.accessToken,\n imageTag: deploymentResponse.data.imageTag,\n buildId: deploymentResponse.data.externalBuildData.buildId,\n buildToken: deploymentResponse.data.externalBuildData.buildToken,\n buildProjectId: deploymentResponse.data.externalBuildData.projectId,\n cwd: compilation.path,\n projectId: resolvedConfig.config.project,\n deploymentId: deploymentResponse.data.id,\n deploymentVersion: deploymentResponse.data.version,\n contentHash: deploymentResponse.data.contentHash,\n projectRef: resolvedConfig.config.project,\n loadImage: options.loadImage,\n buildPlatform: options.buildPlatform,\n },\n deploymentSpinner\n );\n };\n\n const image = await buildImage();\n\n if (!image.ok) {\n deploymentSpinner.stop(`Failed to build project.`);\n\n // If there are logs, let's write it out to a temporary file and include the path in the error message\n if (image.logs.trim() !== \"\") {\n const logPath = join(await createTempDir(), `build-${deploymentResponse.data.shortCode}.log`);\n\n await writeFile(logPath, image.logs);\n\n logger.log(\n `${chalkError(\"X Error:\")} ${image.error}. Full build logs have been saved to ${logPath})`\n );\n } else {\n logger.log(`${chalkError(\"X Error:\")} ${image.error}.`);\n }\n\n throw new SkipLoggingError(`Failed to build project image: ${image.error}`);\n }\n\n const imageReference = options.selfHosted\n ? `${selfHostedRegistryHost ? `${selfHostedRegistryHost}/` : \"\"}${image.image}${\n image.digest ? `@${image.digest}` : \"\"\n }`\n : `${registryHost}/${image.image}${image.digest ? `@${image.digest}` : \"\"}`;\n\n span?.setAttributes({\n \"image.reference\": imageReference,\n });\n\n if (options.skipDeploy) {\n deploymentSpinner.stop(\n `Project image built: ${imageReference}. Skipping deployment as requested`\n );\n\n throw new SkipCommandError(\"Skipping deployment as requested\");\n }\n\n deploymentSpinner.message(\n `${deploymentResponse.data.version} image built, detecting deployed tasks`\n );\n\n logger.debug(`Start indexing image ${imageReference}`);\n\n const startIndexingResponse = await environmentClient.startDeploymentIndexing(\n deploymentResponse.data.id,\n {\n imageReference,\n }\n );\n\n if (!startIndexingResponse.success) {\n deploymentSpinner.stop(`Failed to start indexing: ${startIndexingResponse.error}`);\n\n throw new SkipLoggingError(`Failed to start indexing: ${startIndexingResponse.error}`);\n }\n\n const finishedDeployment = await waitForDeploymentToFinish(\n deploymentResponse.data.id,\n environmentClient\n );\n\n if (!finishedDeployment) {\n deploymentSpinner.stop(`Deployment failed to complete`);\n\n throw new SkipLoggingError(\"Deployment failed to complete: unknown issue\");\n }\n\n if (typeof finishedDeployment === \"string\") {\n deploymentSpinner.stop(`Deployment failed to complete: ${finishedDeployment}`);\n\n throw new SkipLoggingError(`Deployment failed to complete: ${finishedDeployment}`);\n }\n\n const deploymentLink = terminalLink(\n \"View deployment\",\n `${authorization.dashboardUrl}/projects/v3/${resolvedConfig.config.project}/deployments/${finishedDeployment.shortCode}`\n );\n\n switch (finishedDeployment.status) {\n case \"DEPLOYED\": {\n deploymentSpinner.stop(\"Deployment completed\");\n\n const taskCount = finishedDeployment.worker?.tasks.length ?? 0;\n\n if (taskCount === 0) {\n outro(\n `Version ${version} deployed with no detected tasks. Please make sure you are exporting tasks in your project. ${deploymentLink}`\n );\n } else {\n outro(\n `Version ${version} deployed with ${taskCount} detected task${\n taskCount === 1 ? \"\" : \"s\"\n } ${deploymentLink}`\n );\n }\n\n break;\n }\n case \"FAILED\": {\n if (finishedDeployment.errorData) {\n if (finishedDeployment.errorData.name === \"TaskMetadataParseError\") {\n const errorJson = safeJsonParse(finishedDeployment.errorData.stack);\n\n if (errorJson) {\n const parsedError = TaskMetadataFailedToParseData.safeParse(errorJson);\n\n if (parsedError.success) {\n deploymentSpinner.stop(`Deployment encountered an error. ${deploymentLink}`);\n\n logTaskMetadataParseError(parsedError.data.zodIssues, parsedError.data.tasks);\n\n throw new SkipLoggingError(\n `Deployment encountered an error: ${finishedDeployment.errorData.name}`\n );\n }\n }\n }\n\n const parsedError = finishedDeployment.errorData.stack\n ? parseBuildErrorStack(finishedDeployment.errorData)\n : finishedDeployment.errorData.message;\n\n if (typeof parsedError === \"string\") {\n deploymentSpinner.stop(`Deployment encountered an error. ${deploymentLink}`);\n\n logger.log(`${chalkError(\"X Error:\")} ${parsedError}`);\n } else {\n deploymentSpinner.stop(`Deployment encountered an error. ${deploymentLink}`);\n\n logESMRequireError(parsedError, resolvedConfig);\n }\n\n throw new SkipLoggingError(\n `Deployment encountered an error: ${finishedDeployment.errorData.name}`\n );\n } else {\n deploymentSpinner.stop(\n `Deployment failed with an unknown error. Please contact eric@trigger.dev for help. ${deploymentLink}`\n );\n\n throw new SkipLoggingError(\"Deployment failed with an unknown error\");\n }\n }\n case \"CANCELED\": {\n deploymentSpinner.stop(`Deployment was canceled. ${deploymentLink}`);\n\n throw new SkipLoggingError(\"Deployment was canceled\");\n }\n case \"TIMED_OUT\": {\n deploymentSpinner.stop(`Deployment timed out. ${deploymentLink}`);\n\n throw new SkipLoggingError(\"Deployment timed out\");\n }\n }\n}\n\nasync function checkEnvVars(\n envVars: string[],\n config: ResolvedConfig,\n options: DeployCommandOptions,\n environmentClient: CliApiClient,\n apiUrl: string\n) {\n return await tracer.startActiveSpan(\"detectEnvVars\", async (span) => {\n try {\n span.setAttribute(\"envVars.check\", envVars);\n\n const environmentVariablesSpinner = spinner();\n\n environmentVariablesSpinner.start(\"Checking environment variables\");\n\n const environmentVariables = await environmentClient.getEnvironmentVariables(config.project);\n\n if (!environmentVariables.success) {\n environmentVariablesSpinner.stop(`Failed to fetch environment variables, skipping check`);\n } else {\n // Check to see if all the environment variables in the compilation exist\n const missingEnvironmentVariables = envVars.filter(\n (envVar) => environmentVariables.data.variables[envVar] === undefined\n );\n\n if (missingEnvironmentVariables.length > 0) {\n environmentVariablesSpinner.stop(\n `Found missing env vars in ${options.env}: ${arrayToSentence(\n missingEnvironmentVariables\n )}. ${\n options.ignoreEnvVarCheck\n ? \"Continuing deployment because of --ignore-env-var-check. \"\n : \"Aborting deployment. \"\n }${chalk.bgBlueBright(\n terminalLink(\n \"Manage env vars\",\n `${apiUrl}/projects/v3/${config.project}/environment-variables`\n )\n )}`\n );\n\n span.setAttributes({\n \"envVars.missing\": missingEnvironmentVariables,\n });\n\n if (!options.ignoreEnvVarCheck) {\n throw new SkipLoggingError(\"Found missing environment variables\");\n } else {\n span.end();\n return;\n }\n }\n\n environmentVariablesSpinner.stop(`Environment variable check passed`);\n }\n\n span.end();\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n throw e;\n }\n });\n}\n\n// Poll every 1 second for the deployment to finish\nasync function waitForDeploymentToFinish(\n deploymentId: string,\n client: CliApiClient,\n timeoutInSeconds: number = 60\n) {\n return tracer.startActiveSpan(\"waitForDeploymentToFinish\", async (span) => {\n try {\n const start = Date.now();\n let attempts = 0;\n\n while (true) {\n if (Date.now() - start > timeoutInSeconds * 1000) {\n span.recordException(new Error(\"Deployment timed out\"));\n span.end();\n return;\n }\n\n const deployment = await client.getDeployment(deploymentId);\n\n attempts++;\n\n if (!deployment.success) {\n throw new Error(deployment.error);\n }\n\n logger.debug(`Deployment status: ${deployment.data.status}`);\n\n if (\n deployment.data.status === \"DEPLOYED\" ||\n deployment.data.status === \"FAILED\" ||\n deployment.data.status === \"CANCELED\" ||\n deployment.data.status === \"TIMED_OUT\"\n ) {\n span.setAttributes({\n \"deployment.status\": deployment.data.status,\n \"deployment.attempts\": attempts,\n });\n\n span.end();\n\n return deployment.data;\n }\n\n await setTimeout(1000);\n }\n } catch (error) {\n recordSpanException(span, error);\n span.end();\n\n return error instanceof Error ? error.message : JSON.stringify(error);\n }\n });\n}\n\ntype BuildAndPushImageOptions = {\n registryHost: string;\n auth: string;\n imageTag: string;\n buildId: string;\n buildToken: string;\n buildProjectId: string;\n cwd: string;\n projectId: string;\n deploymentId: string;\n deploymentVersion: string;\n contentHash: string;\n projectRef: string;\n loadImage: boolean;\n buildPlatform: string;\n};\n\ntype BuildAndPushImageResults =\n | {\n ok: true;\n image: string;\n logs: string;\n digest?: string;\n }\n | {\n ok: false;\n error: string;\n logs: string;\n };\n\nasync function buildAndPushImage(\n options: BuildAndPushImageOptions,\n updater: ReturnType<typeof spinner>\n): Promise<BuildAndPushImageResults> {\n return tracer.startActiveSpan(\"buildAndPushImage\", async (span) => {\n span.setAttributes({\n \"options.registryHost\": options.registryHost,\n \"options.imageTag\": options.imageTag,\n \"options.buildPlatform\": options.buildPlatform,\n \"options.projectId\": options.projectId,\n \"options.deploymentId\": options.deploymentId,\n \"options.deploymentVersion\": options.deploymentVersion,\n \"options.contentHash\": options.contentHash,\n \"options.projectRef\": options.projectRef,\n \"options.loadImage\": options.loadImage,\n });\n\n // Step 3: Ensure we are \"logged in\" to our registry by writing to $HOME/.docker/config.json\n // TODO: make sure this works on windows\n const dockerConfigDir = await ensureLoggedIntoDockerRegistry(options.registryHost, {\n username: \"trigger\",\n password: options.auth,\n });\n\n const args = [\n \"build\",\n \"-f\",\n \"Containerfile\",\n \"--platform\",\n options.buildPlatform,\n \"--provenance\",\n \"false\",\n \"--build-arg\",\n `TRIGGER_PROJECT_ID=${options.projectId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_ID=${options.deploymentId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_VERSION=${options.deploymentVersion}`,\n \"--build-arg\",\n `TRIGGER_CONTENT_HASH=${options.contentHash}`,\n \"--build-arg\",\n `TRIGGER_PROJECT_REF=${options.projectRef}`,\n \"-t\",\n `${options.registryHost}/${options.imageTag}`,\n \".\",\n \"--push\",\n options.loadImage ? \"--load\" : undefined,\n ].filter(Boolean) as string[];\n\n logger.debug(`depot ${args.join(\" \")}`);\n\n span.setAttribute(\"depot.command\", `depot ${args.join(\" \")}`);\n\n // Step 4: Build and push the image\n const childProcess = depot(args, {\n cwd: options.cwd,\n env: {\n DEPOT_BUILD_ID: options.buildId,\n DEPOT_TOKEN: options.buildToken,\n DEPOT_PROJECT_ID: options.buildProjectId,\n DEPOT_NO_SUMMARY_LINK: \"1\",\n DEPOT_NO_UPDATE_NOTIFIER: \"1\",\n DOCKER_CONFIG: dockerConfigDir,\n },\n });\n\n const errors: string[] = [];\n\n try {\n const processCode = await new Promise<number | null>((res, rej) => {\n // For some reason everything is output on stderr, not stdout\n childProcess.stderr?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n errors.push(text);\n logger.debug(text);\n });\n\n childProcess.on(\"error\", (e) => rej(e));\n childProcess.on(\"close\", (code) => res(code));\n });\n\n const logs = extractLogs(errors);\n\n if (processCode !== 0) {\n return {\n ok: false as const,\n error: `Error building image`,\n logs,\n };\n }\n\n const digest = extractImageDigest(errors);\n\n span.setAttributes({\n \"image.digest\": digest,\n });\n\n span.end();\n\n return {\n ok: true as const,\n image: options.imageTag,\n logs,\n digest,\n };\n } catch (e) {\n recordSpanException(span, e);\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : JSON.stringify(e),\n logs: extractLogs(errors),\n };\n }\n });\n}\n\ntype BuildAndPushSelfHostedImageOptions = SetOptional<\n Omit<\n BuildAndPushImageOptions,\n \"buildId\" | \"buildToken\" | \"buildProjectId\" | \"auth\" | \"loadImage\"\n >,\n \"registryHost\"\n> & {\n pushImage: boolean;\n selfHostedRegistry: boolean;\n};\n\nasync function buildAndPushSelfHostedImage(\n options: BuildAndPushSelfHostedImageOptions\n): Promise<BuildAndPushImageResults> {\n return await tracer.startActiveSpan(\"buildAndPushSelfHostedImage\", async (span) => {\n span.setAttributes({\n \"options.imageTag\": options.imageTag,\n \"options.buildPlatform\": options.buildPlatform,\n \"options.projectId\": options.projectId,\n \"options.deploymentId\": options.deploymentId,\n \"options.deploymentVersion\": options.deploymentVersion,\n \"options.contentHash\": options.contentHash,\n \"options.projectRef\": options.projectRef,\n });\n\n const imageRef = `${options.registryHost ? `${options.registryHost}/` : \"\"}${options.imageTag}`;\n\n const buildArgs = [\n \"build\",\n \"-f\",\n \"Containerfile\",\n \"--platform\",\n options.buildPlatform,\n \"--build-arg\",\n `TRIGGER_PROJECT_ID=${options.projectId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_ID=${options.deploymentId}`,\n \"--build-arg\",\n `TRIGGER_DEPLOYMENT_VERSION=${options.deploymentVersion}`,\n \"--build-arg\",\n `TRIGGER_CONTENT_HASH=${options.contentHash}`,\n \"--build-arg\",\n `TRIGGER_PROJECT_REF=${options.projectRef}`,\n \"-t\",\n imageRef,\n \".\", // The build context\n ].filter(Boolean) as string[];\n\n logger.debug(`docker ${buildArgs.join(\" \")}`);\n\n span.setAttribute(\"docker.command.build\", `docker ${buildArgs.join(\" \")}`);\n\n // Build the image\n const buildProcess = execa(\"docker\", buildArgs, {\n cwd: options.cwd,\n });\n\n const errors: string[] = [];\n let digest: string | undefined;\n\n try {\n const processCode = await new Promise<number | null>((res, rej) => {\n // For some reason everything is output on stderr, not stdout\n buildProcess.stderr?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n errors.push(text);\n logger.debug(text);\n });\n\n buildProcess.on(\"error\", (e) => rej(e));\n buildProcess.on(\"close\", (code) => res(code));\n });\n\n if (processCode !== 0) {\n return {\n ok: false as const,\n error: \"Error building image\",\n logs: extractLogs(errors),\n };\n }\n\n digest = extractImageDigest(errors);\n\n span.setAttributes({\n \"image.digest\": digest,\n });\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : JSON.stringify(e),\n logs: extractLogs(errors),\n };\n }\n\n const pushArgs = [\"push\", imageRef].filter(Boolean) as string[];\n\n logger.debug(`docker ${pushArgs.join(\" \")}`);\n\n span.setAttribute(\"docker.command.push\", `docker ${pushArgs.join(\" \")}`);\n\n if (options.selfHostedRegistry || options.pushImage) {\n // Push the image\n const pushProcess = execa(\"docker\", pushArgs, {\n cwd: options.cwd,\n });\n\n try {\n const processCode = await new Promise<number | null>((res, rej) => {\n pushProcess.stdout?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n logger.debug(text);\n });\n\n pushProcess.stderr?.on(\"data\", (data: Buffer) => {\n const text = data.toString();\n\n logger.debug(text);\n });\n\n pushProcess.on(\"error\", (e) => rej(e));\n pushProcess.on(\"close\", (code) => res(code));\n });\n\n if (processCode !== 0) {\n return {\n ok: false as const,\n error: \"Error pushing image\",\n logs: extractLogs(errors),\n };\n }\n\n span.end();\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : JSON.stringify(e),\n logs: extractLogs(errors),\n };\n }\n }\n\n span.end();\n\n return {\n ok: true as const,\n image: options.imageTag,\n digest,\n logs: extractLogs(errors),\n };\n });\n}\n\nfunction extractImageDigest(outputs: string[]) {\n const imageDigestRegex = /sha256:[a-f0-9]{64}/;\n\n for (const line of outputs) {\n if (line.includes(\"pushing manifest\")) {\n const imageDigestMatch = line.match(imageDigestRegex);\n if (imageDigestMatch) {\n return imageDigestMatch[0];\n }\n }\n }\n}\n\nfunction extractLogs(outputs: string[]) {\n // Remove empty lines\n const cleanedOutputs = outputs.map((line) => line.trim()).filter((line) => line !== \"\");\n\n return cleanedOutputs.map((line) => line.trim()).join(\"\\n\");\n}\n\nasync function compileProject(\n config: ResolvedConfig,\n options: DeployCommandOptions,\n configPath?: string\n) {\n return await tracer.startActiveSpan(\"compileProject\", async (span) => {\n try {\n if (!options.skipTypecheck) {\n const typecheck = await typecheckProject(config, options);\n\n if (!typecheck) {\n throw new Error(\"Typecheck failed, aborting deployment\");\n }\n }\n\n const compileSpinner = spinner();\n compileSpinner.start(`Building project in ${config.projectDir}`);\n\n const taskFiles = await gatherTaskFiles(config);\n const workerFacade = readFileSync(\n new URL(importResolve(\"./workers/prod/worker-facade.js\", import.meta.url)).href.replace(\n \"file://\",\n \"\"\n ),\n \"utf-8\"\n );\n\n const workerSetupPath = new URL(\n importResolve(\"./workers/prod/worker-setup.js\", import.meta.url)\n ).href.replace(\"file://\", \"\");\n\n let workerContents = workerFacade\n .replace(\"__TASKS__\", createTaskFileImports(taskFiles))\n .replace(\"__WORKER_SETUP__\", `import { tracingSDK } from \"${workerSetupPath}\";`);\n\n if (configPath) {\n logger.debug(\"Importing project config from\", { configPath });\n\n workerContents = workerContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `import * as importedConfigExports from \"${configPath}\"; const importedConfig = importedConfigExports.config; const handleError = importedConfigExports.handleError;`\n );\n } else {\n workerContents = workerContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `const importedConfig = undefined; const handleError = undefined;`\n );\n }\n\n const result = await build({\n stdin: {\n contents: workerContents,\n resolveDir: process.cwd(),\n sourcefile: \"__entryPoint.ts\",\n },\n bundle: true,\n metafile: true,\n write: false,\n minify: false,\n sourcemap: \"external\", // does not set the //# sourceMappingURL= comment in the file, we handle it ourselves\n logLevel: \"error\",\n platform: \"node\",\n format: \"cjs\", // This is needed to support opentelemetry instrumentation that uses module patching\n target: [\"node18\", \"es2020\"],\n outdir: \"out\",\n define: {\n TRIGGER_API_URL: `\"${config.triggerUrl}\"`,\n __PROJECT_CONFIG__: JSON.stringify(config),\n },\n plugins: [\n bundleDependenciesPlugin(\n \"workerFacade\",\n config.dependenciesToBundle,\n config.tsconfigPath\n ),\n workerSetupImportConfigPlugin(configPath),\n ],\n });\n\n if (result.errors.length > 0) {\n compileSpinner.stop(\"Build failed, aborting deployment\");\n\n span.setAttributes({\n \"build.workerErrors\": result.errors.map(\n (error) => `Error: ${error.text} at ${error.location?.file}`\n ),\n });\n\n throw new Error(\"Build failed, aborting deployment\");\n }\n\n if (options.outputMetafile) {\n await writeJSONFile(join(options.outputMetafile, \"worker.json\"), result.metafile);\n }\n\n const entryPointContents = readFileSync(\n new URL(importResolve(\"./workers/prod/entry-point.js\", import.meta.url)).href.replace(\n \"file://\",\n \"\"\n ),\n \"utf-8\"\n );\n\n const entryPointResult = await build({\n stdin: {\n contents: entryPointContents,\n resolveDir: process.cwd(),\n sourcefile: \"index.ts\",\n },\n bundle: true,\n metafile: true,\n write: false,\n minify: false,\n sourcemap: false,\n logLevel: \"error\",\n platform: \"node\",\n packages: \"external\",\n format: \"cjs\", // This is needed to support opentelemetry instrumentation that uses module patching\n target: [\"node18\", \"es2020\"],\n outdir: \"out\",\n define: {\n __PROJECT_CONFIG__: JSON.stringify(config),\n },\n plugins: [\n bundleDependenciesPlugin(\n \"entryPoint.ts\",\n config.dependenciesToBundle,\n config.tsconfigPath\n ),\n ],\n });\n\n if (entryPointResult.errors.length > 0) {\n compileSpinner.stop(\"Build failed, aborting deployment\");\n\n span.setAttributes({\n \"build.entryPointErrors\": entryPointResult.errors.map(\n (error) => `Error: ${error.text} at ${error.location?.file}`\n ),\n });\n\n throw new Error(\"Build failed, aborting deployment\");\n }\n\n if (options.outputMetafile) {\n await writeJSONFile(\n join(options.outputMetafile, \"entry-point.json\"),\n entryPointResult.metafile\n );\n }\n\n // Create a tmp directory to store the build\n const tempDir = await createTempDir();\n\n logger.debug(`Writing compiled files to ${tempDir}`);\n\n // Get the metaOutput for the result build\n const metaOutput = result.metafile!.outputs[join(\"out\", \"stdin.js\")];\n\n invariant(metaOutput, \"Meta output for the result build is missing\");\n\n // Get the metaOutput for the entryPoint build\n const entryPointMetaOutput = entryPointResult.metafile!.outputs[join(\"out\", \"stdin.js\")];\n\n invariant(entryPointMetaOutput, \"Meta output for the entryPoint build is missing\");\n\n // Get the outputFile and the sourceMapFile for the result build\n const workerOutputFile = result.outputFiles.find(\n (file) => file.path === join(config.projectDir, \"out\", \"stdin.js\")\n );\n\n invariant(workerOutputFile, \"Output file for the result build is missing\");\n\n const workerSourcemapFile = result.outputFiles.find(\n (file) => file.path === join(config.projectDir, \"out\", \"stdin.js.map\")\n );\n\n invariant(workerSourcemapFile, \"Sourcemap file for the result build is missing\");\n\n // Get the outputFile for the entryPoint build\n\n const entryPointOutputFile = entryPointResult.outputFiles.find(\n (file) => file.path === join(config.projectDir, \"out\", \"stdin.js\")\n );\n\n invariant(entryPointOutputFile, \"Output file for the entryPoint build is missing\");\n\n // Save the result outputFile to /tmp/dir/worker.js (and make sure to map the sourceMap to the correct location in the file)\n await writeFile(\n join(tempDir, \"worker.js\"),\n `${workerOutputFile.text}\\n//# sourceMappingURL=worker.js.map`\n );\n // Save the sourceMapFile to /tmp/dir/worker.js.map\n await writeFile(join(tempDir, \"worker.js.map\"), workerSourcemapFile.text);\n // Save the entryPoint outputFile to /tmp/dir/index.js\n await writeFile(join(tempDir, \"index.js\"), entryPointOutputFile.text);\n\n logger.debug(\"Getting the imports for the worker and entryPoint builds\", {\n workerImports: metaOutput.imports,\n entryPointImports: entryPointMetaOutput.imports,\n });\n\n // Get all the required dependencies from the metaOutputs and save them to /tmp/dir/package.json\n const allImports = [...metaOutput.imports, ...entryPointMetaOutput.imports];\n\n const externalPackageJson = await readJSONFile(join(config.projectDir, \"package.json\"));\n\n const dependencies = await gatherRequiredDependencies(\n allImports,\n config,\n externalPackageJson\n );\n\n const packageJsonContents = {\n name: \"trigger-worker\",\n version: \"0.0.0\",\n description: \"\",\n dependencies,\n scripts: {\n postinstall: externalPackageJson?.scripts?.postinstall,\n },\n };\n\n await writeJSONFile(join(tempDir, \"package.json\"), packageJsonContents);\n\n await copyAdditionalFiles(config, tempDir);\n\n compileSpinner.stop(\"Project built successfully\");\n\n const resolvingDependenciesResult = await resolveDependencies(\n tempDir,\n packageJsonContents,\n config,\n options\n );\n\n if (!resolvingDependenciesResult) {\n throw new SkipLoggingError(\"Failed to resolve dependencies\");\n }\n\n // Write the Containerfile to /tmp/dir/Containerfile\n const containerFilePath = new URL(\n importResolve(\"./Containerfile.prod\", import.meta.url)\n ).href.replace(\"file://\", \"\");\n // Copy the Containerfile to /tmp/dir/Containerfile\n await copyFile(containerFilePath, join(tempDir, \"Containerfile\"));\n\n const contentHasher = createHash(\"sha256\");\n contentHasher.update(Buffer.from(entryPointOutputFile.text));\n contentHasher.update(Buffer.from(workerOutputFile.text));\n contentHasher.update(Buffer.from(JSON.stringify(dependencies)));\n\n const contentHash = contentHasher.digest(\"hex\");\n\n const workerSetupEnvVars = await findAllEnvironmentVariableReferencesInFile(workerSetupPath);\n\n const workerFacadeEnvVars = findAllEnvironmentVariableReferences(workerContents);\n\n const envVars = findAllEnvironmentVariableReferences(workerOutputFile.text);\n\n // Remove workerFacadeEnvVars and workerSetupEnvVars from envVars\n const finalEnvVars = envVars.filter(\n (envVar) => !workerFacadeEnvVars.includes(envVar) && !workerSetupEnvVars.includes(envVar)\n );\n\n span.setAttributes({\n contentHash: contentHash,\n envVars: finalEnvVars,\n });\n\n span.end();\n\n return { path: tempDir, contentHash, envVars: finalEnvVars };\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n throw e;\n }\n });\n}\n\n// Let's first create a digest from the package.json, and then use that digest to lookup a cached package-lock.json\n// in the `.trigger/cache` directory. If the package-lock.json is found, we'll write it to the project directory\n// If the package-lock.json is not found, we will run `npm install --package-lock-only` and then write the package-lock.json\n// to the project directory, and finally we'll write the digest to the `.trigger/cache` directory with the contents of the package-lock.json\nasync function resolveDependencies(\n projectDir: string,\n packageJsonContents: any,\n config: ResolvedConfig,\n options: DeployCommandOptions\n) {\n return await tracer.startActiveSpan(\"resolveDependencies\", async (span) => {\n const resolvingDepsSpinner = spinner();\n resolvingDepsSpinner.start(\"Resolving dependencies\");\n\n const hasher = createHash(\"sha256\");\n hasher.update(JSON.stringify(packageJsonContents));\n const digest = hasher.digest(\"hex\").slice(0, 16);\n\n const cacheDir = join(config.projectDir, \".trigger\", \"cache\");\n const cachePath = join(cacheDir, `${digest}.json`);\n\n span.setAttributes({\n \"packageJson.digest\": digest,\n \"cache.path\": cachePath,\n ...flattenAttributes(packageJsonContents, \"packageJson.contents\"),\n });\n\n try {\n const cachedPackageLock = await readFile(cachePath, \"utf-8\");\n\n logger.debug(`Using cached package-lock.json for ${digest}`);\n\n await writeFile(join(projectDir, \"package-lock.json\"), cachedPackageLock);\n\n span.setAttributes({\n \"cache.hit\": true,\n });\n\n span.end();\n\n resolvingDepsSpinner.stop(\"Dependencies resolved\");\n\n return true;\n } catch (e) {\n // If the file doesn't exist, we'll continue to the next step\n if (e instanceof Error && \"code\" in e && e.code !== \"ENOENT\") {\n span.recordException(e as Error);\n span.end();\n\n resolvingDepsSpinner.stop(`Failed to resolve dependencies: ${e.message}`);\n\n return false;\n }\n\n span.setAttributes({\n \"cache.hit\": false,\n });\n\n logger.debug(`No cached package-lock.json found for ${digest}`);\n\n try {\n await execa(\"npm\", [\"install\", \"--package-lock-only\", \"--ignore-scripts\", \"--no-audit\"], {\n cwd: projectDir,\n stdio: logger.loggerLevel === \"debug\" ? \"inherit\" : \"pipe\",\n });\n\n const packageLockContents = await readFile(join(projectDir, \"package-lock.json\"), \"utf-8\");\n\n logger.debug(`Writing package-lock.json to cache for ${digest}`);\n\n // Make sure the cache directory exists\n await mkdir(cacheDir, { recursive: true });\n\n // Save the package-lock.json to the cache\n await writeFile(cachePath, packageLockContents);\n\n // Write the package-lock.json to the project directory\n await writeFile(join(projectDir, \"package-lock.json\"), packageLockContents);\n\n span.end();\n\n resolvingDepsSpinner.stop(\"Dependencies resolved\");\n\n return true;\n } catch (installError) {\n recordSpanException(span, installError);\n span.end();\n\n const parsedError = parseNpmInstallError(installError);\n\n if (typeof parsedError === \"string\") {\n resolvingDepsSpinner.stop(`Failed to resolve dependencies: ${parsedError}`);\n } else {\n switch (parsedError.type) {\n case \"package-not-found-error\": {\n resolvingDepsSpinner.stop(`Failed to resolve dependencies`);\n\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not be found in the npm registry.`\n );\n\n break;\n }\n case \"no-matching-version-error\": {\n resolvingDepsSpinner.stop(`Failed to resolve dependencies`);\n\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not resolve because the version doesn't exist`\n );\n\n break;\n }\n }\n }\n\n return false;\n }\n }\n });\n}\n\nasync function typecheckProject(config: ResolvedConfig, options: DeployCommandOptions) {\n return await tracer.startActiveSpan(\"typecheckProject\", async (span) => {\n try {\n const typecheckSpinner = spinner();\n typecheckSpinner.start(\"Typechecking project\");\n\n const tscTypecheck = execa(\"npm\", [\"exec\", \"tsc\", \"--\", \"--noEmit\"], {\n cwd: config.projectDir,\n });\n\n const stdouts: string[] = [];\n const stderrs: string[] = [];\n\n tscTypecheck.stdout?.on(\"data\", (chunk) => stdouts.push(chunk.toString()));\n tscTypecheck.stderr?.on(\"data\", (chunk) => stderrs.push(chunk.toString()));\n\n try {\n await new Promise((resolve, reject) => {\n tscTypecheck.addListener(\"exit\", (code) => (code === 0 ? resolve(code) : reject(code)));\n });\n } catch (error) {\n typecheckSpinner.stop(\n `Typechecking failed, check the logs below to view the issues. To skip typechecking, pass the --skip-typecheck flag`\n );\n\n logger.log(\"\");\n\n for (const stdout of stdouts) {\n logger.log(stdout);\n }\n\n span.recordException(new Error(stdouts.join(\"\\n\")));\n span.end();\n\n return false;\n }\n\n typecheckSpinner.stop(`Typechecking passed with 0 errors`);\n\n span.end();\n return true;\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n return false;\n }\n });\n}\n\n// Returns the dependencies that are required by the output that are found in output and the CLI package dependencies\n// Returns the dependency names and the version to use (taken from the CLI deps package.json)\nasync function gatherRequiredDependencies(\n imports: Metafile[\"outputs\"][string][\"imports\"],\n config: ResolvedConfig,\n projectPackageJson: any\n) {\n const dependencies: Record<string, string> = {};\n\n for (const file of imports) {\n if ((file.kind !== \"require-call\" && file.kind !== \"dynamic-import\") || !file.external) {\n continue;\n }\n\n const packageName = detectPackageNameFromImportPath(file.path);\n\n if (dependencies[packageName]) {\n continue;\n }\n\n const externalDependencyVersion = (projectPackageJson?.dependencies ?? {})[packageName];\n\n if (externalDependencyVersion) {\n dependencies[packageName] = stripWorkspaceFromVersion(externalDependencyVersion);\n continue;\n }\n\n const internalDependencyVersion =\n (packageJson.dependencies as Record<string, string>)[packageName] ??\n detectDependencyVersion(packageName);\n\n if (internalDependencyVersion) {\n dependencies[packageName] = stripWorkspaceFromVersion(internalDependencyVersion);\n }\n }\n\n if (config.additionalPackages) {\n for (const packageName of config.additionalPackages) {\n if (dependencies[packageName]) {\n continue;\n }\n\n const packageParts = parsePackageName(packageName);\n\n if (packageParts.version) {\n dependencies[packageParts.name] = packageParts.version;\n continue;\n } else {\n const externalDependencyVersion = {\n ...projectPackageJson?.devDependencies,\n ...projectPackageJson?.dependencies,\n }[packageName];\n\n if (externalDependencyVersion) {\n dependencies[packageParts.name] = externalDependencyVersion;\n continue;\n } else {\n logger.log(\n `${chalkWarning(\"X Warning:\")} Could not find version for package ${chalkPurple(\n packageName\n )}, add a version specifier to the package name (e.g. ${\n packageParts.name\n }@latest) or add it to your project's package.json`\n );\n }\n }\n }\n }\n\n // Make sure we sort the dependencies by key to ensure consistent hashing\n return Object.fromEntries(Object.entries(dependencies).sort(([a], [b]) => a.localeCompare(b)));\n}\n\nasync function copyAdditionalFiles(config: ResolvedConfig, tempDir: string) {\n const additionalFiles = config.additionalFiles ?? [];\n\n if (additionalFiles.length === 0) {\n return;\n }\n\n return await tracer.startActiveSpan(\n \"copyAdditionalFiles\",\n {\n attributes: {\n \"config.additionalFiles\": additionalFiles,\n },\n },\n async (span) => {\n try {\n logger.debug(`Copying files to ${tempDir}`, {\n additionalFiles,\n });\n\n const glob = new Glob(additionalFiles, {\n withFileTypes: true,\n ignore: [\"node_modules\"],\n cwd: config.projectDir,\n nodir: true,\n });\n\n for await (const file of glob) {\n const relativeDestinationPath = join(\n tempDir,\n relative(config.projectDir, file.fullpath())\n );\n\n logger.debug(`Copying file ${file.fullpath()} to ${relativeDestinationPath}`);\n await mkdir(dirname(relativeDestinationPath), { recursive: true });\n await copyFile(file.fullpath(), relativeDestinationPath);\n }\n\n span.end();\n } catch (error) {\n recordSpanException(span, error);\n\n span.end();\n\n throw error;\n }\n }\n );\n}\n\nasync function ensureLoggedIntoDockerRegistry(\n registryHost: string,\n auth: { username: string; password: string }\n) {\n const tmpDir = await createTempDir();\n // Read the current docker config\n const dockerConfigPath = join(tmpDir, \"config.json\");\n\n await writeJSONFile(dockerConfigPath, {\n auths: {\n [registryHost]: {\n auth: Buffer.from(`${auth.username}:${auth.password}`).toString(\"base64\"),\n },\n },\n });\n\n logger.debug(`Writing docker config to ${dockerConfigPath}`);\n\n return tmpDir;\n}\n\nasync function findAllEnvironmentVariableReferencesInFile(filePath: string) {\n const fileContents = await readFile(filePath, \"utf-8\");\n\n return findAllEnvironmentVariableReferences(fileContents);\n}\n\nconst IGNORED_ENV_VARS = [\"NODE_ENV\", \"SHELL\", \"HOME\", \"PWD\", \"LOGNAME\", \"USER\", \"PATH\", \"DEBUG\"];\n\nfunction findAllEnvironmentVariableReferences(code: string): string[] {\n const regex = /\\bprocess\\.env\\.([a-zA-Z_][a-zA-Z0-9_]*)\\b/g;\n\n const matches = code.matchAll(regex);\n\n const matchesArray = Array.from(matches, (match) => match[1]).filter(Boolean) as string[];\n\n const filteredMatches = matchesArray.filter((match) => !IGNORED_ENV_VARS.includes(match));\n\n // Make sure and remove duplicates\n return Array.from(new Set(filteredMatches));\n}\n\nfunction arrayToSentence(items: string[]): string {\n if (items.length === 1 && typeof items[0] === \"string\") {\n return items[0];\n }\n\n if (items.length === 2) {\n return `${items[0]} and ${items[1]}`;\n }\n\n return `${items.slice(0, -1).join(\", \")}, and ${items[items.length - 1]}`;\n}\n","{\n \"name\": \"trigger.dev\",\n \"version\": \"3.0.0-beta.8\",\n \"description\": \"A Command-Line Interface for Trigger.dev (v3) projects\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/triggerdotdev/trigger.dev.git\",\n \"directory\": \"packages/cli-v3\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"keywords\": [\n \"typescript\",\n \"trigger.dev\",\n \"workflows\",\n \"orchestration\",\n \"events\",\n \"webhooks\",\n \"integrations\",\n \"apis\",\n \"jobs\",\n \"background jobs\",\n \"nextjs\"\n ],\n \"files\": [\n \"dist\"\n ],\n \"type\": \"module\",\n \"exports\": \"./dist/index.js\",\n \"bin\": {\n \"triggerdev\": \"./dist/index.js\"\n },\n \"devDependencies\": {\n \"@trigger.dev/core-apps\": \"workspace:*\",\n \"@trigger.dev/tsconfig\": \"workspace:*\",\n \"@types/gradient-string\": \"^1.1.2\",\n \"@types/jsonlines\": \"^0.1.5\",\n \"@types/mock-fs\": \"^4.13.1\",\n \"@types/node\": \"18\",\n \"@types/object-hash\": \"^3.0.6\",\n \"@types/react\": \"^18.2.48\",\n \"@types/semver\": \"^7.3.13\",\n \"@types/ws\": \"^8.5.3\",\n \"cpy-cli\": \"^5.0.0\",\n \"npm-run-all\": \"^4.1.5\",\n \"npm-watch\": \"^0.11.0\",\n \"open\": \"^10.0.3\",\n \"p-retry\": \"^6.1.0\",\n \"rimraf\": \"^3.0.2\",\n \"tsup\": \"^8.0.1\",\n \"type-fest\": \"^3.6.0\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^0.34.4\",\n \"xdg-app-paths\": \"^8.3.0\"\n },\n \"watch\": {\n \"build:prod-containerfile\": \"src/Containerfile.prod\"\n },\n \"scripts\": {\n \"typecheck\": \"tsc -p tsconfig.check.json\",\n \"build\": \"npm run clean && run-p build:**\",\n \"build:main\": \"tsup\",\n \"build:workers\": \"tsup --config tsup.workers.config.ts\",\n \"build:prod-containerfile\": \"cpy --flat src/Containerfile.prod dist/\",\n \"dev\": \"npm run clean && run-p dev:**\",\n \"dev:main\": \"tsup --watch\",\n \"dev:workers\": \"tsup --config tsup.workers.config.ts --watch\",\n \"dev:prod-containerfile\": \"npm-watch\",\n \"clean\": \"rimraf dist\",\n \"start\": \"node dist/index.js\",\n \"test\": \"vitest\"\n },\n \"dependencies\": {\n \"@clack/prompts\": \"^0.7.0\",\n \"@depot/cli\": \"0.0.1-cli.2.55.0\",\n \"@opentelemetry/api\": \"^1.8.0\",\n \"@opentelemetry/api-logs\": \"^0.49.1\",\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/instrumentation-fetch\": \"^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 \"@trigger.dev/core\": \"workspace:^3.0.0-beta.7\",\n \"@types/degit\": \"^2.8.3\",\n \"chalk\": \"^5.2.0\",\n \"chokidar\": \"^3.5.3\",\n \"cli-table3\": \"^0.6.3\",\n \"commander\": \"^9.4.1\",\n \"degit\": \"^2.8.4\",\n \"dotenv\": \"^16.4.4\",\n \"esbuild\": \"^0.19.11\",\n \"evt\": \"^2.4.13\",\n \"execa\": \"^8.0.0\",\n \"find-up\": \"^7.0.0\",\n \"glob\": \"^10.3.10\",\n \"gradient-string\": \"^2.0.2\",\n \"import-meta-resolve\": \"^4.0.0\",\n \"ink\": \"^4.4.1\",\n \"jsonc-parser\": \"^3.2.1\",\n \"jsonlines\": \"^0.1.1\",\n \"liquidjs\": \"^10.9.2\",\n \"mock-fs\": \"^5.2.0\",\n \"nanoid\": \"^4.0.2\",\n \"node-fetch\": \"^3.3.0\",\n \"npm-check-updates\": \"^16.12.2\",\n \"object-hash\": \"^3.0.0\",\n \"p-debounce\": \"^4.0.0\",\n \"p-throttle\": \"^6.1.0\",\n \"partysocket\": \"^0.0.17\",\n \"proxy-agent\": \"^6.3.0\",\n \"react\": \"^18.2.0\",\n \"react-error-boundary\": \"^4.0.12\",\n \"semver\": \"^7.5.0\",\n \"simple-git\": \"^3.19.0\",\n \"socket.io-client\": \"^4.7.4\",\n \"source-map-support\": \"^0.5.21\",\n \"terminal-link\": \"^3.0.0\",\n \"tiny-invariant\": \"^1.2.0\",\n \"tsconfig-paths\": \"^4.2.0\",\n \"update-check\": \"^1.5.4\",\n \"url\": \"^0.11.1\",\n \"ws\": \"^8.12.0\",\n \"zod\": \"3.22.3\",\n \"zod-validation-error\": \"^1.5.0\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n }\n}\n","import { z } from \"zod\";\nimport {\n CreateAuthorizationCodeResponseSchema,\n GetPersonalAccessTokenResponseSchema,\n WhoAmIResponseSchema,\n CreateBackgroundWorkerRequestBody,\n CreateBackgroundWorkerResponse,\n StartDeploymentIndexingResponseBody,\n GetProjectEnvResponse,\n GetEnvironmentVariablesResponseBody,\n InitializeDeploymentResponseBody,\n InitializeDeploymentRequestBody,\n StartDeploymentIndexingRequestBody,\n GetDeploymentResponseBody,\n GetProjectsResponseBody,\n GetProjectResponseBody,\n} from \"@trigger.dev/core/v3\";\n\nexport class CliApiClient {\n private readonly apiURL: string;\n\n constructor(\n apiURL: string,\n private readonly accessToken?: string\n ) {\n this.apiURL = apiURL.replace(/\\/$/, \"\");\n }\n\n async createAuthorizationCode() {\n return zodfetch(\n CreateAuthorizationCodeResponseSchema,\n `${this.apiURL}/api/v1/authorization-code`,\n {\n method: \"POST\",\n }\n );\n }\n\n async getPersonalAccessToken(authorizationCode: string) {\n return zodfetch(GetPersonalAccessTokenResponseSchema, `${this.apiURL}/api/v1/token`, {\n method: \"POST\",\n body: JSON.stringify({\n authorizationCode,\n }),\n });\n }\n\n async whoAmI() {\n if (!this.accessToken) {\n throw new Error(\"whoAmI: No access token\");\n }\n\n return zodfetch(WhoAmIResponseSchema, `${this.apiURL}/api/v2/whoami`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async getProject(projectRef: string) {\n if (!this.accessToken) {\n throw new Error(\"getProject: No access token\");\n }\n\n return zodfetch(GetProjectResponseBody, `${this.apiURL}/api/v1/projects/${projectRef}`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async getProjects() {\n if (!this.accessToken) {\n throw new Error(\"getProjects: No access token\");\n }\n\n return zodfetch(GetProjectsResponseBody, `${this.apiURL}/api/v1/projects`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async createBackgroundWorker(projectRef: string, body: CreateBackgroundWorkerRequestBody) {\n if (!this.accessToken) {\n throw new Error(\"createBackgroundWorker: No access token\");\n }\n\n return zodfetch(\n CreateBackgroundWorkerResponse,\n `${this.apiURL}/api/v1/projects/${projectRef}/background-workers`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async getProjectEnv({\n projectRef,\n env,\n }: {\n projectRef: string;\n env: \"dev\" | \"prod\" | \"staging\";\n }) {\n if (!this.accessToken) {\n throw new Error(\"getProjectDevEnv: No access token\");\n }\n\n return zodfetch(GetProjectEnvResponse, `${this.apiURL}/api/v1/projects/${projectRef}/${env}`, {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n async getEnvironmentVariables(projectRef: string) {\n if (!this.accessToken) {\n throw new Error(\"getEnvironmentVariables: No access token\");\n }\n\n return zodfetch(\n GetEnvironmentVariablesResponseBody,\n `${this.apiURL}/api/v1/projects/${projectRef}/envvars`,\n {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n }\n );\n }\n\n async initializeDeployment(body: InitializeDeploymentRequestBody) {\n if (!this.accessToken) {\n throw new Error(\"initializeDeployment: No access token\");\n }\n\n return zodfetch(InitializeDeploymentResponseBody, `${this.apiURL}/api/v1/deployments`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async startDeploymentIndexing(deploymentId: string, body: StartDeploymentIndexingRequestBody) {\n if (!this.accessToken) {\n throw new Error(\"startDeploymentIndexing: No access token\");\n }\n\n return zodfetch(\n StartDeploymentIndexingResponseBody,\n `${this.apiURL}/api/v1/deployments/${deploymentId}/start-indexing`,\n {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async getDeployment(deploymentId: string) {\n if (!this.accessToken) {\n throw new Error(\"getDeployment: No access token\");\n }\n\n return zodfetch(\n GetDeploymentResponseBody,\n `${this.apiURL}/api/v1/deployments/${deploymentId}`,\n {\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n Accept: \"application/json\",\n },\n }\n );\n }\n}\n\ntype ApiResult<TSuccessResult> =\n | { success: true; data: TSuccessResult }\n | {\n success: false;\n error: string;\n };\n\nasync 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 success: 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 { success: false, error: \"Something went wrong\" };\n }\n\n return { success: false, error: body.error };\n }\n\n if (response.status !== 200) {\n return {\n success: 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 { success: true, data: parsedResult.data };\n }\n\n if (\"error\" in jsonBody) {\n return {\n success: false,\n error: typeof jsonBody.error === \"string\" ? jsonBody.error : JSON.stringify(jsonBody.error),\n };\n }\n\n return { success: false, error: parsedResult.error.message };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : JSON.stringify(error),\n };\n }\n}\n","import { flattenAttributes, recordSpanException } from \"@trigger.dev/core/v3\";\nimport { Command } from \"commander\";\nimport { z } from \"zod\";\nimport { getTracer, provider } from \"../telemetry/tracing\";\nimport { fromZodError } from \"zod-validation-error\";\nimport { logger } from \"../utilities/logger\";\nimport { outro } from \"@clack/prompts\";\nimport { chalkError } from \"../utilities/cliOutput\";\n\nexport const CommonCommandOptions = z.object({\n apiUrl: z.string().optional(),\n logLevel: z.enum([\"debug\", \"info\", \"log\", \"warn\", \"error\", \"none\"]).default(\"log\"),\n skipTelemetry: z.boolean().default(false),\n profile: z.string().default(\"default\"),\n});\n\nexport type CommonCommandOptions = z.infer<typeof CommonCommandOptions>;\n\nexport function commonOptions(command: Command) {\n return command\n .option(\"--profile <profile>\", \"The login profile to use\", \"default\")\n .option(\"-a, --api-url <value>\", \"Override the API URL\", \"https://api.trigger.dev\")\n .option(\n \"-l, --log-level <level>\",\n \"The CLI log level to use (debug, info, log, warn, error, none). This does not effect the log level of your trigger.dev tasks.\",\n \"log\"\n )\n .option(\"--skip-telemetry\", \"Opt-out of sending telemetry\");\n}\n\nexport class SkipLoggingError extends Error {}\nexport class SkipCommandError extends Error {}\nexport class OutroCommandError extends SkipCommandError {}\n\nexport async function handleTelemetry(action: () => Promise<void>) {\n try {\n await action();\n\n await provider?.forceFlush();\n } catch (e) {\n await provider?.forceFlush();\n\n process.exitCode = 1;\n }\n}\n\nexport const tracer = getTracer();\n\nexport async function wrapCommandAction<T extends z.AnyZodObject, TResult>(\n name: string,\n schema: T,\n options: unknown,\n action: (opts: z.output<T>) => Promise<TResult>\n): Promise<TResult> {\n return await tracer.startActiveSpan(name, async (span) => {\n try {\n const parsedOptions = schema.safeParse(options);\n\n if (!parsedOptions.success) {\n throw new Error(fromZodError(parsedOptions.error).toString());\n }\n\n span.setAttributes({\n ...flattenAttributes(parsedOptions.data, \"cli.options\"),\n });\n\n logger.loggerLevel = parsedOptions.data.logLevel;\n\n logger.debug(`Running \"${name}\" with the following options`, {\n options: options,\n spanContext: span?.spanContext(),\n });\n\n const result = await action(parsedOptions.data);\n\n span.end();\n\n return result;\n } catch (e) {\n if (e instanceof SkipLoggingError) {\n recordSpanException(span, e);\n } else if (e instanceof OutroCommandError) {\n outro(\"Operation cancelled\");\n } else if (e instanceof SkipCommandError) {\n // do nothing\n } else {\n recordSpanException(span, e);\n\n logger.log(`${chalkError(\"X Error:\")} ${e instanceof Error ? e.message : String(e)}`);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n","import { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-http\";\nimport { registerInstrumentations } from \"@opentelemetry/instrumentation\";\nimport { Resource, detectResourcesSync, processDetectorSync } from \"@opentelemetry/resources\";\nimport { NodeTracerProvider, SimpleSpanProcessor } from \"@opentelemetry/sdk-trace-node\";\nimport { FetchInstrumentation } from \"@opentelemetry/instrumentation-fetch\";\nimport { DiagConsoleLogger, DiagLogLevel, diag, trace } from \"@opentelemetry/api\";\nimport * as packageJson from \"../../package.json\";\n\nfunction initializeTracing(): NodeTracerProvider | undefined {\n if (process.argv.includes(\"--skip-telemetry\") || process.env.TRIGGER_DEV_SKIP_TELEMETRY) {\n return;\n }\n\n if (process.env.OTEL_INTERNAL_DIAG_DEBUG) {\n diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);\n }\n\n const resource = detectResourcesSync({\n detectors: [processDetectorSync],\n }).merge(\n new Resource({\n service: \"trigger.dev cli v3\",\n })\n );\n\n const traceProvider = new NodeTracerProvider({\n forceFlushTimeoutMillis: 500,\n resource,\n spanLimits: {\n attributeCountLimit: 1000,\n attributeValueLengthLimit: 1000,\n eventCountLimit: 100,\n attributePerEventCountLimit: 100,\n linkCountLimit: 10,\n attributePerLinkCountLimit: 100,\n },\n });\n\n const spanExporter = new OTLPTraceExporter({\n url: \"https://otel.baselime.io/v1\",\n timeoutMillis: 500,\n headers: {\n \"x-api-key\": \"e9f963244f8b092850d42e34a5339b2d5e68070b\".split(\"\").reverse().join(\"\"), // this is a joke\n },\n });\n\n const spanProcessor = new SimpleSpanProcessor(spanExporter);\n\n traceProvider.addSpanProcessor(spanProcessor);\n traceProvider.register();\n\n registerInstrumentations({\n instrumentations: [new FetchInstrumentation()],\n });\n\n return traceProvider;\n}\n\nexport const provider = initializeTracing();\n\nexport function getTracer() {\n return trace.getTracer(\"trigger.dev cli\", packageJson.version);\n}\n","// This is a copy of the logger utility from the wrangler repo: https://github.com/cloudflare/workers-sdk/blob/main/packages/wrangler/src/logger.ts\n\nimport { format } from \"node:util\";\nimport chalk from \"chalk\";\nimport CLITable from \"cli-table3\";\nimport { formatMessagesSync } from \"esbuild\";\nimport type { Message } from \"esbuild\";\nimport { getEnvironmentVariableFactory } from \"./getEnvironmentVariableFactory.js\";\nexport const LOGGER_LEVELS = {\n none: -1,\n error: 0,\n warn: 1,\n info: 2,\n log: 3,\n debug: 4,\n} as const;\n\nexport type LoggerLevel = keyof typeof LOGGER_LEVELS;\n\n/** A map from LOGGER_LEVEL to the error `kind` needed by `formatMessagesSync()`. */\nconst LOGGER_LEVEL_FORMAT_TYPE_MAP = {\n error: \"error\",\n warn: \"warning\",\n info: undefined,\n log: undefined,\n debug: undefined,\n} as const;\n\nconst getLogLevelFromEnv = getEnvironmentVariableFactory({\n variableName: \"TRIGGER_LOG_LEVEL\",\n});\n\nfunction getLoggerLevel(): LoggerLevel {\n const fromEnv = getLogLevelFromEnv()?.toLowerCase();\n if (fromEnv !== undefined) {\n if (fromEnv in LOGGER_LEVELS) return fromEnv as LoggerLevel;\n const expected = Object.keys(LOGGER_LEVELS)\n .map((level) => `\"${level}\"`)\n .join(\" | \");\n console.warn(\n `Unrecognised WRANGLER_LOG value ${JSON.stringify(\n fromEnv\n )}, expected ${expected}, defaulting to \"log\"...`\n );\n }\n return \"log\";\n}\n\nexport type TableRow<Keys extends string> = Record<Keys, string>;\n\nexport class Logger {\n constructor() {}\n\n loggerLevel = getLoggerLevel();\n columns = process.stdout.columns;\n\n debug = (...args: unknown[]) => this.doLog(\"debug\", args);\n ignore = (...args: unknown[]) => {};\n debugWithSanitization = (label: string, ...args: unknown[]) => {\n this.doLog(\"debug\", [label, ...args]);\n };\n info = (...args: unknown[]) => this.doLog(\"info\", args);\n log = (...args: unknown[]) => this.doLog(\"log\", args);\n warn = (...args: unknown[]) => this.doLog(\"warn\", args);\n error = (...args: unknown[]) => this.doLog(\"error\", args);\n table<Keys extends string>(data: TableRow<Keys>[], level?: Exclude<LoggerLevel, \"none\">) {\n const keys: Keys[] = data.length === 0 ? [] : (Object.keys(data[0]!) as Keys[]);\n const t = new CLITable({\n head: keys,\n style: {\n head: chalk.level ? [\"blue\"] : [],\n border: chalk.level ? [\"gray\"] : [],\n },\n });\n t.push(...data.map((row) => keys.map((k) => row[k])));\n return this.doLog(level ?? \"log\", [t.toString()]);\n }\n\n private doLog(messageLevel: Exclude<LoggerLevel, \"none\">, args: unknown[]) {\n const message = this.formatMessage(messageLevel, format(...args));\n\n // only send logs to the terminal if their level is at least the configured log-level\n if (LOGGER_LEVELS[this.loggerLevel] >= LOGGER_LEVELS[messageLevel]) {\n console[messageLevel](message);\n }\n }\n\n private formatMessage(level: Exclude<LoggerLevel, \"none\">, message: string): string {\n const kind = LOGGER_LEVEL_FORMAT_TYPE_MAP[level];\n if (kind) {\n // Format the message using the esbuild formatter.\n // The first line of the message is the main `text`,\n // subsequent lines are put into the `notes`.\n const [firstLine, ...otherLines] = message.split(\"\\n\");\n const notes = otherLines.length > 0 ? otherLines.map((text) => ({ text })) : undefined;\n return formatMessagesSync([{ text: firstLine, notes }], {\n color: true,\n kind,\n terminalWidth: this.columns,\n })[0]!;\n } else {\n return message;\n }\n }\n}\n\n/**\n * A drop-in replacement for `console` for outputting logging messages.\n *\n * Errors and Warnings will get additional formatting to highlight them to the user.\n * You can also set a `logger.loggerLevel` value to one of \"debug\", \"log\", \"warn\" or \"error\",\n * to filter out logging messages.\n */\nexport const logger = new Logger();\n\nexport function logBuildWarnings(warnings: Message[]) {\n const logs = formatMessagesSync(warnings, { kind: \"warning\", color: true });\n for (const log of logs) console.warn(log);\n}\n\n/**\n * Logs all errors/warnings associated with an esbuild BuildFailure in the same\n * style esbuild would.\n */\nexport function logBuildFailure(errors: Message[], warnings: Message[]) {\n const logs = formatMessagesSync(errors, { kind: \"error\", color: true });\n for (const log of logs) console.error(log);\n logBuildWarnings(warnings);\n}\n","import { logger } from \"./logger.js\";\n\ntype VariableNames = \"TRIGGER_API_URL\" | \"TRIGGER_SECRET_KEY\" | \"TRIGGER_LOG_LEVEL\";\n\ntype DeprecatedNames = \"\";\n\n/**\n * Create a function used to access an environment variable.\n *\n * This is not memoized to allow us to change the value at runtime, such as in testing.\n * A warning is shown if the client is using a deprecated version - but only once.\n */\nexport function getEnvironmentVariableFactory({\n variableName,\n deprecatedName,\n}: {\n variableName: VariableNames;\n deprecatedName?: DeprecatedNames;\n}): () => string | undefined;\n\n/**\n * Create a function used to access an environment variable, with a default value.\n *\n * This is not memoized to allow us to change the value at runtime, such as in testing.\n * A warning is shown if the client is using a deprecated version - but only once.\n */\nexport function getEnvironmentVariableFactory({\n variableName,\n deprecatedName,\n defaultValue,\n}: {\n variableName: VariableNames;\n deprecatedName?: DeprecatedNames;\n defaultValue: () => string;\n}): () => string;\n\n/**\n * Create a function used to access an environment variable.\n *\n * This is not memoized to allow us to change the value at runtime, such as in testing.\n * A warning is shown if the client is using a deprecated version - but only once.\n */\nexport function getEnvironmentVariableFactory({\n variableName,\n deprecatedName,\n defaultValue,\n}: {\n variableName: VariableNames;\n deprecatedName?: DeprecatedNames;\n defaultValue?: () => string;\n}): () => string | undefined {\n let hasWarned = false;\n return () => {\n if (process.env[variableName]) {\n return process.env[variableName];\n } else if (deprecatedName && process.env[deprecatedName]) {\n if (!hasWarned) {\n // Only show the warning once.\n hasWarned = true;\n logger.warn(\n `Using \"${deprecatedName}\" environment variable. This is deprecated. Please use \"${variableName}\", instead.`\n );\n }\n return process.env[deprecatedName];\n } else {\n return defaultValue?.();\n }\n };\n}\n","import chalk from \"chalk\";\n\nexport const green = \"#4FFF54\";\nexport const purple = \"#735BF3\";\n\nexport function chalkGreen(text: string) {\n return chalk.hex(green)(text);\n}\n\nexport function chalkPurple(text: string) {\n return chalk.hex(purple)(text);\n}\n\nexport function chalkGrey(text: string) {\n return chalk.hex(\"#878C99\")(text);\n}\n\nexport function chalkError(text: string) {\n return chalk.hex(\"#E11D48\")(text);\n}\n\nexport function chalkWarning(text: string) {\n return chalk.yellow(text);\n}\n\nexport function chalkSuccess(text: string) {\n return chalk.hex(\"#28BF5C\")(text);\n}\n\nexport function chalkLink(text: string) {\n return chalk.underline.hex(\"#D7D9DD\")(text);\n}\n\nexport function chalkWorker(text: string) {\n return chalk.hex(\"#FFFF89\")(text);\n}\n\nexport function chalkTask(text: string) {\n return chalk.hex(\"#60A5FA\")(text);\n}\n\nexport function chalkRun(text: string) {\n return chalk.hex(\"#A78BFA\")(text);\n}\n\nexport function logo() {\n return `${chalk.hex(green).bold(\"Trigger\")}${chalk.hex(purple).bold(\".dev\")}`;\n}\n\n// Mar 27 09:17:25.653\nexport function prettyPrintDate(date: Date = new Date()) {\n let formattedDate = new Intl.DateTimeFormat(\"en-US\", {\n month: \"short\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n hour12: false,\n }).format(date);\n\n // Append milliseconds\n formattedDate += \".\" + (\"00\" + date.getMilliseconds()).slice(-3);\n\n return formattedDate;\n}\n","import { Config, ResolvedConfig } from \"@trigger.dev/core/v3\";\nimport { findUp } from \"find-up\";\nimport { mkdirSync, writeFileSync } from \"node:fs\";\nimport path, { join } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport xdgAppPaths from \"xdg-app-paths\";\nimport { z } from \"zod\";\nimport { CLOUD_API_URL, CONFIG_FILES } from \"../consts.js\";\nimport { createTempDir, readJSONFileSync } from \"./fileSystem.js\";\nimport { logger } from \"./logger.js\";\nimport { findTriggerDirectories, resolveTriggerDirectories } from \"./taskFiles.js\";\nimport { build } from \"esbuild\";\n\nfunction getGlobalConfigFolderPath() {\n const configDir = xdgAppPaths(\"trigger\").config();\n\n return configDir;\n}\n\n//auth config file\nexport const UserAuthConfigSchema = z.object({\n accessToken: z.string().optional(),\n apiUrl: z.string().optional(),\n});\n\nexport type UserAuthConfig = z.infer<typeof UserAuthConfigSchema>;\n\nconst UserAuthConfigFileSchema = z.record(UserAuthConfigSchema);\n\ntype UserAuthConfigFile = z.infer<typeof UserAuthConfigFileSchema>;\n\nfunction getAuthConfigFilePath() {\n return path.join(getGlobalConfigFolderPath(), \"default.json\");\n}\n\nexport function writeAuthConfigProfile(config: UserAuthConfig, profile: string = \"default\") {\n const existingConfig = readAuthConfigFile() || {};\n\n existingConfig[profile] = config;\n\n writeAuthConfigFile(existingConfig);\n}\n\nexport function readAuthConfigProfile(profile: string = \"default\"): UserAuthConfig | undefined {\n try {\n const authConfigFilePath = getAuthConfigFilePath();\n\n logger.debug(`Reading auth config file`, { authConfigFilePath });\n\n const json = readJSONFileSync(authConfigFilePath);\n const parsed = UserAuthConfigFileSchema.parse(json);\n return parsed[profile];\n } catch (error) {\n logger.debug(`Error reading auth config file: ${error}`);\n return undefined;\n }\n}\n\nexport function deleteAuthConfigProfile(profile: string = \"default\") {\n const existingConfig = readAuthConfigFile() || {};\n\n delete existingConfig[profile];\n\n writeAuthConfigFile(existingConfig);\n}\n\nexport function readAuthConfigFile(): UserAuthConfigFile | undefined {\n try {\n const authConfigFilePath = getAuthConfigFilePath();\n\n logger.debug(`Reading auth config file`, { authConfigFilePath });\n\n const json = readJSONFileSync(authConfigFilePath);\n const parsed = UserAuthConfigFileSchema.parse(json);\n return parsed;\n } catch (error) {\n logger.debug(`Error reading auth config file: ${error}`);\n return undefined;\n }\n}\n\nexport function writeAuthConfigFile(config: UserAuthConfigFile) {\n const authConfigFilePath = getAuthConfigFilePath();\n mkdirSync(path.dirname(authConfigFilePath), {\n recursive: true,\n });\n writeFileSync(path.join(authConfigFilePath), JSON.stringify(config), {\n encoding: \"utf-8\",\n });\n}\n\nasync function getConfigPath(dir: string, fileName?: string): Promise<string | undefined> {\n logger.debug(\"Searching for the config file\", {\n dir,\n fileName,\n configFiles: CONFIG_FILES,\n });\n\n return await findUp(fileName ? [fileName] : CONFIG_FILES, { cwd: dir });\n}\n\nexport type ReadConfigOptions = {\n projectRef?: string;\n configFile?: string;\n};\n\nexport type ReadConfigResult =\n | {\n status: \"file\";\n config: ResolvedConfig;\n path: string;\n }\n | {\n status: \"in-memory\";\n config: ResolvedConfig;\n };\n\nexport async function readConfig(\n dir: string,\n options?: ReadConfigOptions\n): Promise<ReadConfigResult> {\n const absoluteDir = path.resolve(process.cwd(), dir);\n\n const configPath = await getConfigPath(dir, options?.configFile);\n\n if (!configPath) {\n if (options?.projectRef) {\n const rawConfig = await normalizeConfig({ project: options.projectRef });\n const config = Config.parse(rawConfig);\n\n return {\n status: \"in-memory\",\n config: await resolveConfig(absoluteDir, config),\n };\n } else {\n throw new Error(`Config file not found in ${absoluteDir} or any parent directory.`);\n }\n }\n\n const tempDir = await createTempDir();\n\n const builtConfigFilePath = join(tempDir, \"config.js\");\n const builtConfigFileHref = pathToFileURL(builtConfigFilePath).href;\n\n logger.debug(\"Building config file\", {\n configPath,\n builtConfigFileHref,\n builtConfigFilePath,\n });\n\n // We need to build the path to the config file, and then import it?\n await build({\n entryPoints: [configPath],\n bundle: true,\n metafile: true,\n minify: false,\n write: true,\n format: \"cjs\",\n platform: \"node\",\n target: [\"es2018\", \"node18\"],\n outfile: builtConfigFilePath,\n logLevel: \"silent\",\n });\n\n // import the config file\n const userConfigModule = await import(builtConfigFileHref);\n const rawConfig = await normalizeConfig(\n userConfigModule ? userConfigModule.config : { project: options?.projectRef }\n );\n const config = Config.parse(rawConfig);\n\n return {\n status: \"file\",\n config: await resolveConfig(absoluteDir, config),\n path: configPath,\n };\n}\n\nexport async function resolveConfig(path: string, config: Config): Promise<ResolvedConfig> {\n if (!config.triggerDirectories) {\n config.triggerDirectories = await findTriggerDirectories(path);\n }\n\n config.triggerDirectories = resolveTriggerDirectories(config.triggerDirectories);\n\n if (!config.triggerUrl) {\n config.triggerUrl = CLOUD_API_URL;\n }\n\n if (!config.projectDir) {\n config.projectDir = path;\n }\n\n if (!config.tsconfigPath) {\n config.tsconfigPath = await getConfigPath(path, \"tsconfig.json\");\n }\n\n return config as ResolvedConfig;\n}\n\nexport async function normalizeConfig(config: any): Promise<any> {\n if (typeof config === \"function\") {\n config = config();\n }\n\n return await config;\n}\n","// deno-fmt-ignore-file ## prefer customized `prettier` formatting\n\nimport _ from '../mod.cjs.js';\nexport * from '../mod.cjs.js';\nexport default _;\n","import path from \"path\";\nimport { fileURLToPath } from \"url\";\n\n// With the move to TSUP as a build tool, this keeps path routes in other files (installers, loaders, etc) in check more easily.\n// Path is in relation to a single index.js file inside ./dist\nconst __filename = fileURLToPath(import.meta.url);\nconst distPath = path.dirname(__filename);\n\nexport const PKG_ROOT = path.join(distPath, \"../\");\nexport const COMMAND_NAME = \"trigger.dev\";\nexport const CLOUD_WEB_URL = \"https://cloud.trigger.dev\";\nexport const CLOUD_API_URL = \"https://api.trigger.dev\";\nexport const CONFIG_FILES = [\"trigger.config.ts\", \"trigger.config.js\", \"trigger.config.mjs\"];\n","import fsSync from \"fs\";\nimport fsModule, { writeFile } from \"fs/promises\";\nimport fs from \"node:fs\";\nimport { tmpdir } from \"node:os\";\nimport pathModule from \"node:path\";\n\n// Creates a file at the given path, if the directory doesn't exist it will be created\nexport async function createFile(path: string, contents: string): Promise<string> {\n await fsModule.mkdir(pathModule.dirname(path), { recursive: true });\n await fsModule.writeFile(path, contents);\n\n return path;\n}\n\nexport function isDirectory(configPath: string) {\n try {\n return fs.statSync(configPath).isDirectory();\n } catch (error) {\n // ignore error\n return false;\n }\n}\n\nexport async function pathExists(path: string): Promise<boolean> {\n return fsSync.existsSync(path);\n}\n\nexport async function someFileExists(directory: string, filenames: string[]): Promise<boolean> {\n for (let index = 0; index < filenames.length; index++) {\n const filename = filenames[index];\n if (!filename) continue;\n\n const path = pathModule.join(directory, filename);\n if (await pathExists(path)) {\n return true;\n }\n }\n\n return false;\n}\n\nexport async function removeFile(path: string) {\n await fsModule.unlink(path);\n}\n\nexport async function readFile(path: string) {\n return await fsModule.readFile(path, \"utf8\");\n}\n\nexport async function readJSONFile(path: string) {\n const fileContents = await fsModule.readFile(path, \"utf8\");\n\n return JSON.parse(fileContents);\n}\n\nexport async function safeFeadJSONFile(path: string) {\n try {\n const fileExists = await pathExists(path);\n\n if (!fileExists) return;\n\n const fileContents = await readFile(path);\n\n return JSON.parse(fileContents);\n } catch {\n return;\n }\n}\n\nexport async function writeJSONFile(path: string, json: any) {\n await writeFile(path, JSON.stringify(json), \"utf8\");\n}\n\nexport function readJSONFileSync(path: string) {\n const fileContents = fsSync.readFileSync(path, \"utf8\");\n\n return JSON.parse(fileContents);\n}\n\nexport function safeDeleteFileSync(path: string) {\n try {\n fs.unlinkSync(path);\n } catch (error) {\n // ignore error\n }\n}\n\n// Create a temporary directory within the OS's temp directory\nexport async function createTempDir(): Promise<string> {\n // Generate a unique temp directory path\n const tempDirPath: string = pathModule.join(tmpdir(), \"trigger-\");\n\n // Create the temp directory synchronously and return the path\n const directory = await fsModule.mkdtemp(tempDirPath);\n\n return directory;\n}\n","import { ResolvedConfig } from \"@trigger.dev/core/v3\";\nimport fs from \"node:fs\";\nimport { join, relative, resolve } from \"node:path\";\nimport { TaskFile } from \"../types\";\n\nexport function createTaskFileImports(taskFiles: TaskFile[]) {\n return taskFiles\n .map(\n (taskFile) =>\n `import * as ${taskFile.importName} from \"./${taskFile.importPath}\"; TaskFileImports[\"${\n taskFile.importName\n }\"] = ${taskFile.importName}; TaskFiles[\"${taskFile.importName}\"] = ${JSON.stringify(\n taskFile\n )};`\n )\n .join(\"\\n\");\n}\n\n// Find all the top-level .js or .ts files in the trigger directories\nexport async function gatherTaskFiles(config: ResolvedConfig): Promise<Array<TaskFile>> {\n const taskFiles: Array<TaskFile> = [];\n\n for (const triggerDir of config.triggerDirectories) {\n const files = await fs.promises.readdir(triggerDir, { withFileTypes: true });\n for (const file of files) {\n if (!file.isFile()) continue;\n if (!file.name.endsWith(\".js\") && !file.name.endsWith(\".ts\")) continue;\n\n const fullPath = join(triggerDir, file.name);\n\n const filePath = relative(config.projectDir, fullPath);\n const importPath = filePath.replace(/\\.(js|ts)$/, \"\");\n const importName = importPath.replace(/\\//g, \"_\").replace(/\\./g, \"_\").replace(/-/g, \"_\");\n\n taskFiles.push({ triggerDir, importPath, importName, filePath });\n }\n }\n\n return taskFiles;\n}\n\nexport function resolveTriggerDirectories(dirs: string[]): string[] {\n return dirs.map((dir) => resolve(dir));\n}\n\nconst IGNORED_DIRS = [\"node_modules\", \".git\", \"dist\", \"build\"];\n\nexport async function findTriggerDirectories(dirPath: string): Promise<string[]> {\n return getTriggerDirectories(dirPath);\n}\n\nasync function getTriggerDirectories(dirPath: string): Promise<string[]> {\n const entries = await fs.promises.readdir(dirPath, { withFileTypes: true });\n const triggerDirectories: string[] = [];\n\n for (const entry of entries) {\n if (!entry.isDirectory() || IGNORED_DIRS.includes(entry.name)) continue;\n\n const fullPath = join(dirPath, entry.name);\n\n if (entry.name === \"trigger\") {\n triggerDirectories.push(fullPath);\n }\n\n triggerDirectories.push(...(await getTriggerDirectories(fullPath)));\n }\n\n return triggerDirectories;\n}\n","import { spinner } from \"@clack/prompts\";\nimport chalk from \"chalk\";\nimport type { Result } from \"update-check\";\nimport checkForUpdate from \"update-check\";\nimport pkg from \"../../package.json\";\nimport { chalkGrey, chalkRun, chalkTask, chalkWorker, green, logo } from \"./cliOutput.js\";\nimport { getVersion } from \"./getVersion.js\";\nimport { logger } from \"./logger.js\";\n\nexport async function printInitialBanner(performUpdateCheck = true) {\n const packageVersion = getVersion();\n const text = `\\n${logo()} ${chalkGrey(`(${packageVersion})`)}\\n`;\n\n logger.info(text);\n\n let maybeNewVersion: string | undefined;\n if (performUpdateCheck) {\n const loadingSpinner = spinner();\n loadingSpinner.start(\"Checking for updates\");\n maybeNewVersion = await updateCheck();\n\n // Log a slightly more noticeable message if this is a major bump\n if (maybeNewVersion !== undefined) {\n loadingSpinner.stop(`Update available ${chalk.green(maybeNewVersion)}`);\n const currentMajor = parseInt(packageVersion.split(\".\")[0]!);\n const newMajor = parseInt(maybeNewVersion.split(\".\")[0]!);\n if (newMajor > currentMajor) {\n logger.warn(\n `Please update to the latest version of \\`trigger.dev\\` to prevent critical errors.\nRun \\`npm install --save-dev trigger.dev@${newMajor}\\` to update to the latest version.\nAfter installation, run Trigger.dev with \\`npx trigger.dev\\`.`\n );\n }\n } else {\n loadingSpinner.stop(\"On latest version\");\n }\n }\n}\n\nexport async function printStandloneInitialBanner(performUpdateCheck = true) {\n const packageVersion = getVersion();\n\n let text = `\\n${logo()} ${chalkGrey(\"(v3 Developer Preview)\")}`;\n\n if (performUpdateCheck) {\n const maybeNewVersion = await updateCheck();\n\n // Log a slightly more noticeable message if this is a major bump\n if (maybeNewVersion !== undefined) {\n text = `${text} (update available ${chalk.green(maybeNewVersion)})`;\n }\n }\n\n logger.log(text + \"\\n\" + chalkGrey(\"-\".repeat(54)));\n}\n\nexport function printDevBanner() {\n logger.log(\n `${chalkGrey(\"Key:\")} ${chalkWorker(\"Version\")} ${chalkGrey(\"|\")} ${chalkTask(\n \"Task\"\n )} ${chalkGrey(\"|\")} ${chalkRun(\"Run\")}`\n );\n logger.log(chalkGrey(\"-\".repeat(54)));\n}\n\nasync function doUpdateCheck(): Promise<string | undefined> {\n let update: Result | null = null;\n try {\n // default cache for update check is 1 day\n update = await checkForUpdate(pkg, {\n distTag: pkg.version.startsWith(\"0.0.0\") ? \"beta\" : \"latest\",\n });\n } catch (err) {\n // ignore error\n }\n return update?.latest;\n}\n\n//only do this once while the cli is running\nlet updateCheckPromise: Promise<string | undefined>;\nexport function updateCheck(): Promise<string | undefined> {\n return (updateCheckPromise ??= doUpdateCheck());\n}\n","import { type PackageJson } from \"type-fest\";\nimport path from \"path\";\nimport { PKG_ROOT } from \"../consts.js\";\nimport { readJSONFileSync } from \"./fileSystem.js\";\n\nexport function getVersion() {\n const packageJsonPath = path.join(PKG_ROOT, \"package.json\");\n\n const packageJsonContent = readJSONFileSync(packageJsonPath) as PackageJson;\n\n return packageJsonContent.version ?? \"1.0.0\";\n}\n","import { execa } from \"execa\";\nimport { join } from \"node:path\";\nimport { readJSONFile, writeJSONFile } from \"./fileSystem\";\nimport { logger } from \"./logger\";\n\nexport type InstallPackagesOptions = { cwd?: string };\n\nexport async function installPackages(\n packages: Record<string, string>,\n options?: InstallPackagesOptions\n) {\n const cwd = options?.cwd ?? process.cwd();\n\n logger.debug(\"Installing packages\", { packages });\n\n await setPackageJsonDeps(join(cwd, \"package.json\"), packages);\n\n await execa(\n \"npm\",\n [\"install\", \"--install-strategy\", \"nested\", \"--ignore-scripts\", \"--no-audit\", \"--no-fund\"],\n {\n cwd,\n stderr: \"pipe\",\n }\n );\n}\n\nasync function getPackageVersion(path: string) {\n try {\n const packageJsonPath = join(path, \"package.json\");\n const packageJson = await readJSONFile(packageJsonPath);\n\n return packageJson.version;\n } catch (error) {\n return undefined;\n }\n}\n\n// Expects path to be in the format:\n// - source-map-support/register.js\n// - @opentelemetry/api\n// - zod\n//\n// With the result being:\n// - source-map-support\n// - @opentelemetry/api\n// - zod\nexport function detectPackageNameFromImportPath(path: string): string {\n if (path.startsWith(\"@\")) {\n return path.split(\"/\").slice(0, 2).join(\"/\");\n } else {\n return path.split(\"/\")[0] as string;\n }\n}\n\n/**\n * Removes the workspace prefix from a version string.\n * @param version - The version string to strip the workspace prefix from.\n * @returns The version string without the workspace prefix.\n * @example\n * stripWorkspaceFromVersion(\"workspace:1.0.0\") // \"1.0.0\"\n * stripWorkspaceFromVersion(\"1.0.0\") // \"1.0.0\"\n */\nexport function stripWorkspaceFromVersion(version: string) {\n return version.replace(/^workspace:/, \"\");\n}\n\nexport function parsePackageName(packageSpecifier: string): { name: string; version?: string } {\n const parts = packageSpecifier.split(\"@\");\n\n if (parts.length === 1 && typeof parts[0] === \"string\") {\n return { name: parts[0] };\n }\n\n if (parts.length === 2 && typeof parts[0] === \"string\" && typeof parts[1] === \"string\") {\n return { name: parts[0], version: parts[1] };\n }\n\n return { name: packageSpecifier };\n}\n\nasync function setPackageJsonDeps(path: string, deps: Record<string, string>) {\n try {\n const existingPackageJson = await readJSONFile(path);\n\n const newPackageJson = {\n ...existingPackageJson,\n dependencies: {\n ...deps,\n },\n };\n\n await writeJSONFile(path, newPackageJson);\n } catch (error) {\n const defaultPackageJson = {\n name: \"temp\",\n version: \"1.0.0\",\n description: \"\",\n dependencies: deps,\n };\n\n await writeJSONFile(path, defaultPackageJson);\n }\n}\n","import { intro, log, outro, select, spinner } from \"@clack/prompts\";\nimport { recordSpanException } from \"@trigger.dev/core/v3\";\nimport { Command } from \"commander\";\nimport open from \"open\";\nimport pRetry, { AbortError } from \"p-retry\";\nimport { z } from \"zod\";\nimport { CliApiClient } from \"../apiClient.js\";\nimport {\n CommonCommandOptions,\n SkipLoggingError,\n commonOptions,\n handleTelemetry,\n tracer,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { chalkLink } from \"../utilities/cliOutput.js\";\nimport { readAuthConfigProfile, writeAuthConfigProfile } from \"../utilities/configFiles.js\";\nimport { getVersion } from \"../utilities/getVersion.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { LoginResult } from \"../utilities/session.js\";\nimport { whoAmI } from \"./whoami.js\";\nimport { logger } from \"../utilities/logger.js\";\n\nexport const LoginCommandOptions = CommonCommandOptions.extend({\n apiUrl: z.string(),\n});\n\nexport type LoginCommandOptions = z.infer<typeof LoginCommandOptions>;\n\nexport function configureLoginCommand(program: Command) {\n return commonOptions(\n program\n .command(\"login\")\n .description(\"Login with Trigger.dev so you can perform authenticated actions\")\n )\n .version(getVersion(), \"-v, --version\", \"Display the version number\")\n .action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await loginCommand(options);\n });\n });\n}\n\nexport async function loginCommand(options: unknown) {\n return await wrapCommandAction(\"loginCommand\", LoginCommandOptions, options, async (opts) => {\n return await _loginCommand(opts);\n });\n}\n\nasync function _loginCommand(options: LoginCommandOptions) {\n return login({ defaultApiUrl: options.apiUrl, embedded: false, profile: options.profile });\n}\n\nexport type LoginOptions = {\n defaultApiUrl?: string;\n embedded?: boolean;\n profile?: string;\n};\n\nexport async function login(options?: LoginOptions): Promise<LoginResult> {\n return await tracer.startActiveSpan(\"login\", async (span) => {\n try {\n const opts = { defaultApiUrl: \"https://api.trigger.dev\", embedded: false, ...options };\n\n span.setAttributes({\n \"cli.config.apiUrl\": opts.defaultApiUrl,\n \"cli.options.profile\": opts.profile,\n });\n\n if (!opts.embedded) {\n intro(\"Logging in to Trigger.dev\");\n }\n\n const accessTokenFromEnv = process.env.TRIGGER_ACCESS_TOKEN;\n\n if (accessTokenFromEnv) {\n const auth = {\n accessToken: accessTokenFromEnv,\n apiUrl: process.env.TRIGGER_API_URL ?? \"https://api.trigger.dev\",\n };\n const apiClient = new CliApiClient(auth.apiUrl, auth.accessToken);\n const userData = await apiClient.whoAmI();\n\n if (!userData.success) {\n throw new Error(userData.error);\n }\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: userData.data.userId,\n email: userData.data.email,\n dashboardUrl: userData.data.dashboardUrl,\n auth: {\n accessToken: auth.accessToken,\n apiUrl: auth.apiUrl,\n },\n };\n }\n\n const authConfig = readAuthConfigProfile(options?.profile);\n\n if (authConfig && authConfig.accessToken) {\n const whoAmIResult = await whoAmI(\n {\n profile: options?.profile ?? \"default\",\n skipTelemetry: !span.isRecording(),\n logLevel: logger.loggerLevel,\n },\n opts.embedded\n );\n\n if (!whoAmIResult.success) {\n throw new Error(whoAmIResult.error);\n } else {\n if (!opts.embedded) {\n const continueOption = await select({\n message: \"You are already logged in.\",\n options: [\n {\n value: false,\n label: \"Exit\",\n },\n {\n value: true,\n label: \"Login with a different account\",\n },\n ],\n initialValue: false,\n });\n\n if (continueOption !== true) {\n outro(\"Already logged in\");\n\n span.setAttributes({\n \"cli.userId\": whoAmIResult.data.userId,\n \"cli.email\": whoAmIResult.data.email,\n \"cli.config.apiUrl\": authConfig.apiUrl ?? opts.defaultApiUrl,\n });\n\n span.end();\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: whoAmIResult.data.userId,\n email: whoAmIResult.data.email,\n dashboardUrl: whoAmIResult.data.dashboardUrl,\n auth: {\n accessToken: authConfig.accessToken,\n apiUrl: authConfig.apiUrl ?? opts.defaultApiUrl,\n },\n };\n }\n } else {\n span.setAttributes({\n \"cli.userId\": whoAmIResult.data.userId,\n \"cli.email\": whoAmIResult.data.email,\n \"cli.config.apiUrl\": authConfig.apiUrl ?? opts.defaultApiUrl,\n });\n\n span.end();\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: whoAmIResult.data.userId,\n email: whoAmIResult.data.email,\n dashboardUrl: whoAmIResult.data.dashboardUrl,\n auth: {\n accessToken: authConfig.accessToken,\n apiUrl: authConfig.apiUrl ?? opts.defaultApiUrl,\n },\n };\n }\n }\n }\n\n if (opts.embedded) {\n log.step(\"You must login to continue.\");\n }\n\n const apiClient = new CliApiClient(authConfig?.apiUrl ?? opts.defaultApiUrl);\n\n //generate authorization code\n const authorizationCodeResult = await createAuthorizationCode(apiClient);\n\n //Link the user to the authorization code\n log.step(\n `Please visit the following URL to login:\\n${chalkLink(authorizationCodeResult.url)}`\n );\n\n await open(authorizationCodeResult.url);\n\n //poll for personal access token (we need to poll for it)\n const getPersonalAccessTokenSpinner = spinner();\n getPersonalAccessTokenSpinner.start(\"Waiting for you to login\");\n try {\n const indexResult = await pRetry(\n () => getPersonalAccessToken(apiClient, authorizationCodeResult.authorizationCode),\n {\n //this means we're polling, same distance between each attempt\n factor: 1,\n retries: 60,\n minTimeout: 1000,\n }\n );\n\n getPersonalAccessTokenSpinner.stop(`Logged in with token ${indexResult.obfuscatedToken}`);\n\n writeAuthConfigProfile(\n { accessToken: indexResult.token, apiUrl: opts.defaultApiUrl },\n options?.profile\n );\n\n const whoAmIResult = await whoAmI(\n {\n profile: options?.profile ?? \"default\",\n skipTelemetry: !span.isRecording(),\n logLevel: logger.loggerLevel,\n },\n opts.embedded\n );\n\n if (!whoAmIResult.success) {\n throw new Error(whoAmIResult.error);\n }\n\n if (opts.embedded) {\n log.step(\"Logged in successfully\");\n } else {\n outro(\"Logged in successfully\");\n }\n\n span.end();\n\n return {\n ok: true as const,\n profile: options?.profile ?? \"default\",\n userId: whoAmIResult.data.userId,\n email: whoAmIResult.data.email,\n dashboardUrl: whoAmIResult.data.dashboardUrl,\n auth: {\n accessToken: indexResult.token,\n apiUrl: authConfig?.apiUrl ?? opts.defaultApiUrl,\n },\n };\n } catch (e) {\n getPersonalAccessTokenSpinner.stop(`Failed to get access token`);\n\n if (e instanceof AbortError) {\n log.error(e.message);\n }\n\n recordSpanException(span, e);\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : String(e),\n };\n }\n } catch (e) {\n recordSpanException(span, e);\n span.end();\n\n if (options?.embedded) {\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : String(e),\n };\n }\n\n throw e;\n }\n });\n}\n\nasync function getPersonalAccessToken(apiClient: CliApiClient, authorizationCode: string) {\n return await tracer.startActiveSpan(\"getPersonalAccessToken\", async (span) => {\n try {\n const token = await apiClient.getPersonalAccessToken(authorizationCode);\n\n if (!token.success) {\n throw new AbortError(token.error);\n }\n\n if (!token.data.token) {\n throw new Error(\"No token found yet\");\n }\n\n span.end();\n\n return {\n token: token.data.token.token,\n obfuscatedToken: token.data.token.obfuscatedToken,\n };\n } catch (e) {\n if (e instanceof AbortError) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function createAuthorizationCode(apiClient: CliApiClient) {\n return await tracer.startActiveSpan(\"createAuthorizationCode\", async (span) => {\n try {\n //generate authorization code\n const createAuthCodeSpinner = spinner();\n createAuthCodeSpinner.start(\"Creating authorition code\");\n const authorizationCodeResult = await apiClient.createAuthorizationCode();\n\n if (!authorizationCodeResult.success) {\n createAuthCodeSpinner.stop(\n `Failed to create authorization code\\n${authorizationCodeResult.error}`\n );\n\n throw new SkipLoggingError(\n `Failed to create authorization code\\n${authorizationCodeResult.error}`\n );\n }\n\n createAuthCodeSpinner.stop(\"Created authorization code\");\n\n span.end();\n\n return authorizationCodeResult.data;\n } catch (e) {\n recordSpanException(span, e);\n\n span.end();\n\n throw e;\n }\n });\n}\n","import process from 'node:process';\nimport {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\nimport childProcess from 'node:child_process';\nimport fs, {constants as fsConstants} from 'node:fs/promises';\nimport isWsl from 'is-wsl';\nimport defineLazyProperty from 'define-lazy-prop';\nimport defaultBrowser from 'default-browser';\nimport isInsideContainer from 'is-inside-container';\n\n// Path to included `xdg-open`.\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\nconst localXdgOpenPath = path.join(__dirname, 'xdg-open');\n\nconst {platform, arch} = process;\n\n/**\nGet the mount point for fixed drives in WSL.\n\n@inner\n@returns {string} The mount point.\n*/\nconst getWslDrivesMountPoint = (() => {\n\t// Default value for \"root\" param\n\t// according to https://docs.microsoft.com/en-us/windows/wsl/wsl-config\n\tconst defaultMountPoint = '/mnt/';\n\n\tlet mountPoint;\n\n\treturn async function () {\n\t\tif (mountPoint) {\n\t\t\t// Return memoized mount point value\n\t\t\treturn mountPoint;\n\t\t}\n\n\t\tconst configFilePath = '/etc/wsl.conf';\n\n\t\tlet isConfigFileExists = false;\n\t\ttry {\n\t\t\tawait fs.access(configFilePath, fsConstants.F_OK);\n\t\t\tisConfigFileExists = true;\n\t\t} catch {}\n\n\t\tif (!isConfigFileExists) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tconst configContent = await fs.readFile(configFilePath, {encoding: 'utf8'});\n\t\tconst configMountPoint = /(?<!#.*)root\\s*=\\s*(?<mountPoint>.*)/g.exec(configContent);\n\n\t\tif (!configMountPoint) {\n\t\t\treturn defaultMountPoint;\n\t\t}\n\n\t\tmountPoint = configMountPoint.groups.mountPoint.trim();\n\t\tmountPoint = mountPoint.endsWith('/') ? mountPoint : `${mountPoint}/`;\n\n\t\treturn mountPoint;\n\t};\n})();\n\nconst pTryEach = async (array, mapper) => {\n\tlet latestError;\n\n\tfor (const item of array) {\n\t\ttry {\n\t\t\treturn await mapper(item); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tlatestError = error;\n\t\t}\n\t}\n\n\tthrow latestError;\n};\n\nconst baseOpen = async options => {\n\toptions = {\n\t\twait: false,\n\t\tbackground: false,\n\t\tnewInstance: false,\n\t\tallowNonzeroExitCode: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(options.app)) {\n\t\treturn pTryEach(options.app, singleApp => baseOpen({\n\t\t\t...options,\n\t\t\tapp: singleApp,\n\t\t}));\n\t}\n\n\tlet {name: app, arguments: appArguments = []} = options.app ?? {};\n\tappArguments = [...appArguments];\n\n\tif (Array.isArray(app)) {\n\t\treturn pTryEach(app, appName => baseOpen({\n\t\t\t...options,\n\t\t\tapp: {\n\t\t\t\tname: appName,\n\t\t\t\targuments: appArguments,\n\t\t\t},\n\t\t}));\n\t}\n\n\tif (app === 'browser' || app === 'browserPrivate') {\n\t\t// IDs from default-browser for macOS and windows are the same\n\t\tconst ids = {\n\t\t\t'com.google.chrome': 'chrome',\n\t\t\t'google-chrome.desktop': 'chrome',\n\t\t\t'org.mozilla.firefox': 'firefox',\n\t\t\t'firefox.desktop': 'firefox',\n\t\t\t'com.microsoft.msedge': 'edge',\n\t\t\t'com.microsoft.edge': 'edge',\n\t\t\t'microsoft-edge.desktop': 'edge',\n\t\t};\n\n\t\t// Incognito flags for each browser in `apps`.\n\t\tconst flags = {\n\t\t\tchrome: '--incognito',\n\t\t\tfirefox: '--private-window',\n\t\t\tedge: '--inPrivate',\n\t\t};\n\n\t\tconst browser = await defaultBrowser();\n\t\tif (browser.id in ids) {\n\t\t\tconst browserName = ids[browser.id];\n\n\t\t\tif (app === 'browserPrivate') {\n\t\t\t\tappArguments.push(flags[browserName]);\n\t\t\t}\n\n\t\t\treturn baseOpen({\n\t\t\t\t...options,\n\t\t\t\tapp: {\n\t\t\t\t\tname: apps[browserName],\n\t\t\t\t\targuments: appArguments,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthrow new Error(`${browser.name} is not supported as a default browser`);\n\t}\n\n\tlet command;\n\tconst cliArguments = [];\n\tconst childProcessOptions = {};\n\n\tif (platform === 'darwin') {\n\t\tcommand = 'open';\n\n\t\tif (options.wait) {\n\t\t\tcliArguments.push('--wait-apps');\n\t\t}\n\n\t\tif (options.background) {\n\t\t\tcliArguments.push('--background');\n\t\t}\n\n\t\tif (options.newInstance) {\n\t\t\tcliArguments.push('--new');\n\t\t}\n\n\t\tif (app) {\n\t\t\tcliArguments.push('-a', app);\n\t\t}\n\t} else if (platform === 'win32' || (isWsl && !isInsideContainer() && !app)) {\n\t\tconst mountPoint = await getWslDrivesMountPoint();\n\n\t\tcommand = isWsl\n\t\t\t? `${mountPoint}c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe`\n\t\t\t: `${process.env.SYSTEMROOT || process.env.windir || 'C:\\\\Windows'}\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\powershell`;\n\n\t\tcliArguments.push(\n\t\t\t'-NoProfile',\n\t\t\t'-NonInteractive',\n\t\t\t'-ExecutionPolicy',\n\t\t\t'Bypass',\n\t\t\t'-EncodedCommand',\n\t\t);\n\n\t\tif (!isWsl) {\n\t\t\tchildProcessOptions.windowsVerbatimArguments = true;\n\t\t}\n\n\t\tconst encodedArguments = ['Start'];\n\n\t\tif (options.wait) {\n\t\t\tencodedArguments.push('-Wait');\n\t\t}\n\n\t\tif (app) {\n\t\t\t// Double quote with double quotes to ensure the inner quotes are passed through.\n\t\t\t// Inner quotes are delimited for PowerShell interpretation with backticks.\n\t\t\tencodedArguments.push(`\"\\`\"${app}\\`\"\"`);\n\t\t\tif (options.target) {\n\t\t\t\tappArguments.push(options.target);\n\t\t\t}\n\t\t} else if (options.target) {\n\t\t\tencodedArguments.push(`\"${options.target}\"`);\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tappArguments = appArguments.map(argument => `\"\\`\"${argument}\\`\"\"`);\n\t\t\tencodedArguments.push('-ArgumentList', appArguments.join(','));\n\t\t}\n\n\t\t// Using Base64-encoded command, accepted by PowerShell, to allow special characters.\n\t\toptions.target = Buffer.from(encodedArguments.join(' '), 'utf16le').toString('base64');\n\t} else {\n\t\tif (app) {\n\t\t\tcommand = app;\n\t\t} else {\n\t\t\t// When bundled by Webpack, there's no actual package file path and no local `xdg-open`.\n\t\t\tconst isBundled = !__dirname || __dirname === '/';\n\n\t\t\t// Check if local `xdg-open` exists and is executable.\n\t\t\tlet exeLocalXdgOpen = false;\n\t\t\ttry {\n\t\t\t\tawait fs.access(localXdgOpenPath, fsConstants.X_OK);\n\t\t\t\texeLocalXdgOpen = true;\n\t\t\t} catch {}\n\n\t\t\tconst useSystemXdgOpen = process.versions.electron\n\t\t\t\t?? (platform === 'android' || isBundled || !exeLocalXdgOpen);\n\t\t\tcommand = useSystemXdgOpen ? 'xdg-open' : localXdgOpenPath;\n\t\t}\n\n\t\tif (appArguments.length > 0) {\n\t\t\tcliArguments.push(...appArguments);\n\t\t}\n\n\t\tif (!options.wait) {\n\t\t\t// `xdg-open` will block the process unless stdio is ignored\n\t\t\t// and it's detached from the parent even if it's unref'd.\n\t\t\tchildProcessOptions.stdio = 'ignore';\n\t\t\tchildProcessOptions.detached = true;\n\t\t}\n\t}\n\n\tif (platform === 'darwin' && appArguments.length > 0) {\n\t\tcliArguments.push('--args', ...appArguments);\n\t}\n\n\t// This has to come after `--args`.\n\tif (options.target) {\n\t\tcliArguments.push(options.target);\n\t}\n\n\tconst subprocess = childProcess.spawn(command, cliArguments, childProcessOptions);\n\n\tif (options.wait) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsubprocess.once('error', reject);\n\n\t\t\tsubprocess.once('close', exitCode => {\n\t\t\t\tif (!options.allowNonzeroExitCode && exitCode > 0) {\n\t\t\t\t\treject(new Error(`Exited with code ${exitCode}`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(subprocess);\n\t\t\t});\n\t\t});\n\t}\n\n\tsubprocess.unref();\n\n\treturn subprocess;\n};\n\nconst open = (target, options) => {\n\tif (typeof target !== 'string') {\n\t\tthrow new TypeError('Expected a `target`');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\ttarget,\n\t});\n};\n\nexport const openApp = (name, options) => {\n\tif (typeof name !== 'string') {\n\t\tthrow new TypeError('Expected a `name`');\n\t}\n\n\tconst {arguments: appArguments = []} = options ?? {};\n\tif (appArguments !== undefined && appArguments !== null && !Array.isArray(appArguments)) {\n\t\tthrow new TypeError('Expected `appArguments` as Array type');\n\t}\n\n\treturn baseOpen({\n\t\t...options,\n\t\tapp: {\n\t\t\tname,\n\t\t\targuments: appArguments,\n\t\t},\n\t});\n};\n\nfunction detectArchBinary(binary) {\n\tif (typeof binary === 'string' || Array.isArray(binary)) {\n\t\treturn binary;\n\t}\n\n\tconst {[arch]: archBinary} = binary;\n\n\tif (!archBinary) {\n\t\tthrow new Error(`${arch} is not supported`);\n\t}\n\n\treturn archBinary;\n}\n\nfunction detectPlatformBinary({[platform]: platformBinary}, {wsl}) {\n\tif (wsl && isWsl) {\n\t\treturn detectArchBinary(wsl);\n\t}\n\n\tif (!platformBinary) {\n\t\tthrow new Error(`${platform} is not supported`);\n\t}\n\n\treturn detectArchBinary(platformBinary);\n}\n\nexport const apps = {};\n\ndefineLazyProperty(apps, 'chrome', () => detectPlatformBinary({\n\tdarwin: 'google chrome',\n\twin32: 'chrome',\n\tlinux: ['google-chrome', 'google-chrome-stable', 'chromium'],\n}, {\n\twsl: {\n\t\tia32: '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe',\n\t\tx64: ['/mnt/c/Program Files/Google/Chrome/Application/chrome.exe', '/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe'],\n\t},\n}));\n\ndefineLazyProperty(apps, 'firefox', () => detectPlatformBinary({\n\tdarwin: 'firefox',\n\twin32: 'C:\\\\Program Files\\\\Mozilla Firefox\\\\firefox.exe',\n\tlinux: 'firefox',\n}, {\n\twsl: '/mnt/c/Program Files/Mozilla Firefox/firefox.exe',\n}));\n\ndefineLazyProperty(apps, 'edge', () => detectPlatformBinary({\n\tdarwin: 'microsoft edge',\n\twin32: 'msedge',\n\tlinux: ['microsoft-edge', 'microsoft-edge-dev'],\n}, {\n\twsl: '/mnt/c/Program Files (x86)/Microsoft/Edge/Application/msedge.exe',\n}));\n\ndefineLazyProperty(apps, 'browser', () => 'browser');\n\ndefineLazyProperty(apps, 'browserPrivate', () => 'browserPrivate');\n\nexport default open;\n","import process from 'node:process';\nimport os from 'node:os';\nimport fs from 'node:fs';\nimport isInsideContainer from 'is-inside-container';\n\nconst isWsl = () => {\n\tif (process.platform !== 'linux') {\n\t\treturn false;\n\t}\n\n\tif (os.release().toLowerCase().includes('microsoft')) {\n\t\tif (isInsideContainer()) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\ttry {\n\t\treturn fs.readFileSync('/proc/version', 'utf8').toLowerCase().includes('microsoft')\n\t\t\t? !isInsideContainer() : false;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default process.env.__IS_WSL_TEST__ ? isWsl : isWsl();\n","import fs from 'node:fs';\nimport isDocker from 'is-docker';\n\nlet cachedResult;\n\n// Podman detection\nconst hasContainerEnv = () => {\n\ttry {\n\t\tfs.statSync('/run/.containerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nexport default function isInsideContainer() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (cachedResult === undefined) {\n\t\tcachedResult = hasContainerEnv() || isDocker();\n\t}\n\n\treturn cachedResult;\n}\n","import fs from 'node:fs';\n\nlet isDockerCached;\n\nfunction hasDockerEnv() {\n\ttry {\n\t\tfs.statSync('/.dockerenv');\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasDockerCGroup() {\n\ttry {\n\t\treturn fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker');\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport default function isDocker() {\n\t// TODO: Use `??=` when targeting Node.js 16.\n\tif (isDockerCached === undefined) {\n\t\tisDockerCached = hasDockerEnv() || hasDockerCGroup();\n\t}\n\n\treturn isDockerCached;\n}\n","export default function defineLazyProperty(object, propertyName, valueGetter) {\n\tconst define = value => Object.defineProperty(object, propertyName, {value, enumerable: true, writable: true});\n\n\tObject.defineProperty(object, propertyName, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget() {\n\t\t\tconst result = valueGetter();\n\t\t\tdefine(result);\n\t\t\treturn result;\n\t\t},\n\t\tset(value) {\n\t\t\tdefine(value);\n\t\t}\n\t});\n\n\treturn object;\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?<id>[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\treturn match?.groups.id ?? 'com.apple.Safari';\n}\n","import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments]);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n","import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n","import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tMSEdgeDHTML: {name: 'Edge', id: 'com.microsoft.edge'}, // On macOS, it's \"com.microsoft.edgemac\"\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // Newer Edge/Win10 releases\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n};\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?<id>\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\tconst browser = windowsBrowserProgIds[id];\n\tif (!browser) {\n\t\tthrow new UnknownBrowserError(`Unknown browser ID: ${id}`);\n\t}\n\n\treturn browser;\n}\n","import retry from 'retry';\nimport isNetworkError from 'is-network-error';\n\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\n\t\tif (message instanceof Error) {\n\t\t\tthis.originalError = message;\n\t\t\t({message} = message);\n\t\t} else {\n\t\t\tthis.originalError = new Error(message);\n\t\t\tthis.originalError.stack = this.stack;\n\t\t}\n\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\nconst decorateErrorWithCounts = (error, attemptNumber, options) => {\n\t// Minus 1 from attemptNumber because the first attempt does not count as a retry\n\tconst retriesLeft = options.retries - (attemptNumber - 1);\n\n\terror.attemptNumber = attemptNumber;\n\terror.retriesLeft = retriesLeft;\n\treturn error;\n};\n\nexport default async function pRetry(input, options) {\n\treturn new Promise((resolve, reject) => {\n\t\toptions = {\n\t\t\tonFailedAttempt() {},\n\t\t\tretries: 10,\n\t\t\t...options,\n\t\t};\n\n\t\tconst operation = retry.operation(options);\n\n\t\tconst abortHandler = () => {\n\t\t\toperation.stop();\n\t\t\treject(options.signal?.reason);\n\t\t};\n\n\t\tif (options.signal && !options.signal.aborted) {\n\t\t\toptions.signal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\tconst cleanUp = () => {\n\t\t\toptions.signal?.removeEventListener('abort', abortHandler);\n\t\t\toperation.stop();\n\t\t};\n\n\t\toperation.attempt(async attemptNumber => {\n\t\t\ttry {\n\t\t\t\tconst result = await input(attemptNumber);\n\t\t\t\tcleanUp();\n\t\t\t\tresolve(result);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t\t\tthrow new TypeError(`Non-error was thrown: \"${error}\". You should only throw errors.`);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof AbortError) {\n\t\t\t\t\t\tthrow error.originalError;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (error instanceof TypeError && !isNetworkError(error)) {\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\n\t\t\t\t\tawait options.onFailedAttempt(decorateErrorWithCounts(error, attemptNumber, options));\n\n\t\t\t\t\tif (!operation.retry(error)) {\n\t\t\t\t\t\tthrow operation.mainError();\n\t\t\t\t\t}\n\t\t\t\t} catch (finalError) {\n\t\t\t\t\tdecorateErrorWithCounts(finalError, attemptNumber, options);\n\t\t\t\t\tcleanUp();\n\t\t\t\t\treject(finalError);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n","const objectToString = Object.prototype.toString;\n\nconst isError = value => objectToString.call(value) === '[object Error]';\n\nconst errorMessages = new Set([\n\t'Failed to fetch', // Chrome\n\t'NetworkError when attempting to fetch resource.', // Firefox\n\t'The Internet connection appears to be offline.', // Safari 16\n\t'Load failed', // Safari 17+\n\t'Network request failed', // `cross-fetch`\n\t'fetch failed', // Undici (Node.js)\n]);\n\nexport default function isNetworkError(error) {\n\tconst isValid = error\n\t\t&& isError(error)\n\t\t&& error.name === 'TypeError'\n\t\t&& typeof error.message === 'string';\n\n\tif (!isValid) {\n\t\treturn false;\n\t}\n\n\t// We do an extra check for Safari 17+ as it has a very generic error message.\n\t// Network errors in Safari have no stack.\n\tif (error.message === 'Load failed') {\n\t\treturn error.stack === undefined;\n\t}\n\n\treturn errorMessages.has(error.message);\n}\n","import { intro, note, spinner } from \"@clack/prompts\";\nimport { chalkLink } from \"../utilities/cliOutput.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport { isLoggedIn } from \"../utilities/session.js\";\nimport { Command } from \"commander\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport {\n CommonCommandOptions,\n commonOptions,\n handleTelemetry,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { z } from \"zod\";\nimport { CliApiClient } from \"../apiClient.js\";\n\ntype WhoAmIResult =\n | {\n success: true;\n data: {\n userId: string;\n email: string;\n dashboardUrl: string;\n };\n }\n | {\n success: false;\n error: string;\n };\n\nconst WhoamiCommandOptions = CommonCommandOptions;\n\ntype WhoamiCommandOptions = z.infer<typeof WhoamiCommandOptions>;\n\nexport function configureWhoamiCommand(program: Command) {\n return commonOptions(\n program.command(\"whoami\").description(\"display the current logged in user and project details\")\n ).action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await whoAmICommand(options);\n });\n });\n}\n\nexport async function whoAmICommand(options: unknown) {\n return await wrapCommandAction(\"whoamiCommand\", WhoamiCommandOptions, options, async (opts) => {\n return await whoAmI(opts);\n });\n}\n\nexport async function whoAmI(\n options?: WhoamiCommandOptions,\n embedded: boolean = false\n): Promise<WhoAmIResult> {\n if (!embedded) {\n intro(`Displaying your account details [${options?.profile ?? \"default\"}]`);\n }\n\n const loadingSpinner = spinner();\n loadingSpinner.start(\"Checking your account details\");\n\n const authentication = await isLoggedIn(options?.profile);\n\n if (!authentication.ok) {\n if (authentication.error === \"fetch failed\") {\n loadingSpinner.stop(\"Fetch failed. Platform down?\");\n } else {\n loadingSpinner.stop(\n `You must login first. Use \\`trigger.dev login --profile ${\n options?.profile ?? \"default\"\n }\\` to login.`\n );\n }\n\n return {\n success: false,\n error: authentication.error,\n };\n }\n\n const apiClient = new CliApiClient(authentication.auth.apiUrl, authentication.auth.accessToken);\n const userData = await apiClient.whoAmI();\n\n if (!userData.success) {\n loadingSpinner.stop(\"Error getting your account details\");\n logger.error(userData.error);\n return {\n success: false,\n error: userData.error,\n };\n }\n\n if (!embedded) {\n loadingSpinner.stop(\"Retrieved your account details\");\n note(\n `User ID: ${userData.data.userId}\nEmail: ${userData.data.email}\nURL: ${chalkLink(authentication.auth.apiUrl)}\n`,\n `Account details [${authentication.profile}]`\n );\n } else {\n loadingSpinner.stop(`Retrieved your account details for ${userData.data.email}`);\n }\n\n return userData;\n}\n","import { recordSpanException } from \"@trigger.dev/core/v3\";\nimport { CliApiClient } from \"../apiClient.js\";\nimport { readAuthConfigProfile } from \"./configFiles.js\";\nimport { getTracer } from \"../telemetry/tracing.js\";\n\nconst tracer = getTracer();\n\nexport type LoginResult =\n | {\n ok: true;\n profile: string,\n userId: string;\n email: string;\n dashboardUrl: string;\n auth: {\n apiUrl: string;\n accessToken: string;\n };\n }\n | {\n ok: false;\n error: string;\n auth?: {\n apiUrl: string;\n accessToken: string;\n };\n };\n\nexport async function isLoggedIn(profile: string = \"default\"): Promise<LoginResult> {\n return await tracer.startActiveSpan(\"isLoggedIn\", async (span) => {\n try {\n const config = readAuthConfigProfile(profile);\n\n if (!config?.accessToken || !config?.apiUrl) {\n span.recordException(new Error(\"You must login first\"));\n span.end();\n return { ok: false as const, error: \"You must login first\" };\n }\n\n const apiClient = new CliApiClient(config.apiUrl, config.accessToken);\n const userData = await apiClient.whoAmI();\n\n if (!userData.success) {\n recordSpanException(span, userData.error);\n span.end();\n\n return {\n ok: false as const,\n error: userData.error,\n auth: {\n apiUrl: config.apiUrl,\n accessToken: config.accessToken,\n },\n };\n }\n\n span.setAttributes({\n \"login.userId\": userData.data.userId,\n \"login.email\": userData.data.email,\n \"login.dashboardUrl\": userData.data.dashboardUrl,\n \"login.profile\": profile,\n });\n\n span.end();\n\n return {\n ok: true as const,\n profile,\n userId: userData.data.userId,\n email: userData.data.email,\n dashboardUrl: userData.data.dashboardUrl,\n auth: {\n apiUrl: config.apiUrl,\n accessToken: config.accessToken,\n },\n };\n } catch (e) {\n recordSpanException(span, e);\n span.end();\n\n return {\n ok: false as const,\n error: e instanceof Error ? e.message : \"Unknown error\",\n };\n }\n });\n}\n","import type * as esbuild from \"esbuild\";\nimport type { Plugin } from \"esbuild\";\nimport { readFileSync } from \"node:fs\";\nimport { extname, isAbsolute } from \"node:path\";\nimport tsConfigPaths from \"tsconfig-paths\";\nimport { logger } from \"./logger\";\n\nexport function bundleTriggerDevCore(buildIdentifier: string, tsconfigPath?: string): Plugin {\n return {\n name: \"trigger-bundle-core\",\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.path !== \"@trigger.dev/core/v3\") {\n return undefined;\n }\n\n const triggerSdkPath = require.resolve(\"@trigger.dev/sdk/v3\", { paths: [process.cwd()] });\n\n logger.debug(`[${buildIdentifier}][trigger-bundle-core] Resolved @trigger.dev/sdk/v3`, {\n ...args,\n triggerSdkPath,\n });\n\n const resolvedPath = require.resolve(\"@trigger.dev/core/v3\", {\n paths: [triggerSdkPath],\n });\n\n logger.debug(\n `[${buildIdentifier}][trigger-bundle-core] Externalizing @trigger.dev/core/v3`,\n {\n ...args,\n triggerSdkPath,\n resolvedPath,\n }\n );\n\n return {\n path: resolvedPath,\n external: false,\n };\n });\n },\n };\n}\n\nexport function workerSetupImportConfigPlugin(configPath?: string): Plugin {\n return {\n name: \"trigger-worker-setup\",\n setup(build) {\n if (!configPath) {\n return;\n }\n\n build.onLoad({ filter: /worker-setup\\.js$/ }, async (args) => {\n let workerSetupContents = readFileSync(args.path, \"utf-8\");\n\n workerSetupContents = workerSetupContents.replace(\n \"__SETUP_IMPORTED_PROJECT_CONFIG__\",\n `import * as setupImportedConfigExports from \"${configPath}\"; const setupImportedConfig = setupImportedConfigExports.config;`\n );\n\n logger.debug(\"Loading worker setup\", {\n args,\n workerSetupContents,\n configPath,\n });\n\n return {\n contents: workerSetupContents,\n loader: \"js\",\n };\n });\n },\n };\n}\n\nexport function bundleDependenciesPlugin(\n buildIdentifier: string,\n dependenciesToBundle?: Array<string | RegExp>,\n tsconfigPath?: string\n): Plugin {\n const matchPath = tsconfigPath ? createMatchPath(tsconfigPath) : undefined;\n\n function resolvePath(id: string) {\n if (!matchPath) {\n return id;\n }\n return matchPath(id, undefined, undefined, [\".ts\", \".tsx\", \".js\", \".jsx\"]) || id;\n }\n\n return {\n name: \"trigger-bundle-dependencies\",\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n const resolvedPath = resolvePath(args.path);\n\n if (!isBareModuleId(resolvedPath)) {\n return undefined; // let esbuild handle it\n }\n\n // Skip assets that are treated as files (.css, .svg, .png, etc.).\n // Otherwise, esbuild would emit code that would attempt to require()\n // or import these files --- which aren't JavaScript!\n let loader;\n try {\n loader = getLoaderForFile(args.path);\n } catch (e) {\n if (!(e instanceof Error && e.message.startsWith(\"Cannot get loader for file\"))) {\n throw e;\n }\n }\n if (loader === \"file\") {\n return undefined;\n }\n\n for (let pattern of dependenciesToBundle ?? []) {\n if (typeof pattern === \"string\" ? args.path === pattern : pattern.test(args.path)) {\n return undefined; // let esbuild bundle it\n }\n }\n\n logger.ignore(`[${buildIdentifier}] Externalizing ${args.path}`, {\n ...args,\n });\n\n // Everything else should be external\n return {\n path: args.path,\n external: true,\n };\n });\n },\n };\n}\n\nfunction isBareModuleId(id: string): boolean {\n return !id.startsWith(\"node:\") && !id.startsWith(\".\") && !isAbsolute(id);\n}\n\nexport function createMatchPath(tsconfigPath: string | undefined) {\n // There is no tsconfig to match paths against.\n if (!tsconfigPath) {\n return undefined;\n }\n\n // When passing a absolute path, loadConfig assumes that the path contains\n // a tsconfig file.\n // Ref.: https://github.com/dividab/tsconfig-paths/blob/v4.0.0/src/__tests__/config-loader.test.ts#L74\n let configLoaderResult = tsConfigPaths.loadConfig(tsconfigPath);\n\n if (configLoaderResult.resultType === \"failed\") {\n if (configLoaderResult.message === \"Missing baseUrl in compilerOptions\") {\n throw new Error(\n `🚨 Oops! No baseUrl found, please set compilerOptions.baseUrl in your tsconfig or jsconfig`\n );\n }\n return undefined;\n }\n\n return tsConfigPaths.createMatchPath(\n configLoaderResult.absoluteBaseUrl,\n configLoaderResult.paths,\n configLoaderResult.mainFields,\n configLoaderResult.addMatchAll\n );\n}\n\nconst loaders: { [ext: string]: esbuild.Loader } = {\n \".aac\": \"file\",\n \".avif\": \"file\",\n \".css\": \"file\",\n \".csv\": \"file\",\n \".eot\": \"file\",\n \".fbx\": \"file\",\n \".flac\": \"file\",\n \".gif\": \"file\",\n \".glb\": \"file\",\n \".gltf\": \"file\",\n \".gql\": \"text\",\n \".graphql\": \"text\",\n \".hdr\": \"file\",\n \".ico\": \"file\",\n \".jpeg\": \"file\",\n \".jpg\": \"file\",\n \".js\": \"jsx\",\n \".jsx\": \"jsx\",\n \".json\": \"json\",\n // We preprocess md and mdx files using @mdx-js/mdx and send through\n // the JSX for esbuild to handle\n \".md\": \"jsx\",\n \".mdx\": \"jsx\",\n \".mov\": \"file\",\n \".mp3\": \"file\",\n \".mp4\": \"file\",\n \".node\": \"copy\",\n \".ogg\": \"file\",\n \".otf\": \"file\",\n \".png\": \"file\",\n \".psd\": \"file\",\n \".sql\": \"text\",\n \".svg\": \"file\",\n \".ts\": \"ts\",\n \".tsx\": \"tsx\",\n \".ttf\": \"file\",\n \".wasm\": \"file\",\n \".wav\": \"file\",\n \".webm\": \"file\",\n \".webmanifest\": \"file\",\n \".webp\": \"file\",\n \".woff\": \"file\",\n \".woff2\": \"file\",\n \".zip\": \"file\",\n};\n\nexport function getLoaderForFile(file: string): esbuild.Loader {\n const ext = extname(file);\n const loader = loaders[ext];\n\n if (loader) return loader;\n\n throw new Error(`Cannot get loader for file ${file}`);\n}\n","import chalk from \"chalk\";\nimport { relative } from \"node:path\";\nimport { chalkError, chalkPurple, chalkGrey, chalkGreen, chalkWarning } from \"./cliOutput\";\nimport { logger } from \"./logger\";\nimport { ReadConfigResult } from \"./configFiles\";\nimport { TaskMetadataParseError } from \"../workers/common/errors\";\nimport { z } from \"zod\";\nimport { groupTaskMetadataIssuesByTask } from \"@trigger.dev/core/v3\";\n\nexport type ESMRequireError = {\n type: \"esm-require-error\";\n moduleName: string;\n};\n\nexport type BuildError = ESMRequireError | string;\n\nfunction errorIsErrorLike(error: unknown): error is Error {\n return (\n error instanceof Error || (typeof error === \"object\" && error !== null && \"message\" in error)\n );\n}\n\nexport function parseBuildErrorStack(error: unknown): BuildError {\n if (typeof error === \"string\") {\n return error;\n }\n\n if (errorIsErrorLike(error)) {\n if (typeof error.stack === \"string\") {\n const isErrRequireEsm = error.stack.includes(\"ERR_REQUIRE_ESM\");\n\n let moduleName = null;\n\n if (isErrRequireEsm) {\n // Regular expression to match the module path\n const moduleRegex = /node_modules\\/(@[^\\/]+\\/[^\\/]+|[^\\/]+)\\/[^\\/]+\\s/;\n const match = moduleRegex.exec(error.stack);\n if (match) {\n moduleName = match[1] as string; // Capture the module name\n\n return {\n type: \"esm-require-error\",\n moduleName,\n };\n }\n }\n } else {\n return error.message;\n }\n }\n\n return \"Unknown error\";\n}\n\nexport function logESMRequireError(parsedError: ESMRequireError, resolvedConfig: ReadConfigResult) {\n logger.log(\n `\\n${chalkError(\"X Error:\")} The ${chalkPurple(\n parsedError.moduleName\n )} module is being required even though it's ESM only, and builds only support CommonJS. There are two ${chalk.underline(\n \"possible\"\n )} ways to fix this:`\n );\n logger.log(\n `\\n${chalkGrey(\"○\")} Dynamically import the module in your code: ${chalkGrey(\n `const myModule = await import(\"${parsedError.moduleName}\");`\n )}`\n );\n\n if (resolvedConfig.status === \"file\") {\n const relativePath = relative(resolvedConfig.config.projectDir, resolvedConfig.path).replace(\n /\\\\/g,\n \"/\"\n );\n\n logger.log(\n `${chalkGrey(\"○\")} ${chalk.underline(\"Or\")} add ${chalkPurple(\n parsedError.moduleName\n )} to the ${chalkGreen(\"dependenciesToBundle\")} array in your config file ${chalkGrey(\n `(${relativePath})`\n )}. This will bundle the module with your code.\\n`\n );\n } else {\n logger.log(\n `${chalkGrey(\"○\")} ${chalk.underline(\"Or\")} add ${chalkPurple(\n parsedError.moduleName\n )} to the ${chalkGreen(\"dependenciesToBundle\")} array in your config file ${chalkGrey(\n \"(you'll need to create one)\"\n )}. This will bundle the module with your code.\\n`\n );\n }\n}\n\nexport type PackageNotFoundError = {\n type: \"package-not-found-error\";\n packageName: string;\n};\n\nexport type NoMatchingVersionError = {\n type: \"no-matching-version-error\";\n packageName: string;\n};\n\nexport type NpmInstallError = PackageNotFoundError | NoMatchingVersionError | string;\n\nexport function parseNpmInstallError(error: unknown): NpmInstallError {\n if (typeof error === \"string\") {\n return error;\n }\n\n if (error instanceof Error) {\n if (typeof error.stack === \"string\") {\n const isPackageNotFoundError =\n error.stack.includes(\"ERR! 404 Not Found\") &&\n error.stack.includes(\"is not in this registry\");\n let packageName = null;\n\n if (isPackageNotFoundError) {\n // Regular expression to match the package name\n const packageNameRegex = /'([^']+)' is not in this registry/;\n const match = packageNameRegex.exec(error.stack);\n if (match) {\n packageName = match[1] as string; // Capture the package name\n }\n }\n\n if (packageName) {\n return {\n type: \"package-not-found-error\",\n packageName,\n };\n }\n\n const noMatchingVersionRegex = /No matching version found for ([^\\s]+)\\s/;\n const noMatchingVersionMatch = noMatchingVersionRegex.exec(error.stack);\n if (noMatchingVersionMatch) {\n return {\n type: \"no-matching-version-error\",\n packageName: (noMatchingVersionMatch[1] as string).replace(/.$/, \"\"),\n };\n }\n\n return error.message;\n } else {\n return error.message;\n }\n }\n\n return \"Unknown error\";\n}\n\nexport function logTaskMetadataParseError(zodIssues: z.ZodIssue[], tasks: any) {\n logger.log(\n `\\n${chalkError(\"X Error:\")} Failed to start. The following ${\n zodIssues.length === 1 ? \"task issue was\" : \"task issues were\"\n } found:`\n );\n\n const groupedIssues = groupTaskMetadataIssuesByTask(tasks, zodIssues);\n\n for (const key in groupedIssues) {\n const taskWithIssues = groupedIssues[key];\n\n if (!taskWithIssues) {\n continue;\n }\n\n logger.log(\n `\\n ${chalkWarning(\"❯\")} ${taskWithIssues.exportName} ${chalkGrey(\"in\")} ${\n taskWithIssues.filePath\n }`\n );\n\n for (const issue of taskWithIssues.issues) {\n if (issue.path) {\n logger.log(` ${chalkError(\"x\")} ${issue.path} ${chalkGrey(issue.message)}`);\n } else {\n logger.log(` ${chalkError(\"x\")} ${chalkGrey(issue.message)}`);\n }\n }\n }\n}\n","export function safeJsonParse(json?: string): unknown {\n if (!json) {\n return undefined;\n }\n\n try {\n return JSON.parse(json);\n } catch {\n return undefined;\n }\n}\n","import {\n CreateBackgroundWorkerRequestBody,\n ResolvedConfig,\n TaskResource,\n ZodMessageHandler,\n ZodMessageSender,\n clientWebsocketMessages,\n detectDependencyVersion,\n serverWebsocketMessages,\n} from \"@trigger.dev/core/v3\";\nimport { watch } from \"chokidar\";\nimport { Command } from \"commander\";\nimport { BuildContext, Metafile, context } from \"esbuild\";\nimport { resolve as importResolve } from \"import-meta-resolve\";\nimport { render, useInput } from \"ink\";\nimport { createHash } from \"node:crypto\";\nimport fs, { readFileSync } from \"node:fs\";\nimport { ClientRequestArgs } from \"node:http\";\nimport { basename, dirname, join } from \"node:path\";\nimport pDebounce from \"p-debounce\";\nimport { WebSocket } from \"partysocket\";\nimport React, { Suspense, useEffect } from \"react\";\nimport { ClientOptions, WebSocket as wsWebSocket } from \"ws\";\nimport { z } from \"zod\";\nimport * as packageJson from \"../../package.json\";\nimport { CliApiClient } from \"../apiClient\";\nimport { CommonCommandOptions, commonOptions, wrapCommandAction } from \"../cli/common.js\";\nimport {\n bundleDependenciesPlugin,\n bundleTriggerDevCore,\n workerSetupImportConfigPlugin,\n} from \"../utilities/build\";\nimport { chalkError, chalkGrey, chalkPurple, chalkTask, chalkWorker } from \"../utilities/cliOutput\";\nimport { readConfig } from \"../utilities/configFiles\";\nimport { readJSONFile } from \"../utilities/fileSystem\";\nimport { printDevBanner, printStandloneInitialBanner } from \"../utilities/initialBanner.js\";\nimport {\n detectPackageNameFromImportPath,\n parsePackageName,\n stripWorkspaceFromVersion,\n} from \"../utilities/installPackages\";\nimport { logger } from \"../utilities/logger.js\";\nimport { isLoggedIn } from \"../utilities/session.js\";\nimport { createTaskFileImports, gatherTaskFiles } from \"../utilities/taskFiles\";\nimport { TaskMetadataParseError, UncaughtExceptionError } from \"../workers/common/errors\";\nimport { BackgroundWorker, BackgroundWorkerCoordinator } from \"../workers/dev/backgroundWorker.js\";\nimport { runtimeCheck } from \"../utilities/runtimeCheck\";\nimport {\n logESMRequireError,\n logTaskMetadataParseError,\n parseBuildErrorStack,\n parseNpmInstallError,\n} from \"../utilities/deployErrors\";\nimport { findUp, pathExists } from \"find-up\";\n\nlet apiClient: CliApiClient | undefined;\n\nconst DevCommandOptions = CommonCommandOptions.extend({\n debugger: z.boolean().default(false),\n debugOtel: z.boolean().default(false),\n config: z.string().optional(),\n projectRef: z.string().optional(),\n});\n\ntype DevCommandOptions = z.infer<typeof DevCommandOptions>;\n\nexport function configureDevCommand(program: Command) {\n return commonOptions(\n program\n .command(\"dev\")\n .description(\"Run your Trigger.dev tasks locally\")\n .argument(\"[path]\", \"The path to the project\", \".\")\n .option(\"-c, --config <config file>\", \"The name of the config file, found at [path].\")\n .option(\n \"-p, --project-ref <project ref>\",\n \"The project ref. Required if there is no config file.\"\n )\n .option(\"--debugger\", \"Enable the debugger\")\n .option(\"--debug-otel\", \"Enable OpenTelemetry debugging\")\n ).action(async (path, options) => {\n wrapCommandAction(\"dev\", DevCommandOptions, options, async (opts) => {\n await devCommand(path, opts);\n });\n });\n}\n\nconst MINIMUM_NODE_MAJOR = 18;\nconst MINIMUM_NODE_MINOR = 16;\n\nexport async function devCommand(dir: string, options: DevCommandOptions) {\n try {\n runtimeCheck(MINIMUM_NODE_MAJOR, MINIMUM_NODE_MINOR);\n } catch (e) {\n logger.log(`${chalkError(\"X Error:\")} ${e}`);\n process.exitCode = 1;\n return;\n }\n\n const authorization = await isLoggedIn(options.profile);\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n logger.log(\n `${chalkError(\n \"X Error:\"\n )} Connecting to the server failed. Please check your internet connection or contact eric@trigger.dev for help.`\n );\n } else {\n logger.log(`${chalkError(\"X Error:\")} You must login first. Use the \\`login\\` CLI command.`);\n }\n process.exitCode = 1;\n return;\n }\n\n const devInstance = await startDev(dir, options, authorization.auth);\n const { waitUntilExit } = devInstance.devReactElement;\n await waitUntilExit();\n}\n\nasync function startDev(\n dir: string,\n options: DevCommandOptions,\n authorization: { apiUrl: string; accessToken: string }\n) {\n let rerender: (node: React.ReactNode) => void | undefined;\n\n try {\n if (options.logLevel) {\n logger.loggerLevel = options.logLevel;\n }\n\n await printStandloneInitialBanner(true);\n printDevBanner();\n\n logger.debug(\"Starting dev session\", { dir, options, authorization });\n\n let config = await readConfig(dir, {\n projectRef: options.projectRef,\n configFile: options.config,\n });\n\n logger.debug(\"Initial config\", { config });\n\n async function getDevReactElement(\n configParam: ResolvedConfig,\n authorization: { apiUrl: string; accessToken: string },\n configPath?: string\n ) {\n const accessToken = authorization.accessToken;\n const apiUrl = authorization.apiUrl;\n\n apiClient = new CliApiClient(apiUrl, accessToken);\n\n const devEnv = await apiClient.getProjectEnv({\n projectRef: config.config.project,\n env: \"dev\",\n });\n\n if (!devEnv.success) {\n if (devEnv.error === \"Project not found\") {\n logger.error(\n `Project not found: ${config.config.project}. Ensure you are using the correct project ref and CLI profile (use --profile). Currently using the \"${options.profile}\" profile, which points to ${authorization.apiUrl}`\n );\n } else {\n logger.error(\n `Failed to initialize dev environment: ${devEnv.error}. Using project ref ${config.config.project}`\n );\n }\n\n process.exit(1);\n }\n\n const environmentClient = new CliApiClient(apiUrl, devEnv.data.apiKey);\n\n return (\n <DevUI\n config={configParam}\n apiUrl={apiUrl}\n apiKey={devEnv.data.apiKey}\n environmentClient={environmentClient}\n projectName={devEnv.data.name}\n debuggerOn={options.debugger}\n debugOtel={options.debugOtel}\n configPath={configPath}\n />\n );\n }\n\n const devReactElement = render(\n await getDevReactElement(\n config.config,\n authorization,\n config.status === \"file\" ? config.path : undefined\n )\n );\n\n rerender = devReactElement.rerender;\n\n return {\n devReactElement,\n stop: async () => {\n devReactElement.unmount();\n },\n };\n } catch (e) {\n throw e;\n }\n}\n\ntype DevProps = {\n config: ResolvedConfig;\n apiUrl: string;\n apiKey: string;\n environmentClient: CliApiClient;\n projectName: string;\n debuggerOn: boolean;\n debugOtel: boolean;\n configPath?: string;\n};\n\nfunction useDev({\n config,\n apiUrl,\n apiKey,\n environmentClient,\n projectName,\n debuggerOn,\n debugOtel,\n configPath,\n}: DevProps) {\n useEffect(() => {\n const websocketUrl = new URL(apiUrl);\n websocketUrl.protocol = websocketUrl.protocol.replace(\"http\", \"ws\");\n websocketUrl.pathname = `/ws`;\n\n const websocket = new WebSocket(websocketUrl.href, [], {\n WebSocket: WebsocketFactory(apiKey),\n connectionTimeout: 10000,\n maxRetries: 10,\n minReconnectionDelay: 1000,\n maxReconnectionDelay: 30000,\n reconnectionDelayGrowFactor: 1.4, // This leads to the following retry times: 1, 1.4, 1.96, 2.74, 3.84, 5.38, 7.53, 10.54, 14.76, 20.66\n maxEnqueuedMessages: 250,\n });\n\n const sender = new ZodMessageSender({\n schema: clientWebsocketMessages,\n sender: async (message) => {\n websocket.send(JSON.stringify(message));\n },\n });\n\n const backgroundWorkerCoordinator = new BackgroundWorkerCoordinator(\n `${apiUrl}/projects/v3/${config.project}`\n );\n\n websocket.addEventListener(\"open\", async (event) => {});\n websocket.addEventListener(\"close\", (event) => {});\n websocket.addEventListener(\"error\", (event) => {});\n\n backgroundWorkerCoordinator.onWorkerTaskHeartbeat.attach(\n async ({ worker, backgroundWorkerId, id }) => {\n await sender.send(\"BACKGROUND_WORKER_MESSAGE\", {\n backgroundWorkerId,\n data: {\n type: \"TASK_HEARTBEAT\",\n id,\n },\n });\n }\n );\n\n backgroundWorkerCoordinator.onTaskCompleted.attach(\n async ({ backgroundWorkerId, completion, execution }) => {\n await sender.send(\"BACKGROUND_WORKER_MESSAGE\", {\n backgroundWorkerId,\n data: {\n type: \"TASK_RUN_COMPLETED\",\n completion,\n execution,\n },\n });\n }\n );\n\n backgroundWorkerCoordinator.onWorkerRegistered.attach(async ({ id, worker, record }) => {\n await sender.send(\"READY_FOR_TASKS\", {\n backgroundWorkerId: id,\n });\n });\n\n backgroundWorkerCoordinator.onWorkerDeprecated.attach(async ({ id, worker }) => {\n await sender.send(\"BACKGROUND_WORKER_DEPRECATED\", {\n backgroundWorkerId: id,\n });\n });\n\n websocket.addEventListener(\"message\", async (event) => {\n const data = JSON.parse(\n typeof event.data === \"string\" ? event.data : new TextDecoder(\"utf-8\").decode(event.data)\n );\n\n const messageHandler = new ZodMessageHandler({\n schema: serverWebsocketMessages,\n messages: {\n SERVER_READY: async (payload) => {\n for (const worker of backgroundWorkerCoordinator.currentWorkers) {\n await sender.send(\"READY_FOR_TASKS\", {\n backgroundWorkerId: worker.id,\n });\n }\n },\n BACKGROUND_WORKER_MESSAGE: async (payload) => {\n await backgroundWorkerCoordinator.handleMessage(\n payload.backgroundWorkerId,\n payload.data\n );\n },\n },\n });\n\n await messageHandler.handleMessage(data);\n });\n\n let ctx: BuildContext | undefined;\n\n async function runBuild() {\n if (ctx) {\n // This will stop the watching\n await ctx.dispose();\n }\n\n let latestWorkerContentHash: string | undefined;\n\n const taskFiles = await gatherTaskFiles(config);\n\n const workerFacade = readFileSync(\n new URL(importResolve(\"./workers/dev/worker-facade.js\", import.meta.url)).href.replace(\n \"file://\",\n \"\"\n ),\n \"utf-8\"\n );\n\n const workerSetupPath = new URL(\n importResolve(\"./workers/dev/worker-setup.js\", import.meta.url)\n ).href.replace(\"file://\", \"\");\n\n let entryPointContents = workerFacade\n .replace(\"__TASKS__\", createTaskFileImports(taskFiles))\n .replace(\"__WORKER_SETUP__\", `import { tracingSDK, sender } from \"${workerSetupPath}\";`);\n\n if (configPath) {\n logger.debug(\"Importing project config from\", { configPath });\n\n entryPointContents = entryPointContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `import * as importedConfigExports from \"${configPath}\"; const importedConfig = importedConfigExports.config; const handleError = importedConfigExports.handleError;`\n );\n } else {\n entryPointContents = entryPointContents.replace(\n \"__IMPORTED_PROJECT_CONFIG__\",\n `const importedConfig = undefined; const handleError = undefined;`\n );\n }\n\n let firstBuild = true;\n\n logger.log(chalkGrey(\"○ Building background worker…\"));\n\n ctx = await context({\n stdin: {\n contents: entryPointContents,\n resolveDir: process.cwd(),\n sourcefile: \"__entryPoint.ts\",\n },\n bundle: true,\n metafile: true,\n write: false,\n minify: false,\n sourcemap: \"external\", // does not set the //# sourceMappingURL= comment in the file, we handle it ourselves\n logLevel: \"error\",\n platform: \"node\",\n format: \"cjs\", // This is needed to support opentelemetry instrumentation that uses module patching\n target: [\"node18\", \"es2020\"],\n outdir: \"out\",\n define: {\n TRIGGER_API_URL: `\"${config.triggerUrl}\"`,\n __PROJECT_CONFIG__: JSON.stringify(config),\n },\n plugins: [\n bundleTriggerDevCore(\"workerFacade\", config.tsconfigPath),\n bundleDependenciesPlugin(\n \"workerFacade\",\n (config.dependenciesToBundle ?? []).concat([/^@trigger.dev/]),\n config.tsconfigPath\n ),\n workerSetupImportConfigPlugin(configPath),\n {\n name: \"trigger.dev v3\",\n setup(build) {\n build.onEnd(async (result) => {\n if (result.errors.length > 0) return;\n if (!result || !result.outputFiles) {\n logger.error(\"Build failed: no result\");\n return;\n }\n\n if (!firstBuild) {\n logger.log(chalkGrey(\"○ Building background worker…\"));\n }\n\n const metaOutputKey = join(\"out\", `stdin.js`);\n\n const metaOutput = result.metafile!.outputs[metaOutputKey];\n\n if (!metaOutput) {\n throw new Error(`Could not find metafile`);\n }\n\n const outputFileKey = join(config.projectDir, metaOutputKey);\n const outputFile = result.outputFiles.find((file) => file.path === outputFileKey);\n\n if (!outputFile) {\n throw new Error(\n `Could not find output file for entry point ${metaOutput.entryPoint}`\n );\n }\n\n const sourceMapFileKey = join(config.projectDir, `${metaOutputKey}.map`);\n const sourceMapFile = result.outputFiles.find(\n (file) => file.path === sourceMapFileKey\n );\n\n const md5Hasher = createHash(\"md5\");\n md5Hasher.update(Buffer.from(outputFile.contents.buffer));\n\n const contentHash = md5Hasher.digest(\"hex\");\n\n if (latestWorkerContentHash === contentHash) {\n logger.log(chalkGrey(\"○ No changes detected, skipping build…\"));\n\n return;\n }\n\n // Create a file at join(dir, \".trigger\", path) with the fileContents\n const fullPath = join(config.projectDir, \".trigger\", `${contentHash}.js`);\n const sourceMapPath = `${fullPath}.map`;\n\n const outputFileWithSourceMap = `${\n outputFile.text\n }\\n//# sourceMappingURL=${basename(sourceMapPath)}`;\n\n await fs.promises.mkdir(dirname(fullPath), { recursive: true });\n await fs.promises.writeFile(fullPath, outputFileWithSourceMap);\n\n logger.debug(`Wrote background worker to ${fullPath}`);\n\n const dependencies = await gatherRequiredDependencies(metaOutput, config);\n\n if (sourceMapFile) {\n const sourceMapPath = `${fullPath}.map`;\n await fs.promises.writeFile(sourceMapPath, sourceMapFile.text);\n }\n\n const environmentVariablesResponse =\n await environmentClient.getEnvironmentVariables(config.project);\n\n const processEnv = await gatherProcessEnv();\n\n const backgroundWorker = new BackgroundWorker(fullPath, {\n projectConfig: config,\n dependencies,\n env: {\n ...processEnv,\n TRIGGER_API_URL: apiUrl,\n TRIGGER_SECRET_KEY: apiKey,\n ...(environmentVariablesResponse.success\n ? environmentVariablesResponse.data.variables\n : {}),\n },\n debuggerOn,\n debugOtel,\n });\n\n try {\n await backgroundWorker.initialize();\n\n latestWorkerContentHash = contentHash;\n\n let packageVersion: string | undefined;\n\n const taskResources: Array<TaskResource> = [];\n\n if (!backgroundWorker.tasks) {\n throw new Error(`Background Worker started without tasks`);\n }\n\n for (const task of backgroundWorker.tasks) {\n taskResources.push(task);\n\n packageVersion = task.packageVersion;\n }\n\n if (!packageVersion) {\n throw new Error(`Background Worker started without package version`);\n }\n\n // Check for any duplicate task ids\n const taskIds = taskResources.map((task) => task.id);\n const duplicateTaskIds = taskIds.filter(\n (id, index) => taskIds.indexOf(id) !== index\n );\n\n if (duplicateTaskIds.length > 0) {\n logger.error(\n createDuplicateTaskIdOutputErrorMessage(duplicateTaskIds, taskResources)\n );\n return;\n }\n\n const backgroundWorkerBody: CreateBackgroundWorkerRequestBody = {\n localOnly: true,\n metadata: {\n packageVersion,\n cliPackageVersion: packageJson.version,\n tasks: taskResources,\n contentHash: contentHash,\n },\n };\n\n const backgroundWorkerRecord = await environmentClient.createBackgroundWorker(\n config.project,\n backgroundWorkerBody\n );\n\n if (!backgroundWorkerRecord.success) {\n throw new Error(backgroundWorkerRecord.error);\n }\n\n backgroundWorker.metadata = backgroundWorkerRecord.data;\n\n logger.log(\n `${chalkGrey(\n `○ Background worker started -> ${chalkWorker(\n backgroundWorkerRecord.data.version\n )}`\n )}`\n );\n\n firstBuild = false;\n\n await backgroundWorkerCoordinator.registerWorker(\n backgroundWorkerRecord.data,\n backgroundWorker\n );\n } catch (e) {\n if (e instanceof TaskMetadataParseError) {\n logTaskMetadataParseError(e.zodIssues, e.tasks);\n return;\n } else if (e instanceof UncaughtExceptionError) {\n const parsedBuildError = parseBuildErrorStack(e.originalError);\n\n if (typeof parsedBuildError !== \"string\") {\n logESMRequireError(\n parsedBuildError,\n configPath\n ? { status: \"file\", path: configPath, config }\n : { status: \"in-memory\", config }\n );\n return;\n } else {\n }\n\n if (e.originalError.stack) {\n logger.log(\n `${chalkError(\"X Error:\")} Worker failed to start`,\n e.originalError.stack\n );\n }\n\n return;\n }\n\n const parsedError = parseNpmInstallError(e);\n\n if (typeof parsedError === \"string\") {\n logger.log(`${chalkError(\"X Error:\")} ${parsedError}`);\n } else {\n switch (parsedError.type) {\n case \"package-not-found-error\": {\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not be found in the npm registry.`\n );\n\n break;\n }\n case \"no-matching-version-error\": {\n logger.log(\n `\\n${chalkError(\"X Error:\")} The package ${chalkPurple(\n parsedError.packageName\n )} could not resolve because the version doesn't exist`\n );\n\n break;\n }\n }\n }\n }\n });\n },\n },\n ],\n });\n\n await ctx.watch();\n }\n\n const throttledRebuild = pDebounce(runBuild, 250, { before: true });\n\n const taskFileWatcher = watch(\n config.triggerDirectories.map((triggerDir) => `${triggerDir}/*.ts`),\n {\n ignoreInitial: true,\n }\n );\n\n taskFileWatcher.on(\"add\", async (path) => {\n throttledRebuild().catch((error) => {\n logger.error(error);\n });\n });\n\n taskFileWatcher.on(\"unlink\", async (path) => {\n throttledRebuild().catch((error) => {\n logger.error(error);\n });\n });\n\n throttledRebuild().catch((error) => {\n logger.error(error);\n });\n\n return () => {\n logger.debug(`Shutting down dev session for ${config.project}`);\n\n taskFileWatcher.close();\n\n websocket?.close();\n backgroundWorkerCoordinator.close();\n ctx?.dispose().catch((error) => {\n console.error(error);\n });\n };\n }, [config, apiUrl, apiKey, environmentClient]);\n}\n\nfunction DevUI(props: DevProps) {\n return (\n <Suspense>\n <DevUIImp {...props} />\n </Suspense>\n );\n}\n\nfunction DevUIImp(props: DevProps) {\n const dev = useDev(props);\n\n return (\n <>\n <HotKeys />\n </>\n );\n}\n\nfunction useHotkeys() {\n useInput(async (input, key) => {});\n}\n\nfunction HotKeys() {\n useHotkeys();\n\n return <></>;\n}\n\nfunction WebsocketFactory(apiKey: string) {\n return class extends wsWebSocket {\n constructor(address: string | URL, options?: ClientOptions | ClientRequestArgs) {\n super(address, { ...(options ?? {}), headers: { Authorization: `Bearer ${apiKey}` } });\n }\n };\n}\n\n// Returns the dependencies that are required by the output that are found in output and the CLI package dependencies\n// Returns the dependency names and the version to use (taken from the CLI deps package.json)\nasync function gatherRequiredDependencies(\n outputMeta: Metafile[\"outputs\"][string],\n config: ResolvedConfig\n) {\n const dependencies: Record<string, string> = {};\n\n logger.debug(\"Gathering required dependencies from imports\", {\n imports: outputMeta.imports,\n });\n\n for (const file of outputMeta.imports) {\n if ((file.kind !== \"require-call\" && file.kind !== \"dynamic-import\") || !file.external) {\n continue;\n }\n\n const packageName = detectPackageNameFromImportPath(file.path);\n\n if (dependencies[packageName]) {\n continue;\n }\n\n const internalDependencyVersion =\n (packageJson.dependencies as Record<string, string>)[packageName] ??\n detectDependencyVersion(packageName);\n\n if (internalDependencyVersion) {\n dependencies[packageName] = stripWorkspaceFromVersion(internalDependencyVersion);\n }\n }\n\n if (config.additionalPackages) {\n const projectPackageJson = await readJSONFile(join(config.projectDir, \"package.json\"));\n\n for (const packageName of config.additionalPackages) {\n if (dependencies[packageName]) {\n continue;\n }\n\n const packageParts = parsePackageName(packageName);\n\n if (packageParts.version) {\n dependencies[packageParts.name] = packageParts.version;\n continue;\n } else {\n const externalDependencyVersion = {\n ...projectPackageJson?.devDependencies,\n ...projectPackageJson?.dependencies,\n }[packageName];\n\n if (externalDependencyVersion) {\n dependencies[packageParts.name] = externalDependencyVersion;\n continue;\n } else {\n logger.warn(\n `Could not find version for package ${packageName}, add a version specifier to the package name (e.g. ${packageParts.name}@latest) or add it to your project's package.json`\n );\n }\n }\n }\n }\n\n return dependencies;\n}\n\nfunction createDuplicateTaskIdOutputErrorMessage(\n duplicateTaskIds: Array<string>,\n taskResources: Array<TaskResource>\n) {\n const duplicateTable = duplicateTaskIds\n .map((id) => {\n const tasks = taskResources.filter((task) => task.id === id);\n\n return `\\n\\n${chalkTask(id)} was found in:${tasks\n .map((task) => `\\n${task.filePath} -> ${task.exportName}`)\n .join(\"\")}`;\n })\n .join(\"\");\n\n return `Duplicate ${chalkTask(\"task id\")} detected:${duplicateTable}`;\n}\n\nasync function gatherProcessEnv() {\n const env = {\n NODE_ENV: process.env.NODE_ENV ?? \"development\",\n PATH: process.env.PATH,\n USER: process.env.USER,\n SHELL: process.env.SHELL,\n NVM_INC: process.env.NVM_INC,\n NVM_DIR: process.env.NVM_DIR,\n NVM_BIN: process.env.NVM_BIN,\n LANG: process.env.LANG,\n TERM: process.env.TERM,\n NODE_PATH: await amendNodePathWithPnpmNodeModules(process.env.NODE_PATH),\n HOME: process.env.HOME,\n BUN_INSTALL: process.env.BUN_INSTALL,\n };\n\n // Filter out undefined values\n return Object.fromEntries(Object.entries(env).filter(([key, value]) => value !== undefined));\n}\n\nasync function amendNodePathWithPnpmNodeModules(nodePath?: string): Promise<string | undefined> {\n const pnpmModulesPath = await findPnpmNodeModulesPath();\n\n if (!pnpmModulesPath) {\n return nodePath;\n }\n\n if (nodePath) {\n if (nodePath.includes(pnpmModulesPath)) {\n return nodePath;\n }\n\n return `${nodePath}:${pnpmModulesPath}`;\n }\n\n return pnpmModulesPath;\n}\n\nasync function findPnpmNodeModulesPath(): Promise<string | undefined> {\n return await findUp(\n async (directory) => {\n const pnpmModules = join(directory, \"node_modules\", \".pnpm\", \"node_modules\");\n\n const hasPnpmNodeModules = await pathExists(pnpmModules);\n\n if (hasPnpmNodeModules) {\n return pnpmModules;\n }\n },\n { type: \"directory\" }\n );\n}\n","import { z } from \"zod\";\n\nexport class UncaughtExceptionError extends Error {\n constructor(\n public readonly originalError: { name: string; message: string; stack?: string },\n public readonly origin: \"uncaughtException\" | \"unhandledRejection\"\n ) {\n super(`Uncaught exception: ${originalError.message}`);\n\n this.name = \"UncaughtExceptionError\";\n }\n}\n\nexport class TaskMetadataParseError extends Error {\n constructor(\n public readonly zodIssues: z.ZodIssue[],\n public readonly tasks: any\n ) {\n super(`Failed to parse task metadata`);\n\n this.name = \"TaskMetadataParseError\";\n }\n}\n","import {\n BackgroundWorkerProperties,\n BackgroundWorkerServerMessages,\n CreateBackgroundWorkerResponse,\n ResolvedConfig,\n SemanticInternalAttributes,\n TaskMetadataWithFilePath,\n TaskRunBuiltInError,\n TaskRunError,\n TaskRunErrorCodes,\n TaskRunExecution,\n TaskRunExecutionPayload,\n TaskRunExecutionResult,\n ZodMessageHandler,\n ZodMessageSender,\n childToWorkerMessages,\n correctErrorStackTrace,\n formatDurationMilliseconds,\n workerToChildMessages,\n} from \"@trigger.dev/core/v3\";\nimport dotenv from \"dotenv\";\nimport { Evt } from \"evt\";\nimport { ChildProcess, fork } from \"node:child_process\";\nimport { dirname, resolve } from \"node:path\";\nimport terminalLink from \"terminal-link\";\nimport {\n chalkError,\n chalkGrey,\n chalkLink,\n chalkRun,\n chalkSuccess,\n chalkTask,\n chalkWarning,\n chalkWorker,\n prettyPrintDate,\n} from \"../../utilities/cliOutput.js\";\nimport { safeDeleteFileSync } from \"../../utilities/fileSystem.js\";\nimport { installPackages } from \"../../utilities/installPackages.js\";\nimport { logger } from \"../../utilities/logger.js\";\nimport { TaskMetadataParseError, UncaughtExceptionError } from \"../common/errors.js\";\n\nexport type CurrentWorkers = BackgroundWorkerCoordinator[\"currentWorkers\"];\nexport class BackgroundWorkerCoordinator {\n public onTaskCompleted: Evt<{\n backgroundWorkerId: string;\n completion: TaskRunExecutionResult;\n worker: BackgroundWorker;\n execution: TaskRunExecution;\n }> = new Evt();\n public onWorkerRegistered: Evt<{\n worker: BackgroundWorker;\n id: string;\n record: CreateBackgroundWorkerResponse;\n }> = new Evt();\n public onWorkerTaskHeartbeat: Evt<{\n id: string;\n backgroundWorkerId: string;\n worker: BackgroundWorker;\n }> = new Evt();\n public onWorkerDeprecated: Evt<{ worker: BackgroundWorker; id: string }> = new Evt();\n private _backgroundWorkers: Map<string, BackgroundWorker> = new Map();\n private _records: Map<string, CreateBackgroundWorkerResponse> = new Map();\n private _deprecatedWorkers: Set<string> = new Set();\n\n constructor(private baseURL: string) {\n this.onTaskCompleted.attach(async ({ completion, execution }) => {\n if (!completion.ok && typeof completion.retry !== \"undefined\") {\n return;\n }\n\n await this.#notifyWorkersOfTaskCompletion(completion, execution);\n });\n }\n\n async #notifyWorkersOfTaskCompletion(\n completion: TaskRunExecutionResult,\n execution: TaskRunExecution\n ) {\n for (const worker of this._backgroundWorkers.values()) {\n await worker.taskRunCompletedNotification(completion, execution);\n }\n }\n\n get currentWorkers() {\n return Array.from(this._backgroundWorkers.entries()).map(([id, worker]) => ({\n id,\n worker,\n record: this._records.get(id)!,\n isDeprecated: this._deprecatedWorkers.has(id),\n }));\n }\n\n async registerWorker(record: CreateBackgroundWorkerResponse, worker: BackgroundWorker) {\n for (const [workerId, existingWorker] of this._backgroundWorkers.entries()) {\n if (workerId === record.id) {\n continue;\n }\n\n this._deprecatedWorkers.add(workerId);\n this.onWorkerDeprecated.post({ worker: existingWorker, id: workerId });\n }\n\n this._backgroundWorkers.set(record.id, worker);\n this._records.set(record.id, record);\n this.onWorkerRegistered.post({ worker, id: record.id, record });\n\n worker.onTaskHeartbeat.attach((id) => {\n this.onWorkerTaskHeartbeat.post({ id, backgroundWorkerId: record.id, worker });\n });\n }\n\n close() {\n for (const worker of this._backgroundWorkers.values()) {\n worker.close();\n }\n\n this._backgroundWorkers.clear();\n this._records.clear();\n }\n\n async handleMessage(id: string, message: BackgroundWorkerServerMessages) {\n logger.debug(`Received message from worker ${id}`, JSON.stringify({ workerMessage: message }));\n\n switch (message.type) {\n case \"EXECUTE_RUNS\": {\n await Promise.all(message.payloads.map((payload) => this.#executeTaskRun(id, payload)));\n break;\n }\n case \"CANCEL_ATTEMPT\": {\n // Need to cancel the attempt somehow here\n const worker = this._backgroundWorkers.get(id);\n\n if (!worker) {\n logger.error(`Could not find worker ${id}`);\n return;\n }\n\n await worker.cancelRun(message.taskRunId);\n }\n }\n }\n\n async #executeTaskRun(id: string, payload: TaskRunExecutionPayload) {\n const worker = this._backgroundWorkers.get(id);\n\n if (!worker) {\n logger.error(`Could not find worker ${id}`);\n return;\n }\n\n const record = this._records.get(id);\n\n if (!record) {\n logger.error(`Could not find worker record ${id}`);\n return;\n }\n\n const { execution } = payload;\n\n // ○ Mar 27 09:17:25.653 -> View logs | 20240326.20 | create-avatar | run_slufhjdfiv8ejnrkw9dsj.1\n\n const logsUrl = `${this.baseURL}/runs/${execution.run.id}`;\n\n const pipe = chalkGrey(\"|\");\n const bullet = chalkGrey(\"○\");\n const link = chalkLink(terminalLink(\"View logs\", logsUrl));\n let timestampPrefix = chalkGrey(prettyPrintDate(payload.execution.attempt.startedAt));\n const workerPrefix = chalkWorker(record.version);\n const taskPrefix = chalkTask(execution.task.id);\n const runId = chalkRun(`${execution.run.id}.${execution.attempt.number}`);\n\n logger.log(\n `${bullet} ${timestampPrefix} ${chalkGrey(\n \"->\"\n )} ${link} ${pipe} ${workerPrefix} ${pipe} ${taskPrefix} ${pipe} ${runId}`\n );\n\n const now = performance.now();\n\n const completion = await worker.executeTaskRun(payload);\n\n const elapsed = performance.now() - now;\n\n const retryingText = chalkGrey(\n !completion.ok && completion.skippedRetrying\n ? \" (retrying skipped)\"\n : !completion.ok && completion.retry !== undefined\n ? ` (retrying in ${completion.retry.delay}ms)`\n : \"\"\n );\n\n const resultText = !completion.ok\n ? completion.error.type === \"INTERNAL_ERROR\" &&\n (completion.error.code === TaskRunErrorCodes.TASK_EXECUTION_ABORTED ||\n completion.error.code === TaskRunErrorCodes.TASK_RUN_CANCELLED)\n ? chalkWarning(\"Cancelled\")\n : `${chalkError(\"Error\")}${retryingText}`\n : chalkSuccess(\"Success\");\n\n const errorText = !completion.ok\n ? this.#formatErrorLog(completion.error)\n : \"retry\" in completion\n ? `retry in ${completion.retry}ms`\n : \"\";\n\n const elapsedText = chalkGrey(`(${formatDurationMilliseconds(elapsed, { style: \"short\" })})`);\n\n timestampPrefix = chalkGrey(prettyPrintDate());\n\n logger.log(\n `${bullet} ${timestampPrefix} ${chalkGrey(\n \"->\"\n )} ${link} ${pipe} ${workerPrefix} ${pipe} ${taskPrefix} ${pipe} ${runId} ${pipe} ${resultText} ${elapsedText}${errorText}`\n );\n\n this.onTaskCompleted.post({ completion, execution, worker, backgroundWorkerId: id });\n }\n\n #formatErrorLog(error: TaskRunError) {\n switch (error.type) {\n case \"INTERNAL_ERROR\": {\n return \"\";\n }\n case \"STRING_ERROR\": {\n return `\\n\\n${chalkError(\"X Error:\")} ${error.raw}\\n`;\n }\n case \"CUSTOM_ERROR\": {\n return `\\n\\n${chalkError(\"X Error:\")} ${error.raw}\\n`;\n }\n case \"BUILT_IN_ERROR\": {\n return `\\n\\n${error.stackTrace.replace(/^Error: /, chalkError(\"X Error: \"))}\\n`;\n }\n }\n }\n}\n\nclass UnexpectedExitError extends Error {\n constructor(public code: number) {\n super(`Unexpected exit with code ${code}`);\n\n this.name = \"UnexpectedExitError\";\n }\n}\n\nclass CleanupProcessError extends Error {\n constructor() {\n super(\"Cancelled\");\n\n this.name = \"CleanupProcessError\";\n }\n}\n\nclass CancelledProcessError extends Error {\n constructor() {\n super(\"Cancelled\");\n\n this.name = \"CancelledProcessError\";\n }\n}\n\nexport type BackgroundWorkerParams = {\n env: Record<string, string>;\n dependencies?: Record<string, string>;\n projectConfig: ResolvedConfig;\n debuggerOn: boolean;\n debugOtel?: boolean;\n};\nexport class BackgroundWorker {\n private _initialized: boolean = false;\n private _handler = new ZodMessageHandler({\n schema: childToWorkerMessages,\n });\n\n public onTaskHeartbeat: Evt<string> = new Evt();\n private _onClose: Evt<void> = new Evt();\n\n public tasks: Array<TaskMetadataWithFilePath> = [];\n public metadata: BackgroundWorkerProperties | undefined;\n\n _taskRunProcesses: Map<string, TaskRunProcess> = new Map();\n\n private _closed: boolean = false;\n\n constructor(\n public path: string,\n private params: BackgroundWorkerParams\n ) {}\n\n close() {\n if (this._closed) {\n return;\n }\n\n this._closed = true;\n\n this.onTaskHeartbeat.detach();\n\n // We need to close all the task run processes\n for (const taskRunProcess of this._taskRunProcesses.values()) {\n taskRunProcess.cleanup(true);\n }\n\n // Delete worker files\n this._onClose.post();\n\n safeDeleteFileSync(this.path);\n safeDeleteFileSync(`${this.path}.map`);\n }\n\n async initialize() {\n if (this._initialized) {\n throw new Error(\"Worker already initialized\");\n }\n\n // Install the dependencies in dirname(this.path) using npm and child_process\n if (this.params.dependencies) {\n await installPackages(this.params.dependencies, { cwd: dirname(this.path) });\n }\n\n let resolved = false;\n\n const cwd = dirname(this.path);\n\n const fullEnv = {\n ...this.params.env,\n ...this.#readEnvVars(),\n };\n\n logger.debug(\"Initializing worker\", { path: this.path, cwd, fullEnv });\n\n this.tasks = await new Promise<Array<TaskMetadataWithFilePath>>((resolve, reject) => {\n const child = fork(this.path, {\n stdio: [/*stdin*/ \"ignore\", /*stdout*/ \"pipe\", /*stderr*/ \"pipe\", \"ipc\"],\n cwd,\n env: fullEnv,\n });\n\n // Set a timeout to kill the child process if it doesn't respond\n const timeout = setTimeout(() => {\n if (resolved) {\n return;\n }\n\n resolved = true;\n child.kill();\n reject(new Error(\"Worker timed out\"));\n }, 5000);\n\n child.on(\"message\", async (msg: any) => {\n const message = this._handler.parseMessage(msg);\n\n if (message.type === \"TASKS_READY\" && !resolved) {\n clearTimeout(timeout);\n resolved = true;\n resolve(message.payload.tasks);\n child.kill();\n } else if (message.type === \"UNCAUGHT_EXCEPTION\") {\n clearTimeout(timeout);\n resolved = true;\n reject(new UncaughtExceptionError(message.payload.error, message.payload.origin));\n child.kill();\n } else if (message.type === \"TASKS_FAILED_TO_PARSE\") {\n clearTimeout(timeout);\n resolved = true;\n reject(new TaskMetadataParseError(message.payload.zodIssues, message.payload.tasks));\n child.kill();\n }\n });\n\n child.on(\"exit\", (code) => {\n if (!resolved) {\n clearTimeout(timeout);\n resolved = true;\n reject(new Error(`Worker exited with code ${code}`));\n }\n });\n });\n\n this._initialized = true;\n }\n\n // We need to notify all the task run processes that a task run has completed,\n // in case they are waiting for it through triggerAndWait\n async taskRunCompletedNotification(\n completion: TaskRunExecutionResult,\n execution: TaskRunExecution\n ) {\n for (const taskRunProcess of this._taskRunProcesses.values()) {\n taskRunProcess.taskRunCompletedNotification(completion, execution);\n }\n }\n\n async #initializeTaskRunProcess(payload: TaskRunExecutionPayload): Promise<TaskRunProcess> {\n if (!this.metadata) {\n throw new Error(\"Worker not registered\");\n }\n\n if (!this._taskRunProcesses.has(payload.execution.run.id)) {\n const taskRunProcess = new TaskRunProcess(\n payload.execution,\n this.path,\n {\n ...this.params.env,\n ...(payload.environment ?? {}),\n ...this.#readEnvVars(),\n },\n this.metadata,\n this.params\n );\n\n taskRunProcess.onExit.attach(() => {\n this._taskRunProcesses.delete(payload.execution.run.id);\n });\n\n taskRunProcess.onTaskHeartbeat.attach((id) => {\n this.onTaskHeartbeat.post(id);\n });\n\n await taskRunProcess.initialize();\n\n this._taskRunProcesses.set(payload.execution.run.id, taskRunProcess);\n }\n\n return this._taskRunProcesses.get(payload.execution.run.id) as TaskRunProcess;\n }\n\n async cancelRun(taskRunId: string) {\n const taskRunProcess = this._taskRunProcesses.get(taskRunId);\n\n if (!taskRunProcess) {\n return;\n }\n\n await taskRunProcess.cancel();\n }\n\n // We need to fork the process before we can execute any tasks\n async executeTaskRun(payload: TaskRunExecutionPayload): Promise<TaskRunExecutionResult> {\n try {\n const taskRunProcess = await this.#initializeTaskRunProcess(payload);\n const result = await taskRunProcess.executeTaskRun(payload);\n\n // Kill the worker if the task was successful or if it's not going to be retried);\n await taskRunProcess.cleanup(result.ok || result.retry === undefined);\n\n if (result.ok) {\n return result;\n }\n\n const error = result.error;\n\n if (error.type === \"BUILT_IN_ERROR\") {\n const mappedError = await this.#correctError(error, payload.execution);\n\n return {\n ...result,\n error: mappedError,\n };\n }\n\n return result;\n } catch (e) {\n if (e instanceof CancelledProcessError) {\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_RUN_CANCELLED,\n },\n };\n }\n\n if (e instanceof CleanupProcessError) {\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_EXECUTION_ABORTED,\n },\n };\n }\n\n if (e instanceof UnexpectedExitError) {\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE,\n },\n };\n }\n\n return {\n id: payload.execution.attempt.id,\n ok: false,\n retry: undefined,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_EXECUTION_FAILED,\n },\n };\n }\n }\n\n #readEnvVars() {\n const result: { [key: string]: string } = {};\n\n dotenv.config({\n processEnv: result,\n path: [\".env\", \".env.local\", \".env.development.local\"].map((p) => resolve(process.cwd(), p)),\n });\n\n process.env.TRIGGER_API_URL && (result.TRIGGER_API_URL = process.env.TRIGGER_API_URL);\n\n // remove TRIGGER_API_URL and TRIGGER_SECRET_KEY, since those should be coming from the worker\n delete result.TRIGGER_API_URL;\n delete result.TRIGGER_SECRET_KEY;\n\n return result;\n }\n\n async #correctError(\n error: TaskRunBuiltInError,\n execution: TaskRunExecution\n ): Promise<TaskRunBuiltInError> {\n return {\n ...error,\n stackTrace: correctErrorStackTrace(error.stackTrace, this.params.projectConfig.projectDir),\n };\n }\n}\n\nclass TaskRunProcess {\n private _handler = new ZodMessageHandler({\n schema: childToWorkerMessages,\n });\n private _sender: ZodMessageSender<typeof workerToChildMessages>;\n private _child: ChildProcess | undefined;\n private _attemptPromises: Map<\n string,\n { resolver: (value: TaskRunExecutionResult) => void; rejecter: (err?: any) => void }\n > = new Map();\n private _attemptStatuses: Map<string, \"PENDING\" | \"REJECTED\" | \"RESOLVED\"> = new Map();\n private _currentExecution: TaskRunExecution | undefined;\n private _isBeingKilled: boolean = false;\n private _isBeingCancelled: boolean = false;\n public onTaskHeartbeat: Evt<string> = new Evt();\n public onExit: Evt<number> = new Evt();\n\n constructor(\n private execution: TaskRunExecution,\n private path: string,\n private env: NodeJS.ProcessEnv,\n private metadata: BackgroundWorkerProperties,\n private worker: BackgroundWorkerParams\n ) {\n this._sender = new ZodMessageSender({\n schema: workerToChildMessages,\n sender: async (message) => {\n if (this._child?.connected && !this._isBeingKilled && !this._child.killed) {\n this._child.send(message);\n }\n },\n });\n }\n\n async cancel() {\n this._isBeingCancelled = true;\n\n await this.cleanup(true);\n }\n\n async initialize() {\n const fullEnv = {\n ...(this.execution.run.isTest ? { TRIGGER_LOG_LEVEL: \"debug\" } : {}),\n ...this.env,\n OTEL_RESOURCE_ATTRIBUTES: JSON.stringify({\n [SemanticInternalAttributes.PROJECT_DIR]: this.worker.projectConfig.projectDir,\n }),\n OTEL_EXPORTER_OTLP_COMPRESSION: \"none\",\n ...(this.worker.debugOtel ? { OTEL_LOG_LEVEL: \"debug\" } : {}),\n };\n\n const cwd = dirname(this.path);\n\n logger.debug(`[${this.execution.run.id}] initializing task run process`, {\n env: fullEnv,\n path: this.path,\n cwd,\n });\n\n this._child = fork(this.path, {\n stdio: [/*stdin*/ \"ignore\", /*stdout*/ \"pipe\", /*stderr*/ \"pipe\", \"ipc\"],\n cwd,\n env: fullEnv,\n execArgv: this.worker.debuggerOn\n ? [\"--inspect-brk\", \"--trace-uncaught\", \"--no-warnings=ExperimentalWarning\"]\n : [\"--trace-uncaught\", \"--no-warnings=ExperimentalWarning\"],\n });\n\n this._child.on(\"message\", this.#handleMessage.bind(this));\n this._child.on(\"exit\", this.#handleExit.bind(this));\n this._child.stdout?.on(\"data\", this.#handleLog.bind(this));\n this._child.stderr?.on(\"data\", this.#handleStdErr.bind(this));\n }\n\n async cleanup(kill: boolean = false) {\n if (kill && this._isBeingKilled) {\n return;\n }\n\n logger.debug(`[${this.execution.run.id}] cleaning up task run process`, { kill });\n\n await this._sender.send(\"CLEANUP\", {\n flush: true,\n kill,\n });\n\n this._isBeingKilled = kill;\n }\n\n async executeTaskRun(payload: TaskRunExecutionPayload): Promise<TaskRunExecutionResult> {\n let resolver: (value: TaskRunExecutionResult) => void;\n let rejecter: (err?: any) => void;\n\n const promise = new Promise<TaskRunExecutionResult>((resolve, reject) => {\n resolver = resolve;\n rejecter = reject;\n });\n\n this._attemptStatuses.set(payload.execution.attempt.id, \"PENDING\");\n\n // @ts-expect-error - We know that the resolver and rejecter are defined\n this._attemptPromises.set(payload.execution.attempt.id, { resolver, rejecter });\n\n const { execution, traceContext } = payload;\n\n this._currentExecution = execution;\n\n await this._sender.send(\"EXECUTE_TASK_RUN\", {\n execution,\n traceContext,\n metadata: this.metadata,\n });\n\n const result = await promise;\n\n this._currentExecution = undefined;\n\n return result;\n }\n\n taskRunCompletedNotification(completion: TaskRunExecutionResult, execution: TaskRunExecution) {\n if (!completion.ok && typeof completion.retry !== \"undefined\") {\n return;\n }\n\n if (execution.run.id === this.execution.run.id) {\n // We don't need to notify the task run process if it's the same as the one we're running\n return;\n }\n\n logger.debug(`[${this.execution.run.id}] task run completed notification`, {\n completion,\n execution,\n });\n\n this._sender.send(\"TASK_RUN_COMPLETED_NOTIFICATION\", {\n completion,\n execution,\n });\n }\n\n async #handleMessage(msg: any) {\n const message = this._handler.parseMessage(msg);\n\n switch (message.type) {\n case \"TASK_RUN_COMPLETED\": {\n const { result, execution } = message.payload;\n\n const promiseStatus = this._attemptStatuses.get(execution.attempt.id);\n\n if (promiseStatus !== \"PENDING\") {\n return;\n }\n\n this._attemptStatuses.set(execution.attempt.id, \"RESOLVED\");\n\n const attemptPromise = this._attemptPromises.get(execution.attempt.id);\n\n if (!attemptPromise) {\n return;\n }\n\n const { resolver } = attemptPromise;\n\n resolver(result);\n\n break;\n }\n case \"READY_TO_DISPOSE\": {\n this.#kill();\n\n break;\n }\n case \"TASK_HEARTBEAT\": {\n this.onTaskHeartbeat.post(message.payload.id);\n\n break;\n }\n case \"TASKS_READY\": {\n break;\n }\n }\n }\n\n async #handleExit(code: number) {\n logger.debug(`[${this.execution.run.id}] task run process exiting`, { code });\n\n // Go through all the attempts currently pending and reject them\n for (const [id, status] of this._attemptStatuses.entries()) {\n if (status === \"PENDING\") {\n this._attemptStatuses.set(id, \"REJECTED\");\n\n const attemptPromise = this._attemptPromises.get(id);\n\n if (!attemptPromise) {\n continue;\n }\n\n const { rejecter } = attemptPromise;\n\n if (this._isBeingCancelled) {\n rejecter(new CancelledProcessError());\n } else if (this._isBeingKilled) {\n rejecter(new CleanupProcessError());\n } else {\n rejecter(new UnexpectedExitError(code));\n }\n }\n }\n\n this.onExit.post(code);\n }\n\n #handleLog(data: Buffer) {\n if (!this._currentExecution) {\n return;\n }\n\n logger.log(\n `[${this.metadata.version}][${this._currentExecution.run.id}.${\n this._currentExecution.attempt.number\n }] ${data.toString()}`\n );\n }\n\n #handleStdErr(data: Buffer) {\n if (this._isBeingKilled) {\n return;\n }\n\n if (!this._currentExecution) {\n logger.error(`[${this.metadata.version}] ${data.toString()}`);\n\n return;\n }\n\n logger.error(\n `[${this.metadata.version}][${this._currentExecution.run.id}.${\n this._currentExecution.attempt.number\n }] ${data.toString()}`\n );\n }\n\n #kill() {\n if (this._child && !this._child.killed) {\n this._child?.kill();\n }\n }\n}\n","import { logger } from \"./logger\";\n\n/**\n * This function is used by the dev CLI to make sure that the runtime is compatible\n */\nexport function runtimeCheck(minimumMajor: number, minimumMinor: number) {\n // Check if the runtime is Node.js\n if (typeof process === \"undefined\") {\n throw \"The dev CLI can only be run in a Node.js compatible environment\";\n }\n\n // Check if the runtime version is compatible\n const [major = 0, minor = 0] = process.versions.node.split(\".\").map(Number);\n\n const isBun = typeof process.versions.bun === \"string\";\n\n if (major < minimumMajor || (major === minimumMajor && minor < minimumMinor)) {\n if (isBun) {\n throw `The dev CLI requires at least Node.js ${minimumMajor}.${minimumMinor}. You are running Bun ${process.versions.bun}, which is compatible with Node.js ${process.versions.node}`;\n } else {\n throw `The dev CLI requires at least Node.js ${minimumMajor}.${minimumMinor}. You are running Node.js ${process.versions.node}`;\n }\n }\n\n logger.debug(\n `Node.js version: ${process.versions.node}${isBun ? ` (Bun ${process.versions.bun})` : \"\"}`\n );\n}\n","import { intro, isCancel, log, outro, select, spinner, text } from \"@clack/prompts\";\nimport { context, trace } from \"@opentelemetry/api\";\nimport {\n GetProjectResponseBody,\n flattenAttributes,\n recordSpanException,\n} from \"@trigger.dev/core/v3\";\nimport chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport { execa } from \"execa\";\nimport { applyEdits, modify } from \"jsonc-parser\";\nimport { writeFile } from \"node:fs/promises\";\nimport { join, relative, resolve } from \"node:path\";\nimport terminalLink from \"terminal-link\";\nimport { z } from \"zod\";\nimport { CliApiClient } from \"../apiClient\";\nimport {\n CommonCommandOptions,\n OutroCommandError,\n SkipCommandError,\n SkipLoggingError,\n commonOptions,\n handleTelemetry,\n tracer,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { readConfig } from \"../utilities/configFiles.js\";\nimport { createFileFromTemplate } from \"../utilities/createFileFromTemplate\";\nimport { createFile, pathExists, readFile } from \"../utilities/fileSystem\";\nimport { getUserPackageManager } from \"../utilities/getUserPackageManager\";\nimport { printStandloneInitialBanner } from \"../utilities/initialBanner.js\";\nimport { logger } from \"../utilities/logger\";\nimport { resolveInternalFilePath } from \"../utilities/resolveInternalFilePath\";\nimport { login } from \"./login\";\n\nconst InitCommandOptions = CommonCommandOptions.extend({\n projectRef: z.string().optional(),\n overrideConfig: z.boolean().default(false),\n tag: z.string().default(\"beta\"),\n skipPackageInstall: z.boolean().default(false),\n});\n\ntype InitCommandOptions = z.infer<typeof InitCommandOptions>;\n\nexport function configureInitCommand(program: Command) {\n return commonOptions(\n program\n .command(\"init\")\n .description(\"Initialize your existing project for development with Trigger.dev\")\n .argument(\"[path]\", \"The path to the project\", \".\")\n .option(\n \"-p, --project-ref <project ref>\",\n \"The project ref to use when initializing the project\"\n )\n .option(\n \"-t, --tag <package tag>\",\n \"The version of the @trigger.dev/sdk package to install\",\n \"beta\"\n )\n .option(\"--skip-package-install\", \"Skip installing the @trigger.dev/sdk package\")\n .option(\"--override-config\", \"Override the existing config file if it exists\")\n ).action(async (path, options) => {\n await handleTelemetry(async () => {\n await printStandloneInitialBanner(true);\n await initCommand(path, options);\n });\n });\n}\n\nexport async function initCommand(dir: string, options: unknown) {\n return await wrapCommandAction(\"initCommand\", InitCommandOptions, options, async (opts) => {\n return await _initCommand(dir, opts);\n });\n}\n\nasync function _initCommand(dir: string, options: InitCommandOptions) {\n const span = trace.getSpan(context.active());\n\n intro(\"Initializing project\");\n\n const authorization = await login({\n embedded: true,\n defaultApiUrl: options.apiUrl,\n profile: options.profile,\n });\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n throw new Error(\n `Failed to connect to ${authorization.auth?.apiUrl}. Are you sure it's the correct URL?`\n );\n } else {\n throw new Error(\"You must login first. Use `trigger.dev login` to login.\");\n }\n }\n\n span?.setAttributes({\n \"cli.userId\": authorization.userId,\n \"cli.email\": authorization.email,\n \"cli.config.apiUrl\": authorization.auth.apiUrl,\n \"cli.config.profile\": authorization.profile,\n });\n\n if (!options.overrideConfig) {\n try {\n // check to see if there is an existing trigger.dev config file in the project directory\n const result = await readConfig(dir);\n\n outro(\n result.status === \"file\"\n ? `Project already initialized: Found config file at ${result.path}. Pass --override-config to override`\n : \"Project already initialized\"\n );\n\n return;\n } catch (e) {\n // continue\n }\n }\n\n const apiClient = new CliApiClient(authorization.auth.apiUrl, authorization.auth.accessToken);\n\n const selectedProject = await selectProject(\n apiClient,\n authorization.dashboardUrl,\n options.projectRef\n );\n\n span?.setAttributes({\n ...flattenAttributes(selectedProject, \"cli.project\"),\n });\n\n logger.debug(\"Selected project\", selectedProject);\n\n log.step(`Configuring project \"${selectedProject.name}\" (${selectedProject.externalRef})`);\n\n // Install @trigger.dev/sdk package\n if (!options.skipPackageInstall) {\n await installPackages(dir, options);\n } else {\n log.info(\"Skipping package installation\");\n }\n\n // Create the trigger dir\n const triggerDir = await createTriggerDir(dir, options);\n\n // Create the config file\n await writeConfigFile(dir, selectedProject, options, triggerDir);\n\n // Add trigger.config.ts to tsconfig.json\n await addConfigFileToTsConfig(dir, options);\n\n // Ignore .trigger dir\n await gitIgnoreDotTriggerDir(dir, options);\n\n const projectDashboard = terminalLink(\n \"project dashboard\",\n `${authorization.dashboardUrl}/projects/v3/${selectedProject.externalRef}`\n );\n\n log.success(\"Successfully initialized project for Trigger.dev v3 🫡\");\n log.info(\"Next steps:\");\n log.info(\n ` 1. To start developing, run ${chalk.green(\n `npx trigger.dev@${options.tag} dev`\n )} in your project directory`\n );\n log.info(` 2. Visit your ${projectDashboard} to view your newly created tasks.`);\n log.info(\n ` 3. Head over to our ${terminalLink(\n \"v3 docs\",\n \"https://trigger.dev/docs/v3\"\n )} to learn more.`\n );\n log.info(\n ` 4. Need help? Join our ${terminalLink(\n \"Discord community\",\n \"https://trigger.dev/discord\"\n )} or email us at ${chalk.cyan(\"help@trigger.dev\")}`\n );\n\n outro(`Project initialized successfully. Happy coding!`);\n}\n\nasync function createTriggerDir(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"createTriggerDir\", async (span) => {\n try {\n const defaultValue = `${dir}/src/trigger`;\n\n const location = await text({\n message: \"Where would you like to create the Trigger.dev directory?\",\n defaultValue: defaultValue,\n placeholder: defaultValue,\n });\n\n if (isCancel(location)) {\n throw new OutroCommandError();\n }\n\n const triggerDir = resolve(process.cwd(), location);\n\n span.setAttributes({\n \"cli.triggerDir\": triggerDir,\n });\n\n if (await pathExists(triggerDir)) {\n throw new Error(`Directory already exists at ${triggerDir}`);\n }\n\n const exampleSelection = await select({\n message: `Choose an example to create in the ${location} directory`,\n options: [\n { value: \"simple\", label: \"Simple (Hello World)\" },\n {\n value: \"none\",\n label: \"None\",\n hint: \"skip creating an example\",\n },\n ],\n });\n\n if (isCancel(exampleSelection)) {\n throw new OutroCommandError();\n }\n\n const example = exampleSelection as string;\n\n span.setAttributes({\n \"cli.example\": example,\n });\n\n if (example === \"none\") {\n // Create a .gitkeep file in the trigger dir\n await createFile(join(triggerDir, \".gitkeep\"), \"\");\n\n log.step(`Created directory at ${location}`);\n\n span.end();\n return { location, isCustomValue: location !== defaultValue };\n }\n\n const exampleFile = resolveInternalFilePath(`./templates/examples/${example}.ts.template`);\n const outputPath = join(triggerDir, \"example.ts\");\n\n await createFileFromTemplate({\n templatePath: exampleFile,\n outputPath,\n replacements: {},\n });\n\n const relativeOutputPath = relative(process.cwd(), outputPath);\n\n log.step(`Created example file at ${relativeOutputPath}`);\n\n span.end();\n\n return { location, isCustomValue: location !== defaultValue };\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function gitIgnoreDotTriggerDir(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"gitIgnoreDotTriggerDir\", async (span) => {\n try {\n const projectDir = resolve(process.cwd(), dir);\n const gitIgnorePath = join(projectDir, \".gitignore\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.gitIgnorePath\": gitIgnorePath,\n });\n\n if (!(await pathExists(gitIgnorePath))) {\n // Create .gitignore file\n await createFile(gitIgnorePath, \".trigger\");\n\n log.step(`Added .trigger to .gitignore`);\n\n span.end();\n\n return;\n }\n\n // Check if .gitignore already contains .trigger\n const gitIgnoreContent = await readFile(gitIgnorePath);\n\n if (gitIgnoreContent.includes(\".trigger\")) {\n span.end();\n\n return;\n }\n\n const newGitIgnoreContent = `${gitIgnoreContent}\\n.trigger`;\n\n await writeFile(gitIgnorePath, newGitIgnoreContent, \"utf-8\");\n\n log.step(`Added .trigger to .gitignore`);\n\n span.end();\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function addConfigFileToTsConfig(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"createTriggerDir\", async (span) => {\n try {\n const projectDir = resolve(process.cwd(), dir);\n const tsconfigPath = join(projectDir, \"tsconfig.json\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.tsconfigPath\": tsconfigPath,\n });\n\n const tsconfigContent = await readFile(tsconfigPath);\n\n const edits = modify(tsconfigContent, [\"include\", -1], \"trigger.config.ts\", {\n isArrayInsertion: true,\n formattingOptions: {\n tabSize: 2,\n insertSpaces: true,\n eol: \"\\n\",\n },\n });\n\n logger.debug(\"tsconfig.json edits\", { edits });\n\n const newTsconfigContent = applyEdits(tsconfigContent, edits);\n\n logger.debug(\"new tsconfig.json content\", { newTsconfigContent });\n\n await writeFile(tsconfigPath, newTsconfigContent, \"utf-8\");\n\n log.step(`Added trigger.config.ts to tsconfig.json`);\n\n span.end();\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function installPackages(dir: string, options: InitCommandOptions) {\n return await tracer.startActiveSpan(\"installPackages\", async (span) => {\n const installSpinner = spinner();\n\n try {\n const projectDir = resolve(process.cwd(), dir);\n const pkgManager = await getUserPackageManager(projectDir);\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.packageManager\": pkgManager,\n \"cli.tag\": options.tag,\n });\n\n switch (pkgManager) {\n case \"npm\": {\n installSpinner.start(`Running npm install @trigger.dev/sdk@${options.tag}`);\n\n await execa(\"npm\", [\"install\", `@trigger.dev/sdk@${options.tag}`], {\n cwd: projectDir,\n stdio: options.logLevel === \"debug\" ? \"inherit\" : \"ignore\",\n });\n\n break;\n }\n case \"pnpm\": {\n installSpinner.start(`Running pnpm add @trigger.dev/sdk@${options.tag}`);\n\n await execa(\"pnpm\", [\"add\", `@trigger.dev/sdk@${options.tag}`], {\n cwd: projectDir,\n stdio: options.logLevel === \"debug\" ? \"inherit\" : \"ignore\",\n });\n\n break;\n }\n case \"yarn\": {\n installSpinner.start(`Running yarn add @trigger.dev/sdk@${options.tag}`);\n\n await execa(\"yarn\", [\"add\", `@trigger.dev/sdk@${options.tag}`], {\n cwd: projectDir,\n stdio: options.logLevel === \"debug\" ? \"inherit\" : \"ignore\",\n });\n\n break;\n }\n }\n\n installSpinner.stop(`@trigger.dev/sdk@${options.tag} installed`);\n\n span.end();\n } catch (e) {\n installSpinner.stop(\n `Failed to install @trigger.dev/sdk@${options.tag}. Rerun command with --log-level debug for more details.`\n );\n\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function writeConfigFile(\n dir: string,\n project: GetProjectResponseBody,\n options: InitCommandOptions,\n triggerDir: { location: string; isCustomValue: boolean }\n) {\n return await tracer.startActiveSpan(\"writeConfigFile\", async (span) => {\n try {\n const spnnr = spinner();\n spnnr.start(\"Creating config file\");\n\n const projectDir = resolve(process.cwd(), dir);\n const templatePath = resolveInternalFilePath(\"./templates/trigger.config.ts.template\");\n const outputPath = join(projectDir, \"trigger.config.ts\");\n\n span.setAttributes({\n \"cli.projectDir\": projectDir,\n \"cli.templatePath\": templatePath,\n \"cli.outputPath\": outputPath,\n });\n\n const result = await createFileFromTemplate({\n templatePath,\n replacements: {\n projectRef: project.externalRef,\n triggerDirectoriesOption: triggerDir.isCustomValue\n ? `\\n triggerDirectories: [\"${triggerDir.location}\"],`\n : \"\",\n },\n outputPath,\n override: options.overrideConfig,\n });\n\n const relativePathToOutput = relative(process.cwd(), outputPath);\n\n spnnr.stop(\n result.success\n ? `Config file created at ${relativePathToOutput}`\n : `Failed to create config file: ${result.error}`\n );\n\n if (!result.success) {\n throw new SkipLoggingError(result.error);\n }\n\n span.end();\n\n return result.success;\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n\nasync function selectProject(apiClient: CliApiClient, dashboardUrl: string, projectRef?: string) {\n return await tracer.startActiveSpan(\"selectProject\", async (span) => {\n try {\n if (projectRef) {\n const projectResponse = await apiClient.getProject(projectRef);\n\n if (!projectResponse.success) {\n log.error(\n `--project-ref ${projectRef} is not a valid project ref. Request to fetch data resulted in: ${projectResponse.error}`\n );\n\n throw new SkipCommandError(projectResponse.error);\n }\n\n span.setAttributes({\n ...flattenAttributes(projectResponse.data, \"cli.project\"),\n });\n\n span.end();\n\n return projectResponse.data;\n }\n\n const projectsResponse = await apiClient.getProjects();\n\n if (!projectsResponse.success) {\n throw new Error(`Failed to get projects: ${projectsResponse.error}`);\n }\n\n if (projectsResponse.data.length === 0) {\n const newProjectLink = terminalLink(\n \"Create new project\",\n `${dashboardUrl}/projects/new?version=v3`\n );\n\n outro(`You don't have any projects yet. ${newProjectLink}`);\n\n throw new SkipCommandError();\n }\n\n const selectedProject = await select({\n message: \"Select an existing Trigger.dev project\",\n options: projectsResponse.data.map((project) => ({\n value: project.externalRef,\n label: `${project.name} - ${project.externalRef}`,\n hint: project.organization.title,\n })),\n });\n\n if (isCancel(selectedProject)) {\n throw new OutroCommandError();\n }\n\n const projectData = projectsResponse.data.find(\n (project) => project.externalRef === selectedProject\n );\n\n if (!projectData) {\n throw new Error(\"Invalid project ref\");\n }\n\n span.setAttributes({\n ...flattenAttributes(projectData, \"cli.project\"),\n });\n\n span.end();\n\n return projectData;\n } catch (e) {\n if (!(e instanceof SkipCommandError)) {\n recordSpanException(span, e);\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n","import fs from \"fs/promises\";\nimport { pathExists, readFile } from \"./fileSystem\";\nimport path from \"path\";\n\ntype Result =\n | {\n success: true;\n alreadyExisted: boolean;\n }\n | {\n success: false;\n error: string;\n };\n\nexport async function createFileFromTemplate(params: {\n templatePath: string;\n replacements: Record<string, string>;\n outputPath: string;\n override?: boolean;\n}): Promise<Result> {\n let template = await readFile(params.templatePath);\n\n if ((await pathExists(params.outputPath)) && !params.override) {\n return {\n success: true,\n alreadyExisted: true,\n };\n }\n\n try {\n const output = replaceAll(template, params.replacements);\n\n const directoryName = path.dirname(params.outputPath);\n await fs.mkdir(directoryName, { recursive: true });\n await fs.writeFile(params.outputPath, output);\n\n return {\n success: true,\n alreadyExisted: false,\n };\n } catch (e) {\n if (e instanceof Error) {\n return {\n success: false,\n error: e.message,\n };\n }\n return {\n success: false,\n error: JSON.stringify(e),\n };\n }\n}\n\n// find strings that match ${varName} and replace with the value from a Record<string, string> where { varName: \"value\" }\nexport function replaceAll(input: string, replacements: Record<string, string>) {\n let output = input;\n for (const [key, value] of Object.entries(replacements)) {\n output = output.replace(new RegExp(`\\\\$\\\\{${key}\\\\}`, \"g\"), value);\n }\n return output;\n}\n","import pathModule from \"path\";\nimport { pathExists } from \"./fileSystem.js\";\n\nexport type PackageManager = \"npm\" | \"pnpm\" | \"yarn\";\n\nexport async function getUserPackageManager(path: string): Promise<PackageManager> {\n try {\n return await detectPackageManagerFromArtifacts(path);\n } catch (error) {\n return detectPackageManagerFromCurrentCommand();\n }\n}\n\nfunction detectPackageManagerFromCurrentCommand(): PackageManager {\n // This environment variable is set by npm and yarn but pnpm seems less consistent\n const userAgent = process.env.npm_config_user_agent;\n\n if (userAgent) {\n if (userAgent.startsWith(\"yarn\")) {\n return \"yarn\";\n } else if (userAgent.startsWith(\"pnpm\")) {\n return \"pnpm\";\n } else {\n return \"npm\";\n }\n } else {\n // If no user agent is set, assume npm\n return \"npm\";\n }\n}\n\nasync function detectPackageManagerFromArtifacts(path: string): Promise<PackageManager> {\n const packageFiles = [\n { name: \"yarn.lock\", pm: \"yarn\" } as const,\n { name: \"pnpm-lock.yaml\", pm: \"pnpm\" } as const,\n { name: \"package-lock.json\", pm: \"npm\" } as const,\n { name: \"npm-shrinkwrap.json\", pm: \"npm\" } as const,\n ];\n\n for (const { name, pm } of packageFiles) {\n const exists = await pathExists(pathModule.join(path, name));\n if (exists) {\n return pm;\n }\n }\n\n throw new Error(\"Could not detect package manager from artifacts\");\n}\n","import { resolve as importResolve } from \"import-meta-resolve\";\n\nexport function resolveInternalFilePath(filePath: string): string {\n return new URL(importResolve(filePath, import.meta.url)).href.replace(\"file://\", \"\");\n}\n","import { Command } from \"commander\";\nimport { z } from \"zod\";\nimport {\n CommonCommandOptions,\n commonOptions,\n handleTelemetry,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { deleteAuthConfigProfile, readAuthConfigProfile } from \"../utilities/configFiles.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { logger } from \"../utilities/logger.js\";\n\nconst LogoutCommandOptions = CommonCommandOptions;\n\ntype LogoutCommandOptions = z.infer<typeof LogoutCommandOptions>;\n\nexport function configureLogoutCommand(program: Command) {\n return commonOptions(program.command(\"logout\").description(\"Logout of Trigger.dev\")).action(\n async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await logoutCommand(options);\n });\n }\n );\n}\n\nexport async function logoutCommand(options: unknown) {\n return await wrapCommandAction(\"logoutCommand\", LogoutCommandOptions, options, async (opts) => {\n return await logout(opts);\n });\n}\n\nexport async function logout(options: LogoutCommandOptions) {\n const config = readAuthConfigProfile(options.profile);\n\n if (!config?.accessToken) {\n logger.info(`You are already logged out [${options.profile}]`);\n return;\n }\n\n deleteAuthConfigProfile(options.profile);\n\n logger.info(`Logged out of Trigger.dev [${options.profile}]`);\n}\n","import { Command } from \"commander\";\nimport {\n deleteAuthConfigProfile,\n readAuthConfigFile,\n readAuthConfigProfile,\n writeAuthConfigProfile,\n} from \"../utilities/configFiles.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport {\n CommonCommandOptions,\n commonOptions,\n handleTelemetry,\n wrapCommandAction,\n} from \"../cli/common.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { z } from \"zod\";\nimport { chalkGrey } from \"../utilities/cliOutput.js\";\nimport { log, outro, text } from \"@clack/prompts\";\n\nconst ListProfilesOptions = CommonCommandOptions;\n\ntype ListProfilesOptions = z.infer<typeof ListProfilesOptions>;\n\nexport function configureListProfilesCommand(program: Command) {\n return program\n .command(\"list-profiles\")\n .description(\"List all of your CLI profiles\")\n .option(\n \"-l, --log-level <level>\",\n \"The CLI log level to use (debug, info, log, warn, error, none). This does not effect the log level of your trigger.dev tasks.\",\n \"log\"\n )\n .option(\"--skip-telemetry\", \"Opt-out of sending telemetry\")\n .action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(true);\n await listProfilesCommand(options);\n });\n });\n}\n\nexport async function listProfilesCommand(options: unknown) {\n return await wrapCommandAction(\"listProfiles\", ListProfilesOptions, options, async (opts) => {\n return await listProfiles(opts);\n });\n}\n\nexport async function listProfiles(options: ListProfilesOptions) {\n const authConfig = readAuthConfigFile();\n\n if (!authConfig) {\n logger.info(\"No profiles found\");\n return;\n }\n\n const profiles = Object.keys(authConfig);\n\n log.message(\"Profiles:\");\n\n for (const profile of profiles) {\n const profileConfig = authConfig[profile];\n\n log.info(`${profile}${profileConfig?.apiUrl ? ` - ${chalkGrey(profileConfig.apiUrl)}` : \"\"}`);\n }\n\n outro(\"Retrieve account info by running whoami --profile <profile>\");\n}\n","#!/usr/bin/env node\n\nimport { program } from \"./cli/index.js\";\nimport { logger } from \"./utilities/logger.js\";\n\nconst main = async () => {\n await program.parseAsync();\n};\n\nmain().catch((err) => {\n if (err instanceof Error) {\n logger.error(err);\n } else {\n logger.error(\"An unknown error has occurred. Please open an issue on github with the below:\");\n logger.error(err);\n }\n process.exit(1);\n});\n"],"mappings":"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","names":["path","XDGAppPaths_","options","_a","path","XDG_","os","path","v","OSPaths_","os","path","path","path","original","require_retry","Command","intro","log","outro","spinner","trace","flattenAttributes","recordSpanException","chalk","build","execa","readFileSync","readFile","writeFile","join","relative","setTimeout","z","text","chalk","text","path","join","_","z","path","path","path","path","fs","z","path","rawConfig","config","join","chalk","path","path","text","chalk","join","join","path","version","intro","outro","spinner","recordSpanException","process","Buffer","path","fileURLToPath","fs","process","fs","fs","fs","fs","process","fs","promisify","process","execFile","process","process","promisify","execFile","execFileAsync","promisify","execFile","execFileAsync","execFileAsync","promisify","execFile","defaultBrowser","process","path","fileURLToPath","process","fs","defaultBrowser","Buffer","resolve","resolve","retry","z","spinner","recordSpanException","tracer","apiClient","recordSpanException","program","spinner","apiClient","z","program","intro","apiClient","outro","spinner","recordSpanException","build","chalk","relative","chalk","relative","z","program","path","trace","intro","flattenAttributes","apiClient","log","version","spinner","join","writeFile","outro","parsedError","chalk","recordSpanException","setTimeout","childProcess","text","execa","readFileSync","build","dependencies","readFile","resolve","relative","ZodMessageHandler","ZodMessageSender","detectDependencyVersion","context","importResolve","createHash","fs","readFileSync","dirname","join","z","dirname","resolve","terminalLink","terminalLink","path","dirname","resolve","findUp","pathExists","z","program","path","authorization","ZodMessageSender","ZodMessageHandler","readFileSync","importResolve","context","build","join","createHash","fs","dirname","dependencies","gatherRequiredDependencies","sourceMapPath","detectDependencyVersion","intro","log","outro","select","spinner","context","trace","flattenAttributes","recordSpanException","chalk","execa","writeFile","join","relative","resolve","terminalLink","z","fs","path","fs","pathModule","path","pathModule","importResolve","z","program","path","trace","context","intro","outro","apiClient","flattenAttributes","log","installPackages","terminalLink","chalk","resolve","select","join","relative","recordSpanException","writeFile","spinner","execa","program","log","outro","program","Command"]}