trigger.dev 0.0.0-v3-canary-20240321162743 → 0.0.0-v3-canary-20240321165557
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/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/colors.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/commands/dev.tsx","../src/workers/common/errors.ts","../src/workers/dev/backgroundWorker.ts","../src/commands/init.ts","../src/utilities/createFileFromTemplate.ts","../src/utilities/getUserPackageManager.ts","../src/utilities/resolveInternalFilePath.ts","../src/commands/logout.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\";\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);\n","import { intro, log, outro, spinner } from \"@clack/prompts\";\nimport { depot } from \"@depot/cli\";\nimport { context, trace } from \"@opentelemetry/api\";\nimport {\n ResolvedConfig,\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 { join } 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\";\nimport { bundleDependenciesPlugin } from \"../utilities/build\";\n\nconst DeployCommandOptions = CommonCommandOptions.extend({\n skipTypecheck: z.boolean().default(false),\n skipDeploy: 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 pushImage: 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(\"-T, --skip-typecheck\", \"Whether to skip the pre-build typecheck\")\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-image\",\n \"(Coming soon) 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 \"(Coming soon) 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 registryHost =\n deploymentResponse.data.registryHost ?? options.registry ?? \"registry.trigger.dev\";\n\n const buildImage = async () => {\n if (options.selfHosted) {\n return buildAndPushSelfHostedImage({\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 });\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 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 };\n\n const image = await buildImage();\n\n if (!image.ok) {\n deploymentSpinner.stop(`Failed to build project image: ${image.error}`);\n\n throw new SkipLoggingError(`Failed to build project image: ${image.error}`);\n }\n\n const imageReference = options.selfHosted\n ? `${image.image}${image.digest ? `@${image.digest}` : \"\"}`\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 deploymentSpinner.stop(\n `Deployment encountered an error: ${finishedDeployment.errorData.name}. ${deploymentLink}`\n );\n logger.error(finishedDeployment.errorData.stack);\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 )}. Aborting deployment. ${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 throw new SkipLoggingError(\"Found missing environment variables\");\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 digest?: string;\n }\n | {\n ok: false;\n error: string;\n };\n\nasync function buildAndPushImage(\n options: BuildAndPushImageOptions\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 await new Promise<void>((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\", () => res());\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 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 };\n }\n });\n}\n\ntype BuildAndPushSelfHostedImageOptions = Omit<\n BuildAndPushImageOptions,\n \"registryHost\" | \"buildId\" | \"buildToken\" | \"buildProjectId\" | \"auth\" | \"loadImage\"\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 args = [\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 `${options.imageTag}`,\n \".\", // The build context\n ].filter(Boolean) as string[];\n\n logger.debug(`docker ${args.join(\" \")}`);\n\n span.setAttribute(\"docker.command\", `docker ${args.join(\" \")}`);\n\n // Step 4: Build and push the image\n const childProcess = execa(\"docker\", args, {\n cwd: options.cwd,\n });\n\n const errors: string[] = [];\n\n try {\n await new Promise<void>((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\", () => res());\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 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 };\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\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 packages: \"external\", // https://esbuild.github.io/api/#packages\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: [bundleDependenciesPlugin(config)],\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 packages: \"external\", // https://esbuild.github.io/api/#packages\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 __PROJECT_CONFIG__: JSON.stringify(config),\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 // Get all the required dependencies from the metaOutputs and save them to /tmp/dir/package.json\n const allImports = [...metaOutput.imports, ...entryPointMetaOutput.imports];\n const dependencies = await gatherRequiredDependencies(allImports, config);\n\n const packageJsonContents = {\n name: \"trigger-worker\",\n version: \"0.0.0\",\n description: \"\",\n dependencies,\n };\n\n await writeJSONFile(join(tempDir, \"package.json\"), packageJsonContents);\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 Error(\"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\"], {\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 logger.debug(`Failed to resolve dependencies: ${JSON.stringify(installError)}`);\n\n recordSpanException(span, installError);\n\n span.end();\n\n resolvingDepsSpinner.stop(\n \"Failed to resolve dependencies. Rerun with --log-level=debug for more information\"\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) {\n const externalPackageJson = await readJSONFile(join(config.projectDir, \"package.json\"));\n\n const dependencies: Record<string, string> = {};\n\n for (const file of imports) {\n if (file.kind !== \"require-call\" || !file.external) {\n continue;\n }\n\n const packageName = detectPackageNameFromImportPath(file.path);\n\n if (dependencies[packageName]) {\n continue;\n }\n\n const externalDependencyVersion = (externalPackageJson?.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 ...externalPackageJson?.devDependencies,\n ...externalPackageJson?.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 // 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 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\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 // Make sure and remove duplicates\n return Array.from(new Set(matchesArray));\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\": \"0.0.0-v3-canary-20240321162743\",\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 \"trigger.dev\": \"./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 \"@baselime/node-opentelemetry\": \"^0.4.6\",\n \"@clack/prompts\": \"^0.7.0\",\n \"@depot/cli\": \"0.0.1-cli.2.55.0\",\n \"@opentelemetry/api\": \"^1.7.0\",\n \"@opentelemetry/api-logs\": \"^0.48.0\",\n \"@opentelemetry/auto-instrumentations-node\": \"^0.40.3\",\n \"@opentelemetry/exporter-collector\": \"^0.25.0\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"^0.48.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"^0.48.0\",\n \"@opentelemetry/instrumentation\": \"^0.48.0\",\n \"@opentelemetry/instrumentation-fetch\": \"^0.48.0\",\n \"@opentelemetry/instrumentation-http\": \"^0.48.0\",\n \"@opentelemetry/resources\": \"^1.21.0\",\n \"@opentelemetry/sdk-logs\": \"^0.48.0\",\n \"@opentelemetry/sdk-node\": \"^0.48.0\",\n \"@opentelemetry/sdk-trace-base\": \"^1.21.0\",\n \"@opentelemetry/sdk-trace-node\": \"^1.21.0\",\n \"@opentelemetry/semantic-conventions\": \"^1.21.0\",\n \"@traceloop/instrumentation-openai\": \"^0.3.9\",\n \"@trigger.dev/core\": \"workspace:0.0.0-v3-canary-20240321162743\",\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 \"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-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 \"supports-color\": \"^9.4.0\",\n \"terminal-link\": \"^3.0.0\",\n \"tiny-invariant\": \"^1.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}","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\";\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 log level to use (debug, info, log, warn, error, none)\",\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 logger.error(e instanceof Error ? e.message : String(e));\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n","import { BaselimeSDK } from \"@baselime/node-opentelemetry\";\nimport { trace } from \"@opentelemetry/api\";\nimport { FetchInstrumentation } from \"@opentelemetry/instrumentation-fetch\";\nimport { NodeTracerProvider } from \"@opentelemetry/sdk-trace-node\";\nimport * as packageJson from \"../../package.json\";\n\nconst sdk = new BaselimeSDK({\n baselimeKey: \"e9f963244f8b092850d42e34a5339b2d5e68070b\".split(\"\").reverse().join(\"\"), // this is a joke\n instrumentations: [new FetchInstrumentation()],\n service: \"cli-v3\",\n serverless: true,\n});\n\nfunction initializeTracing(): NodeTracerProvider | undefined {\n if (!process.argv.includes(\"--skip-telemetry\")) {\n return sdk.start();\n }\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 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 { 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\nfunction 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\nfunction 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.mjs\");\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: \"esm\",\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 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, \"_\");\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 supportsColor from \"supports-color\";\nimport type { Result } from \"update-check\";\nimport checkForUpdate from \"update-check\";\nimport pkg from \"../../package.json\";\nimport { chalkGrey, green, logo } from \"./colors.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(\n text + \"\\n\" + (supportsColor.stdout ? chalk.hex(green)(\"-\".repeat(54)) : \"-\".repeat(54))\n );\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 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(\"#666\")(text);\n}\n\nexport function chalkError(text: string) {\n return chalk.red(text);\n}\n\nexport function chalkSuccess(text: string) {\n return chalk.green(text);\n}\n\nexport function chalkLink(text: string) {\n return chalk.underline.blue(text);\n}\n\nexport function logo() {\n return `${chalk.hex(green).bold(\"Trigger\")}${chalk.hex(purple).bold(\".dev\")}`;\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 const childProcess = execa(\n \"npm\",\n [\"install\", \"--install-strategy\", \"nested\", \"--ignore-scripts\", \"--no-audit\", \"--no-fund\"],\n {\n cwd,\n stderr: \"inherit\",\n }\n );\n\n await new Promise<void>((res, rej) => {\n childProcess.on(\"error\", (e) => rej(e));\n childProcess.on(\"close\", () => res());\n });\n\n await childProcess;\n\n return;\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/colors.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({ profile: options?.profile ?? \"default\", skipTelemetry: !span.isRecording(), logLevel: logger.loggerLevel }, opts.embedded);\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({ accessToken: indexResult.token, apiUrl: opts.defaultApiUrl }, options?.profile);\n\n const whoAmIResult = await whoAmI({ profile: options?.profile ?? \"default\", skipTelemetry: !span.isRecording(), logLevel: logger.loggerLevel }, opts.embedded);\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/colors.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport { isLoggedIn } from \"../utilities/session.js\";\nimport { Command } from \"commander\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { CommonCommandOptions, commonOptions, handleTelemetry, wrapCommandAction } 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(program\n .command(\"whoami\")\n .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(`You must login first. Use \\`trigger.dev login --profile ${options?.profile ?? \"default\"}\\` to login.`);\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 { Config } from \"@trigger.dev/core/v3\";\nimport type { Plugin } from \"esbuild\";\nimport { logger } from \"./logger\";\n\nexport function bundleDependenciesPlugin(config: Config): Plugin {\n return {\n name: \"bundle-dependencies\",\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.kind !== \"import-statement\") {\n return undefined;\n }\n\n for (let pattern of config.dependenciesToBundle ?? []) {\n // bundle it if the path matches the pattern\n if (typeof pattern === \"string\" ? args.path === pattern : pattern.test(args.path)) {\n const resolvedPath = require.resolve(args.path);\n\n logger.debug(`Bundling ${args.path} as ${resolvedPath}`);\n\n return {\n path: resolvedPath,\n external: false,\n };\n }\n }\n\n return undefined;\n });\n },\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 chalk from \"chalk\";\nimport { watch } from \"chokidar\";\nimport { Command } from \"commander\";\nimport { BuildContext, Metafile, context } from \"esbuild\";\nimport { resolve as importResolve } from \"import-meta-resolve\";\nimport { Box, Text, render, useApp, 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 pThrottle from \"p-throttle\";\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 { readConfig } from \"../utilities/configFiles\";\nimport { readJSONFile } 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 { isLoggedIn } from \"../utilities/session.js\";\nimport { createTaskFileImports, gatherTaskFiles } from \"../utilities/taskFiles\";\nimport { UncaughtExceptionError } from \"../workers/common/errors\";\nimport { BackgroundWorker, BackgroundWorkerCoordinator } from \"../workers/dev/backgroundWorker.js\";\nimport { bundleDependenciesPlugin } from \"../utilities/build\";\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\nexport async function devCommand(dir: string, options: DevCommandOptions) {\n const authorization = await isLoggedIn(options.profile);\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n logger.error(\"Fetch failed. Platform down?\");\n } else {\n logger.error(\"You must login first. Use `trigger.dev login` to login.\");\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\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 throw new Error(devEnv.error);\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 await ctx.cancel();\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(chalk.dim(\"⎔ 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 packages: \"external\", // https://esbuild.github.io/api/#packages\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(config),\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(chalk.dim(\"⎔ Rebuilding 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(chalk.dim(\"⎔ No changes detected, skipping build...\"));\n\n logger.debug(`No changes detected, skipping build`);\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 = 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 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 if (firstBuild) {\n logger.log(\n chalk.green(\n `Background worker started (${backgroundWorkerRecord.data.version})`\n )\n );\n } else {\n logger.log(\n chalk.dim(\n `Background worker rebuilt (${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 UncaughtExceptionError) {\n if (e.originalError.stack) {\n logger.error(\"Background worker failed to start\", e.originalError.stack);\n }\n\n return;\n }\n\n if (e instanceof Error) {\n logger.error(`Background worker failed to start`, e.stack);\n\n return;\n }\n\n logger.error(`Background worker failed to start: ${e}`);\n }\n });\n },\n },\n ],\n });\n\n await ctx.watch();\n }\n\n const throttle = pThrottle({\n limit: 2,\n interval: 1000,\n });\n\n const throttledRebuild = throttle(runBuild);\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 const { exit } = useApp();\n\n useInput(async (input, key) => {\n if (key.return) {\n console.log(\"\");\n return;\n }\n switch (input.toLowerCase()) {\n // clear console\n case \"c\":\n console.clear();\n // This console.log causes Ink to re-render the `DevSession` component.\n // Couldn't find a better way to tell it to do so...\n console.log();\n break;\n // open browser\n case \"b\": {\n break;\n }\n // toggle inspector\n // case \"d\": {\n // \tif (inspect) {\n // \t\tawait openInspector(inspectorPort, props.worker);\n // \t}\n // \tbreak;\n // }\n\n // shut down\n case \"q\":\n case \"x\":\n exit();\n break;\n default:\n // nothing?\n break;\n }\n });\n}\n\nfunction HotKeys() {\n useHotkeys();\n\n return (\n <Box borderStyle=\"round\" paddingLeft={1} paddingRight={1}>\n <Text bold={true}>[b]</Text>\n <Text> open a browser, </Text>\n <Text bold={true}>[c]</Text>\n <Text> clear console, </Text>\n <Text bold={true}>[x]</Text>\n <Text> to exit</Text>\n </Box>\n );\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 for (const file of outputMeta.imports) {\n if (file.kind !== \"require-call\" || !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 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: 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","export 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","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 workerToChildMessages,\n} from \"@trigger.dev/core/v3\";\nimport chalk from \"chalk\";\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 { safeDeleteFileSync } from \"../../utilities/fileSystem.js\";\nimport { installPackages } from \"../../utilities/installPackages.js\";\nimport { logger } from \"../../utilities/logger.js\";\nimport { 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}`, { 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 const logsUrl = `${this.baseURL}/runs/${execution.run.id}`;\n\n const link = chalk.bgBlueBright(terminalLink(\"view logs\", logsUrl));\n let timestampPrefix = chalk.gray(new Date().toISOString());\n const workerPrefix = chalk.green(`[worker:${record.version}]`);\n const taskPrefix = chalk.yellow(`[task:${execution.task.id}]`);\n const runId = chalk.blue(execution.run.id);\n const attempt = chalk.blue(`.${execution.attempt.number}`);\n\n logger.log(`${timestampPrefix} ${workerPrefix}${taskPrefix} ${runId}${attempt} ${link}`);\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 =\n !completion.ok && completion.skippedRetrying\n ? \" (retrying skipped)\"\n : !completion.ok && completion.retry !== undefined\n ? ` (retrying in ${completion.retry.delay}ms)`\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 ? chalk.yellow(\"cancelled\")\n : chalk.red(`error${retryingText}`)\n : chalk.green(\"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 = chalk.dim(`(${elapsed.toFixed(2)}ms)`);\n\n timestampPrefix = chalk.gray(new Date().toISOString());\n\n logger.log(\n `${timestampPrefix} ${workerPrefix}${taskPrefix} ${runId}${attempt} ${resultText} ${elapsedText} ${link}${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${error.raw}\\n`;\n }\n case \"CUSTOM_ERROR\": {\n return `\\n\\n${error.raw}\\n`;\n }\n case \"BUILT_IN_ERROR\": {\n return `\\n\\n${error.stackTrace}\\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 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 env: {\n ...this.params.env,\n ...this.#readEnvVars(),\n },\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 }\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 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 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 logger.debug(\"initializing task run process\", {\n env: this.env,\n path: this.path,\n processEnv: process.env,\n });\n\n this._child = fork(this.path, {\n stdio: [/*stdin*/ \"ignore\", /*stdout*/ \"pipe\", /*stderr*/ \"pipe\", \"ipc\"],\n cwd: dirname(this.path),\n env: {\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 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 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 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 // 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 { 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(\"latest\"),\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 \"-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 \"latest\"\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 config file\n await writeConfigFile(dir, selectedProject, options);\n\n // Create the trigger dir\n await createTriggerDir(dir, options);\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@latest 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 location = await text({\n message: \"Where would you like to create the Trigger.dev directory?\",\n defaultValue: `${dir}/src/trigger`,\n placeholder: `${dir}/src/trigger`,\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;\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 } 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) {\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 },\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 { readAuthConfigProfile, writeAuthConfigProfile } from \"../utilities/configFiles.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport { CommonCommandOptions, commonOptions, handleTelemetry, wrapCommandAction } from \"../cli/common.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { z } from \"zod\";\n\nconst LogoutCommandOptions = CommonCommandOptions;\n\ntype LogoutCommandOptions = z.infer<typeof LogoutCommandOptions>;\n\nexport function configureLogoutCommand(program: Command) {\n return commonOptions(program\n .command(\"logout\")\n .description(\"Logout of Trigger.dev\"))\n .action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await logoutCommand(options);\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 ?? \"default\"}]`);\n return;\n }\n\n writeAuthConfigProfile({ ...config, accessToken: undefined, apiUrl: undefined }, options.profile);\n\n logger.info(`Logged out of Trigger.dev [${options.profile ?? \"default\"}]`);\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","readFile","writeFile","join","setTimeout","z","text","path","join","_","z","path","path","path","path","fs","z","path","rawConfig","config","join","chalk","chalk","text","chalk","text","chalk","path","path","text","chalk","join","join","childProcess","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","z","program","path","trace","intro","flattenAttributes","apiClient","log","version","spinner","outro","chalk","recordSpanException","setTimeout","childProcess","text","execa","build","join","writeFile","dependencies","readFile","resolve","ZodMessageHandler","ZodMessageSender","detectDependencyVersion","chalk","context","importResolve","createHash","fs","readFileSync","dirname","join","z","chalk","resolve","terminalLink","chalk","terminalLink","path","resolve","z","program","path","authorization","ZodMessageSender","ZodMessageHandler","readFileSync","importResolve","chalk","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","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/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/colors.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/commands/dev.tsx","../src/workers/common/errors.ts","../src/workers/dev/backgroundWorker.ts","../src/commands/init.ts","../src/utilities/createFileFromTemplate.ts","../src/utilities/getUserPackageManager.ts","../src/utilities/resolveInternalFilePath.ts","../src/commands/logout.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\";\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);\n","import { intro, log, outro, spinner } from \"@clack/prompts\";\nimport { depot } from \"@depot/cli\";\nimport { context, trace } from \"@opentelemetry/api\";\nimport {\n ResolvedConfig,\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 { join } 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\";\nimport { bundleDependenciesPlugin } from \"../utilities/build\";\n\nconst DeployCommandOptions = CommonCommandOptions.extend({\n skipTypecheck: z.boolean().default(false),\n skipDeploy: 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 pushImage: 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(\"-T, --skip-typecheck\", \"Whether to skip the pre-build typecheck\")\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-image\",\n \"(Coming soon) 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 \"(Coming soon) 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 registryHost =\n deploymentResponse.data.registryHost ?? options.registry ?? \"registry.trigger.dev\";\n\n const buildImage = async () => {\n if (options.selfHosted) {\n return buildAndPushSelfHostedImage({\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 });\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 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 };\n\n const image = await buildImage();\n\n if (!image.ok) {\n deploymentSpinner.stop(`Failed to build project image: ${image.error}`);\n\n throw new SkipLoggingError(`Failed to build project image: ${image.error}`);\n }\n\n const imageReference = options.selfHosted\n ? `${image.image}${image.digest ? `@${image.digest}` : \"\"}`\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 deploymentSpinner.stop(\n `Deployment encountered an error: ${finishedDeployment.errorData.name}. ${deploymentLink}`\n );\n logger.error(finishedDeployment.errorData.stack);\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 )}. Aborting deployment. ${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 throw new SkipLoggingError(\"Found missing environment variables\");\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 digest?: string;\n }\n | {\n ok: false;\n error: string;\n };\n\nasync function buildAndPushImage(\n options: BuildAndPushImageOptions\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 await new Promise<void>((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\", () => res());\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 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 };\n }\n });\n}\n\ntype BuildAndPushSelfHostedImageOptions = Omit<\n BuildAndPushImageOptions,\n \"registryHost\" | \"buildId\" | \"buildToken\" | \"buildProjectId\" | \"auth\" | \"loadImage\"\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 args = [\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 `${options.imageTag}`,\n \".\", // The build context\n ].filter(Boolean) as string[];\n\n logger.debug(`docker ${args.join(\" \")}`);\n\n span.setAttribute(\"docker.command\", `docker ${args.join(\" \")}`);\n\n // Step 4: Build and push the image\n const childProcess = execa(\"docker\", args, {\n cwd: options.cwd,\n });\n\n const errors: string[] = [];\n\n try {\n await new Promise<void>((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\", () => res());\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 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 };\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\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 packages: \"external\", // https://esbuild.github.io/api/#packages\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: [bundleDependenciesPlugin(config)],\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 packages: \"external\", // https://esbuild.github.io/api/#packages\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 __PROJECT_CONFIG__: JSON.stringify(config),\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 // Get all the required dependencies from the metaOutputs and save them to /tmp/dir/package.json\n const allImports = [...metaOutput.imports, ...entryPointMetaOutput.imports];\n const dependencies = await gatherRequiredDependencies(allImports, config);\n\n const packageJsonContents = {\n name: \"trigger-worker\",\n version: \"0.0.0\",\n description: \"\",\n dependencies,\n };\n\n await writeJSONFile(join(tempDir, \"package.json\"), packageJsonContents);\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 Error(\"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\"], {\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 logger.debug(`Failed to resolve dependencies: ${JSON.stringify(installError)}`);\n\n recordSpanException(span, installError);\n\n span.end();\n\n resolvingDepsSpinner.stop(\n \"Failed to resolve dependencies. Rerun with --log-level=debug for more information\"\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) {\n const externalPackageJson = await readJSONFile(join(config.projectDir, \"package.json\"));\n\n const dependencies: Record<string, string> = {};\n\n for (const file of imports) {\n if (file.kind !== \"require-call\" || !file.external) {\n continue;\n }\n\n const packageName = detectPackageNameFromImportPath(file.path);\n\n if (dependencies[packageName]) {\n continue;\n }\n\n const externalDependencyVersion = (externalPackageJson?.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 ...externalPackageJson?.devDependencies,\n ...externalPackageJson?.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 // 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 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\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 // Make sure and remove duplicates\n return Array.from(new Set(matchesArray));\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\": \"0.0.0-v3-canary-20240321165557\",\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 \"trigger.dev\": \"./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 \"@baselime/node-opentelemetry\": \"^0.4.6\",\n \"@clack/prompts\": \"^0.7.0\",\n \"@depot/cli\": \"0.0.1-cli.2.55.0\",\n \"@opentelemetry/api\": \"^1.7.0\",\n \"@opentelemetry/api-logs\": \"^0.48.0\",\n \"@opentelemetry/auto-instrumentations-node\": \"^0.40.3\",\n \"@opentelemetry/exporter-collector\": \"^0.25.0\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"^0.48.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"^0.48.0\",\n \"@opentelemetry/instrumentation\": \"^0.48.0\",\n \"@opentelemetry/instrumentation-fetch\": \"^0.48.0\",\n \"@opentelemetry/instrumentation-http\": \"^0.48.0\",\n \"@opentelemetry/resources\": \"^1.21.0\",\n \"@opentelemetry/sdk-logs\": \"^0.48.0\",\n \"@opentelemetry/sdk-node\": \"^0.48.0\",\n \"@opentelemetry/sdk-trace-base\": \"^1.21.0\",\n \"@opentelemetry/sdk-trace-node\": \"^1.21.0\",\n \"@opentelemetry/semantic-conventions\": \"^1.21.0\",\n \"@traceloop/instrumentation-openai\": \"^0.3.9\",\n \"@trigger.dev/core\": \"workspace:0.0.0-v3-canary-20240321165557\",\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 \"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-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 \"supports-color\": \"^9.4.0\",\n \"terminal-link\": \"^3.0.0\",\n \"tiny-invariant\": \"^1.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}","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\";\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 log level to use (debug, info, log, warn, error, none)\",\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 logger.error(e instanceof Error ? e.message : String(e));\n }\n\n span.end();\n\n throw e;\n }\n });\n}\n","import { BaselimeSDK } from \"@baselime/node-opentelemetry\";\nimport { trace } from \"@opentelemetry/api\";\nimport { FetchInstrumentation } from \"@opentelemetry/instrumentation-fetch\";\nimport { NodeTracerProvider } from \"@opentelemetry/sdk-trace-node\";\nimport * as packageJson from \"../../package.json\";\n\nconst sdk = new BaselimeSDK({\n baselimeKey: \"e9f963244f8b092850d42e34a5339b2d5e68070b\".split(\"\").reverse().join(\"\"), // this is a joke\n instrumentations: [new FetchInstrumentation()],\n service: \"cli-v3\",\n serverless: true,\n});\n\nfunction initializeTracing(): NodeTracerProvider | undefined {\n if (!process.argv.includes(\"--skip-telemetry\")) {\n return sdk.start();\n }\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 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 { 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\nfunction 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\nfunction 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.mjs\");\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: \"esm\",\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 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, \"_\");\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 supportsColor from \"supports-color\";\nimport type { Result } from \"update-check\";\nimport checkForUpdate from \"update-check\";\nimport pkg from \"../../package.json\";\nimport { chalkGrey, green, logo } from \"./colors.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(\n text + \"\\n\" + (supportsColor.stdout ? chalk.hex(green)(\"-\".repeat(54)) : \"-\".repeat(54))\n );\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 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(\"#666\")(text);\n}\n\nexport function chalkError(text: string) {\n return chalk.red(text);\n}\n\nexport function chalkSuccess(text: string) {\n return chalk.green(text);\n}\n\nexport function chalkLink(text: string) {\n return chalk.underline.blue(text);\n}\n\nexport function logo() {\n return `${chalk.hex(green).bold(\"Trigger\")}${chalk.hex(purple).bold(\".dev\")}`;\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 const childProcess = execa(\n \"npm\",\n [\"install\", \"--install-strategy\", \"nested\", \"--ignore-scripts\", \"--no-audit\", \"--no-fund\"],\n {\n cwd,\n stderr: \"inherit\",\n }\n );\n\n await new Promise<void>((res, rej) => {\n childProcess.on(\"error\", (e) => rej(e));\n childProcess.on(\"close\", () => res());\n });\n\n await childProcess;\n\n return;\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/colors.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({ profile: options?.profile ?? \"default\", skipTelemetry: !span.isRecording(), logLevel: logger.loggerLevel }, opts.embedded);\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({ accessToken: indexResult.token, apiUrl: opts.defaultApiUrl }, options?.profile);\n\n const whoAmIResult = await whoAmI({ profile: options?.profile ?? \"default\", skipTelemetry: !span.isRecording(), logLevel: logger.loggerLevel }, opts.embedded);\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/colors.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport { isLoggedIn } from \"../utilities/session.js\";\nimport { Command } from \"commander\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { CommonCommandOptions, commonOptions, handleTelemetry, wrapCommandAction } 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(program\n .command(\"whoami\")\n .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(`You must login first. Use \\`trigger.dev login --profile ${options?.profile ?? \"default\"}\\` to login.`);\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 { Config } from \"@trigger.dev/core/v3\";\nimport type { Plugin } from \"esbuild\";\nimport { logger } from \"./logger\";\n\nexport function bundleDependenciesPlugin(config: Config): Plugin {\n return {\n name: \"bundle-dependencies\",\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n if (args.kind !== \"import-statement\") {\n return undefined;\n }\n\n for (let pattern of config.dependenciesToBundle ?? []) {\n // bundle it if the path matches the pattern\n if (typeof pattern === \"string\" ? args.path === pattern : pattern.test(args.path)) {\n try {\n const resolvedPath = resolvePath(args.path);\n\n logger.debug(`Bundling ${args.path} as ${resolvedPath}`);\n\n return {\n path: resolvedPath,\n external: false,\n };\n } catch (error) {\n logger.error(`Failed to resolve path ${args.path}`, error);\n\n return undefined;\n }\n }\n }\n\n return undefined;\n });\n },\n };\n}\n\nfunction resolvePath(path: string): string {\n logger.debug(\"[bundle-dependencies] Attempting to resolve path using ESM resolver\", {\n path,\n importMetaUrl: import.meta.url,\n });\n\n return require.resolve(path);\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 chalk from \"chalk\";\nimport { watch } from \"chokidar\";\nimport { Command } from \"commander\";\nimport { BuildContext, Metafile, context } from \"esbuild\";\nimport { resolve as importResolve } from \"import-meta-resolve\";\nimport { Box, Text, render, useApp, 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 pThrottle from \"p-throttle\";\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 { readConfig } from \"../utilities/configFiles\";\nimport { readJSONFile } 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 { isLoggedIn } from \"../utilities/session.js\";\nimport { createTaskFileImports, gatherTaskFiles } from \"../utilities/taskFiles\";\nimport { UncaughtExceptionError } from \"../workers/common/errors\";\nimport { BackgroundWorker, BackgroundWorkerCoordinator } from \"../workers/dev/backgroundWorker.js\";\nimport { bundleDependenciesPlugin } from \"../utilities/build\";\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\nexport async function devCommand(dir: string, options: DevCommandOptions) {\n const authorization = await isLoggedIn(options.profile);\n\n if (!authorization.ok) {\n if (authorization.error === \"fetch failed\") {\n logger.error(\"Fetch failed. Platform down?\");\n } else {\n logger.error(\"You must login first. Use `trigger.dev login` to login.\");\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\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 throw new Error(devEnv.error);\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 await ctx.cancel();\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(chalk.dim(\"⎔ 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 packages: \"external\", // https://esbuild.github.io/api/#packages\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(config),\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(chalk.dim(\"⎔ Rebuilding 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(chalk.dim(\"⎔ No changes detected, skipping build...\"));\n\n logger.debug(`No changes detected, skipping build`);\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 = 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 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 if (firstBuild) {\n logger.log(\n chalk.green(\n `Background worker started (${backgroundWorkerRecord.data.version})`\n )\n );\n } else {\n logger.log(\n chalk.dim(\n `Background worker rebuilt (${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 UncaughtExceptionError) {\n if (e.originalError.stack) {\n logger.error(\"Background worker failed to start\", e.originalError.stack);\n }\n\n return;\n }\n\n if (e instanceof Error) {\n logger.error(`Background worker failed to start`, e.stack);\n\n return;\n }\n\n logger.error(`Background worker failed to start: ${e}`);\n }\n });\n },\n },\n ],\n });\n\n await ctx.watch();\n }\n\n const throttle = pThrottle({\n limit: 2,\n interval: 1000,\n });\n\n const throttledRebuild = throttle(runBuild);\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 const { exit } = useApp();\n\n useInput(async (input, key) => {\n if (key.return) {\n console.log(\"\");\n return;\n }\n switch (input.toLowerCase()) {\n // clear console\n case \"c\":\n console.clear();\n // This console.log causes Ink to re-render the `DevSession` component.\n // Couldn't find a better way to tell it to do so...\n console.log();\n break;\n // open browser\n case \"b\": {\n break;\n }\n // toggle inspector\n // case \"d\": {\n // \tif (inspect) {\n // \t\tawait openInspector(inspectorPort, props.worker);\n // \t}\n // \tbreak;\n // }\n\n // shut down\n case \"q\":\n case \"x\":\n exit();\n break;\n default:\n // nothing?\n break;\n }\n });\n}\n\nfunction HotKeys() {\n useHotkeys();\n\n return (\n <Box borderStyle=\"round\" paddingLeft={1} paddingRight={1}>\n <Text bold={true}>[b]</Text>\n <Text> open a browser, </Text>\n <Text bold={true}>[c]</Text>\n <Text> clear console, </Text>\n <Text bold={true}>[x]</Text>\n <Text> to exit</Text>\n </Box>\n );\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 for (const file of outputMeta.imports) {\n if (file.kind !== \"require-call\" || !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 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: 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","export 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","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 workerToChildMessages,\n} from \"@trigger.dev/core/v3\";\nimport chalk from \"chalk\";\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 { safeDeleteFileSync } from \"../../utilities/fileSystem.js\";\nimport { installPackages } from \"../../utilities/installPackages.js\";\nimport { logger } from \"../../utilities/logger.js\";\nimport { 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}`, { 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 const logsUrl = `${this.baseURL}/runs/${execution.run.id}`;\n\n const link = chalk.bgBlueBright(terminalLink(\"view logs\", logsUrl));\n let timestampPrefix = chalk.gray(new Date().toISOString());\n const workerPrefix = chalk.green(`[worker:${record.version}]`);\n const taskPrefix = chalk.yellow(`[task:${execution.task.id}]`);\n const runId = chalk.blue(execution.run.id);\n const attempt = chalk.blue(`.${execution.attempt.number}`);\n\n logger.log(`${timestampPrefix} ${workerPrefix}${taskPrefix} ${runId}${attempt} ${link}`);\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 =\n !completion.ok && completion.skippedRetrying\n ? \" (retrying skipped)\"\n : !completion.ok && completion.retry !== undefined\n ? ` (retrying in ${completion.retry.delay}ms)`\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 ? chalk.yellow(\"cancelled\")\n : chalk.red(`error${retryingText}`)\n : chalk.green(\"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 = chalk.dim(`(${elapsed.toFixed(2)}ms)`);\n\n timestampPrefix = chalk.gray(new Date().toISOString());\n\n logger.log(\n `${timestampPrefix} ${workerPrefix}${taskPrefix} ${runId}${attempt} ${resultText} ${elapsedText} ${link}${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${error.raw}\\n`;\n }\n case \"CUSTOM_ERROR\": {\n return `\\n\\n${error.raw}\\n`;\n }\n case \"BUILT_IN_ERROR\": {\n return `\\n\\n${error.stackTrace}\\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 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 env: {\n ...this.params.env,\n ...this.#readEnvVars(),\n },\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 }\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 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 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 logger.debug(\"initializing task run process\", {\n env: this.env,\n path: this.path,\n processEnv: process.env,\n });\n\n this._child = fork(this.path, {\n stdio: [/*stdin*/ \"ignore\", /*stdout*/ \"pipe\", /*stderr*/ \"pipe\", \"ipc\"],\n cwd: dirname(this.path),\n env: {\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 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 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 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 // 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 { 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(\"latest\"),\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 \"-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 \"latest\"\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 config file\n await writeConfigFile(dir, selectedProject, options);\n\n // Create the trigger dir\n await createTriggerDir(dir, options);\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@latest 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 location = await text({\n message: \"Where would you like to create the Trigger.dev directory?\",\n defaultValue: `${dir}/src/trigger`,\n placeholder: `${dir}/src/trigger`,\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;\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 } 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) {\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 },\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 { readAuthConfigProfile, writeAuthConfigProfile } from \"../utilities/configFiles.js\";\nimport { logger } from \"../utilities/logger.js\";\nimport { CommonCommandOptions, commonOptions, handleTelemetry, wrapCommandAction } from \"../cli/common.js\";\nimport { printInitialBanner } from \"../utilities/initialBanner.js\";\nimport { z } from \"zod\";\n\nconst LogoutCommandOptions = CommonCommandOptions;\n\ntype LogoutCommandOptions = z.infer<typeof LogoutCommandOptions>;\n\nexport function configureLogoutCommand(program: Command) {\n return commonOptions(program\n .command(\"logout\")\n .description(\"Logout of Trigger.dev\"))\n .action(async (options) => {\n await handleTelemetry(async () => {\n await printInitialBanner(false);\n await logoutCommand(options);\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 ?? \"default\"}]`);\n return;\n }\n\n writeAuthConfigProfile({ ...config, accessToken: undefined, apiUrl: undefined }, options.profile);\n\n logger.info(`Logged out of Trigger.dev [${options.profile ?? \"default\"}]`);\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","readFile","writeFile","join","setTimeout","z","text","path","join","_","z","path","path","path","path","fs","z","path","rawConfig","config","join","chalk","chalk","text","chalk","text","chalk","path","path","text","chalk","join","join","childProcess","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","path","z","program","path","trace","intro","flattenAttributes","apiClient","log","version","spinner","outro","chalk","recordSpanException","setTimeout","childProcess","text","execa","build","join","writeFile","dependencies","readFile","resolve","ZodMessageHandler","ZodMessageSender","detectDependencyVersion","chalk","context","importResolve","createHash","fs","readFileSync","dirname","join","z","chalk","resolve","terminalLink","chalk","terminalLink","path","resolve","z","program","path","authorization","ZodMessageSender","ZodMessageHandler","readFileSync","importResolve","chalk","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","Command"]}
|