trigger.dev 0.0.0-re2-20250204143529 → 0.0.0-re2-20250314185304
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/README.md +31 -0
- package/dist/esm/apiClient.d.ts +39 -354
- package/dist/esm/apiClient.js +69 -64
- package/dist/esm/apiClient.js.map +1 -1
- package/dist/esm/build/buildWorker.d.ts +10 -10
- package/dist/esm/build/bundle.js +22 -4
- package/dist/esm/build/bundle.js.map +1 -1
- package/dist/esm/build/entryPoints.d.ts +2 -0
- package/dist/esm/build/entryPoints.js +27 -7
- package/dist/esm/build/entryPoints.js.map +1 -1
- package/dist/esm/build/packageModules.d.ts +0 -5
- package/dist/esm/build/packageModules.js +0 -45
- package/dist/esm/build/packageModules.js.map +1 -1
- package/dist/esm/cli/common.d.ts +2 -2
- package/dist/esm/cli/index.js +2 -0
- package/dist/esm/cli/index.js.map +1 -1
- package/dist/esm/commands/deploy.js +52 -10
- package/dist/esm/commands/deploy.js.map +1 -1
- package/dist/esm/commands/dev.d.ts +11 -2
- package/dist/esm/commands/dev.js +7 -1
- package/dist/esm/commands/dev.js.map +1 -1
- package/dist/esm/commands/list-profiles.d.ts +2 -2
- package/dist/esm/commands/login.d.ts +2 -2
- package/dist/esm/commands/logout.d.ts +2 -2
- package/dist/esm/commands/promote.d.ts +3 -0
- package/dist/esm/commands/promote.js +75 -0
- package/dist/esm/commands/promote.js.map +1 -0
- package/dist/esm/commands/switch.d.ts +2 -2
- package/dist/esm/commands/trigger.d.ts +4 -4
- package/dist/esm/commands/update.d.ts +2 -2
- package/dist/esm/commands/whoami.d.ts +2 -2
- package/dist/esm/config.js +15 -3
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/deploy/buildImage.d.ts +3 -1
- package/dist/esm/deploy/buildImage.js +10 -5
- package/dist/esm/deploy/buildImage.js.map +1 -1
- package/dist/esm/dev/backgroundWorker.d.ts +2 -240
- package/dist/esm/dev/backgroundWorker.js +8 -304
- package/dist/esm/dev/backgroundWorker.js.map +1 -1
- package/dist/esm/dev/devOutput.js +11 -2
- package/dist/esm/dev/devOutput.js.map +1 -1
- package/dist/esm/dev/devSession.js +14 -4
- package/dist/esm/dev/devSession.js.map +1 -1
- package/dist/esm/dev/devSupervisor.js +266 -40
- package/dist/esm/dev/devSupervisor.js.map +1 -1
- package/dist/esm/dev/mcpServer.d.ts +10 -0
- package/dist/esm/dev/mcpServer.js +201 -0
- package/dist/esm/dev/mcpServer.js.map +1 -0
- package/dist/esm/dev/workerRuntime.d.ts +0 -1
- package/dist/esm/dev/workerRuntime.js +1 -270
- package/dist/esm/dev/workerRuntime.js.map +1 -1
- package/dist/esm/entryPoints/dev-run-controller.d.ts +19 -9
- package/dist/esm/entryPoints/dev-run-controller.js +148 -101
- package/dist/esm/entryPoints/dev-run-controller.js.map +1 -1
- package/dist/esm/entryPoints/dev-run-worker.js +39 -20
- package/dist/esm/entryPoints/dev-run-worker.js.map +1 -1
- package/dist/esm/entryPoints/managed-run-controller.js +223 -175
- package/dist/esm/entryPoints/managed-run-controller.js.map +1 -1
- package/dist/esm/entryPoints/managed-run-worker.js +16 -8
- package/dist/esm/entryPoints/managed-run-worker.js.map +1 -1
- package/dist/esm/executions/taskRunProcess.d.ts +1 -69
- package/dist/esm/executions/taskRunProcess.js +7 -10
- package/dist/esm/executions/taskRunProcess.js.map +1 -1
- package/dist/esm/indexing/indexWorkerManifest.d.ts +12 -9
- package/dist/esm/indexing/registerTasks.js +3 -0
- package/dist/esm/indexing/registerTasks.js.map +1 -1
- package/dist/esm/utilities/eventBus.d.ts +8 -5
- package/dist/esm/utilities/eventBus.js.map +1 -1
- package/dist/esm/utilities/githubActions.d.ts +4 -0
- package/dist/esm/utilities/githubActions.js +18 -0
- package/dist/esm/utilities/githubActions.js.map +1 -0
- package/dist/esm/utilities/logger.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +10 -6
- package/dist/esm/dev/backgroundWorkerEngine2.d.ts +0 -21
- package/dist/esm/dev/backgroundWorkerEngine2.js +0 -68
- package/dist/esm/dev/backgroundWorkerEngine2.js.map +0 -1
- package/dist/esm/entryPoints/deploy-index-controller.d.ts +0 -1
- package/dist/esm/entryPoints/deploy-index-controller.js +0 -86
- package/dist/esm/entryPoints/deploy-index-controller.js.map +0 -1
- package/dist/esm/entryPoints/deploy-index-worker.d.ts +0 -1
- package/dist/esm/entryPoints/deploy-index-worker.js +0 -142
- package/dist/esm/entryPoints/deploy-index-worker.js.map +0 -1
- package/dist/esm/entryPoints/deploy-run-controller.d.ts +0 -1
- package/dist/esm/entryPoints/deploy-run-controller.js +0 -1102
- package/dist/esm/entryPoints/deploy-run-controller.js.map +0 -1
- package/dist/esm/entryPoints/deploy-run-worker.d.ts +0 -1
- package/dist/esm/entryPoints/deploy-run-worker.js +0 -367
- package/dist/esm/entryPoints/deploy-run-worker.js.map +0 -1
- package/dist/esm/entryPoints/unmanaged-index-controller.d.ts +0 -1
- package/dist/esm/entryPoints/unmanaged-index-controller.js +0 -86
- package/dist/esm/entryPoints/unmanaged-index-controller.js.map +0 -1
- package/dist/esm/entryPoints/unmanaged-index-worker.d.ts +0 -1
- package/dist/esm/entryPoints/unmanaged-index-worker.js +0 -128
- package/dist/esm/entryPoints/unmanaged-index-worker.js.map +0 -1
- package/dist/esm/entryPoints/unmanaged-run-controller.d.ts +0 -1
- package/dist/esm/entryPoints/unmanaged-run-controller.js +0 -147
- package/dist/esm/entryPoints/unmanaged-run-controller.js.map +0 -1
- package/dist/esm/entryPoints/unmanaged-run-worker.d.ts +0 -1
- package/dist/esm/entryPoints/unmanaged-run-worker.js +0 -360
- package/dist/esm/entryPoints/unmanaged-run-worker.js.map +0 -1
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { BuildManifest, indexerToWorkerMessages, taskCatalog, } from "@trigger.dev/core/v3";
|
|
2
|
-
import { StandardTaskCatalog, TracingSDK, } from "@trigger.dev/core/v3/workers";
|
|
3
|
-
import { sendMessageInCatalog, ZodSchemaParsedError } from "@trigger.dev/core/v3/zodMessageHandler";
|
|
4
|
-
import { readFile } from "node:fs/promises";
|
|
5
|
-
import sourceMapSupport from "source-map-support";
|
|
6
|
-
import { registerTasks } from "../indexing/registerTasks.js";
|
|
7
|
-
import { env } from "std-env";
|
|
8
|
-
import { normalizeImportPath } from "../utilities/normalizeImportPath.js";
|
|
9
|
-
sourceMapSupport.install({
|
|
10
|
-
handleUncaughtExceptions: false,
|
|
11
|
-
environment: "node",
|
|
12
|
-
hookRequire: false,
|
|
13
|
-
});
|
|
14
|
-
process.on("uncaughtException", function (error, origin) {
|
|
15
|
-
if (error instanceof Error) {
|
|
16
|
-
process.send &&
|
|
17
|
-
process.send({
|
|
18
|
-
type: "UNCAUGHT_EXCEPTION",
|
|
19
|
-
payload: {
|
|
20
|
-
error: { name: error.name, message: error.message, stack: error.stack },
|
|
21
|
-
origin,
|
|
22
|
-
},
|
|
23
|
-
version: "v1",
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
process.send &&
|
|
28
|
-
process.send({
|
|
29
|
-
type: "UNCAUGHT_EXCEPTION",
|
|
30
|
-
payload: {
|
|
31
|
-
error: {
|
|
32
|
-
name: "Error",
|
|
33
|
-
message: typeof error === "string" ? error : JSON.stringify(error),
|
|
34
|
-
},
|
|
35
|
-
origin,
|
|
36
|
-
},
|
|
37
|
-
version: "v1",
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
taskCatalog.setGlobalTaskCatalog(new StandardTaskCatalog());
|
|
42
|
-
async function importConfig(configPath) {
|
|
43
|
-
const configModule = await import(normalizeImportPath(configPath));
|
|
44
|
-
const config = configModule?.default ?? configModule?.config;
|
|
45
|
-
return {
|
|
46
|
-
config,
|
|
47
|
-
handleError: configModule?.handleError,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
async function loadBuildManifest() {
|
|
51
|
-
const manifestContents = await readFile(env.TRIGGER_BUILD_MANIFEST_PATH, "utf-8");
|
|
52
|
-
const raw = JSON.parse(manifestContents);
|
|
53
|
-
return BuildManifest.parse(raw);
|
|
54
|
-
}
|
|
55
|
-
async function bootstrap() {
|
|
56
|
-
const buildManifest = await loadBuildManifest();
|
|
57
|
-
const { config } = await importConfig(buildManifest.configPath);
|
|
58
|
-
// This needs to run or the PrismaInstrumentation will throw an error
|
|
59
|
-
const tracingSDK = new TracingSDK({
|
|
60
|
-
url: env.OTEL_EXPORTER_OTLP_ENDPOINT ?? "http://0.0.0.0:4318",
|
|
61
|
-
instrumentations: config.instrumentations ?? [],
|
|
62
|
-
diagLogLevel: env.OTEL_LOG_LEVEL ?? "none",
|
|
63
|
-
forceFlushTimeoutMillis: 30_000,
|
|
64
|
-
});
|
|
65
|
-
const importErrors = await registerTasks(buildManifest);
|
|
66
|
-
return {
|
|
67
|
-
tracingSDK,
|
|
68
|
-
config,
|
|
69
|
-
buildManifest,
|
|
70
|
-
importErrors,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
const { buildManifest, importErrors, config } = await bootstrap();
|
|
74
|
-
let tasks = taskCatalog.listTaskManifests();
|
|
75
|
-
// If the config has retry defaults, we need to apply them to all tasks that don't have any retry settings
|
|
76
|
-
if (config.retries?.default) {
|
|
77
|
-
tasks = tasks.map((task) => {
|
|
78
|
-
if (!task.retry) {
|
|
79
|
-
return {
|
|
80
|
-
...task,
|
|
81
|
-
retry: config.retries?.default,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
return task;
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
// If the config has a maxDuration, we need to apply it to all tasks that don't have a maxDuration
|
|
88
|
-
if (typeof config.maxDuration === "number") {
|
|
89
|
-
tasks = tasks.map((task) => {
|
|
90
|
-
if (typeof task.maxDuration !== "number") {
|
|
91
|
-
return {
|
|
92
|
-
...task,
|
|
93
|
-
maxDuration: config.maxDuration,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
return task;
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
await sendMessageInCatalog(indexerToWorkerMessages, "INDEX_COMPLETE", {
|
|
100
|
-
manifest: {
|
|
101
|
-
tasks,
|
|
102
|
-
configPath: buildManifest.configPath,
|
|
103
|
-
runtime: buildManifest.runtime,
|
|
104
|
-
workerEntryPoint: buildManifest.runWorkerEntryPoint,
|
|
105
|
-
controllerEntryPoint: buildManifest.runControllerEntryPoint,
|
|
106
|
-
loaderEntryPoint: buildManifest.loaderEntryPoint,
|
|
107
|
-
customConditions: buildManifest.customConditions,
|
|
108
|
-
},
|
|
109
|
-
importErrors,
|
|
110
|
-
}, async (msg) => {
|
|
111
|
-
process.send?.(msg);
|
|
112
|
-
}).catch((err) => {
|
|
113
|
-
if (err instanceof ZodSchemaParsedError) {
|
|
114
|
-
return sendMessageInCatalog(indexerToWorkerMessages, "TASKS_FAILED_TO_PARSE", { zodIssues: err.error.issues, tasks }, async (msg) => {
|
|
115
|
-
process.send?.(msg);
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
console.error("Failed to send TASKS_READY message", err);
|
|
120
|
-
}
|
|
121
|
-
return;
|
|
122
|
-
});
|
|
123
|
-
await new Promise((resolve) => {
|
|
124
|
-
setTimeout(() => {
|
|
125
|
-
resolve();
|
|
126
|
-
}, 10);
|
|
127
|
-
});
|
|
128
|
-
//# sourceMappingURL=unmanaged-index-worker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unmanaged-index-worker.js","sourceRoot":"","sources":["../../../src/entryPoints/unmanaged-index-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { logger } from "../utilities/logger.js";
|
|
2
|
-
import { TaskRunProcess } from "../executions/taskRunProcess.js";
|
|
3
|
-
import { env as stdEnv } from "std-env";
|
|
4
|
-
import { z } from "zod";
|
|
5
|
-
import { CLOUD_API_URL } from "../consts.js";
|
|
6
|
-
import { randomUUID } from "crypto";
|
|
7
|
-
import { readJSONFile } from "../utilities/fileSystem.js";
|
|
8
|
-
import { WorkerManifest } from "@trigger.dev/core/v3";
|
|
9
|
-
import { SupervisorSession } from "@trigger.dev/core/v3/workers";
|
|
10
|
-
const Env = z.object({
|
|
11
|
-
TRIGGER_API_URL: z.string().url().default(CLOUD_API_URL),
|
|
12
|
-
TRIGGER_CONTENT_HASH: z.string(),
|
|
13
|
-
TRIGGER_WORKER_TOKEN: z.string(),
|
|
14
|
-
TRIGGER_WORKER_INSTANCE_NAME: z.string().default(randomUUID()),
|
|
15
|
-
TRIGGER_DEPLOYMENT_ID: z.string(),
|
|
16
|
-
TRIGGER_DEPLOYMENT_VERSION: z.string(),
|
|
17
|
-
NODE_ENV: z.string().default("production"),
|
|
18
|
-
NODE_EXTRA_CA_CERTS: z.string().optional(),
|
|
19
|
-
OTEL_EXPORTER_OTLP_ENDPOINT: z.string().url(),
|
|
20
|
-
});
|
|
21
|
-
const env = Env.parse(stdEnv);
|
|
22
|
-
logger.loggerLevel = "debug";
|
|
23
|
-
logger.debug("Creating unmanaged worker", { env });
|
|
24
|
-
class UnmanagedRunController {
|
|
25
|
-
workerManifest;
|
|
26
|
-
session;
|
|
27
|
-
taskRunProcess;
|
|
28
|
-
constructor(workerManifest) {
|
|
29
|
-
this.workerManifest = workerManifest;
|
|
30
|
-
this.session = new SupervisorSession({
|
|
31
|
-
workerToken: env.TRIGGER_WORKER_TOKEN,
|
|
32
|
-
apiUrl: env.TRIGGER_API_URL,
|
|
33
|
-
instanceName: env.TRIGGER_WORKER_INSTANCE_NAME,
|
|
34
|
-
deploymentId: env.TRIGGER_DEPLOYMENT_ID,
|
|
35
|
-
dequeueIntervalMs: 1000,
|
|
36
|
-
});
|
|
37
|
-
this.session.on("runQueueMessage", async ({ time, message }) => {
|
|
38
|
-
logger.debug("[UnmanagedRunController] Received runQueueMessage", { time, message });
|
|
39
|
-
this.session.emit("requestRunAttemptStart", {
|
|
40
|
-
time: new Date(),
|
|
41
|
-
run: {
|
|
42
|
-
friendlyId: message.run.id,
|
|
43
|
-
},
|
|
44
|
-
snapshot: {
|
|
45
|
-
friendlyId: message.snapshot.id,
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
this.session.on("runAttemptStarted", async ({ time, run, snapshot, execution, envVars }) => {
|
|
50
|
-
const taskRunEnv = {
|
|
51
|
-
...gatherProcessEnv(),
|
|
52
|
-
...envVars,
|
|
53
|
-
};
|
|
54
|
-
this.taskRunProcess = new TaskRunProcess({
|
|
55
|
-
workerManifest: this.workerManifest,
|
|
56
|
-
env: taskRunEnv,
|
|
57
|
-
serverWorker: {
|
|
58
|
-
id: "unmanaged",
|
|
59
|
-
contentHash: env.TRIGGER_CONTENT_HASH,
|
|
60
|
-
version: env.TRIGGER_DEPLOYMENT_VERSION,
|
|
61
|
-
engine: "V2",
|
|
62
|
-
},
|
|
63
|
-
payload: {
|
|
64
|
-
execution,
|
|
65
|
-
traceContext: execution.run.traceContext ?? {},
|
|
66
|
-
},
|
|
67
|
-
messageId: run.id,
|
|
68
|
-
});
|
|
69
|
-
try {
|
|
70
|
-
await this.taskRunProcess.initialize();
|
|
71
|
-
logger.log("executing task run process", {
|
|
72
|
-
attemptId: execution.attempt.id,
|
|
73
|
-
runId: execution.run.id,
|
|
74
|
-
});
|
|
75
|
-
const completion = await this.taskRunProcess.execute();
|
|
76
|
-
logger.log("completed", completion);
|
|
77
|
-
try {
|
|
78
|
-
await this.taskRunProcess.cleanup(true);
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
console.error("Failed to cleanup task run process, submitting completion anyway", {
|
|
82
|
-
error,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
this.session.emit("runAttemptCompleted", {
|
|
86
|
-
time: new Date(),
|
|
87
|
-
run: {
|
|
88
|
-
friendlyId: run.id,
|
|
89
|
-
},
|
|
90
|
-
snapshot: {
|
|
91
|
-
friendlyId: snapshot.id,
|
|
92
|
-
},
|
|
93
|
-
completion,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
console.error("Failed to complete lazy attempt", {
|
|
98
|
-
error,
|
|
99
|
-
});
|
|
100
|
-
this.session.emit("runAttemptCompleted", {
|
|
101
|
-
time: new Date(),
|
|
102
|
-
run: {
|
|
103
|
-
friendlyId: run.id,
|
|
104
|
-
},
|
|
105
|
-
snapshot: {
|
|
106
|
-
friendlyId: snapshot.id,
|
|
107
|
-
},
|
|
108
|
-
completion: {
|
|
109
|
-
id: execution.run.id,
|
|
110
|
-
ok: false,
|
|
111
|
-
retry: undefined,
|
|
112
|
-
error: TaskRunProcess.parseExecuteError(error),
|
|
113
|
-
},
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
process.on("SIGTERM", async () => {
|
|
118
|
-
logger.debug("[UnmanagedRunController] Received SIGTERM, stopping worker");
|
|
119
|
-
await this.stop();
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
async start() {
|
|
123
|
-
logger.debug("[UnmanagedRunController] Starting up");
|
|
124
|
-
await this.session.start();
|
|
125
|
-
}
|
|
126
|
-
async stop() {
|
|
127
|
-
logger.debug("[UnmanagedRunController] Shutting down");
|
|
128
|
-
await this.session.stop();
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
const workerManifest = await loadWorkerManifest();
|
|
132
|
-
const prodWorker = new UnmanagedRunController(workerManifest);
|
|
133
|
-
await prodWorker.start();
|
|
134
|
-
function gatherProcessEnv() {
|
|
135
|
-
const $env = {
|
|
136
|
-
NODE_ENV: env.NODE_ENV,
|
|
137
|
-
NODE_EXTRA_CA_CERTS: env.NODE_EXTRA_CA_CERTS,
|
|
138
|
-
OTEL_EXPORTER_OTLP_ENDPOINT: env.OTEL_EXPORTER_OTLP_ENDPOINT,
|
|
139
|
-
};
|
|
140
|
-
// Filter out undefined values
|
|
141
|
-
return Object.fromEntries(Object.entries($env).filter(([key, value]) => value !== undefined));
|
|
142
|
-
}
|
|
143
|
-
async function loadWorkerManifest() {
|
|
144
|
-
const manifest = await readJSONFile("./index.json");
|
|
145
|
-
return WorkerManifest.parse(manifest);
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=unmanaged-run-controller.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unmanaged-run-controller.js","sourceRoot":"","sources":["../../../src/entryPoints/unmanaged-run-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,360 +0,0 @@
|
|
|
1
|
-
import { clock, logger, runtime, taskCatalog, TaskRunErrorCodes, WorkerToExecutorMessageCatalog, WorkerManifest, ExecutorToWorkerMessageCatalog, timeout, runMetadata, waitUntil, apiClientManager, } from "@trigger.dev/core/v3";
|
|
2
|
-
import { TriggerTracer } from "@trigger.dev/core/v3/tracer";
|
|
3
|
-
import { ConsoleInterceptor, DevUsageManager, DurableClock, getEnvVar, getNumberEnvVar, logLevels, OtelTaskLogger, ProdUsageManager, StandardTaskCatalog, TaskExecutor, TracingSDK, usage, UsageTimeoutManager, StandardMetadataManager, StandardWaitUntilManager, UnmanagedRuntimeManager, } from "@trigger.dev/core/v3/workers";
|
|
4
|
-
import { ZodIpcConnection } from "@trigger.dev/core/v3/zodIpc";
|
|
5
|
-
import { readFile } from "node:fs/promises";
|
|
6
|
-
import { setInterval, setTimeout } from "node:timers/promises";
|
|
7
|
-
import sourceMapSupport from "source-map-support";
|
|
8
|
-
import { env } from "std-env";
|
|
9
|
-
import { normalizeImportPath } from "../utilities/normalizeImportPath.js";
|
|
10
|
-
import { VERSION } from "../version.js";
|
|
11
|
-
sourceMapSupport.install({
|
|
12
|
-
handleUncaughtExceptions: false,
|
|
13
|
-
environment: "node",
|
|
14
|
-
hookRequire: false,
|
|
15
|
-
});
|
|
16
|
-
process.on("uncaughtException", function (error, origin) {
|
|
17
|
-
console.error("Uncaught exception", { error, origin });
|
|
18
|
-
if (error instanceof Error) {
|
|
19
|
-
process.send &&
|
|
20
|
-
process.send({
|
|
21
|
-
type: "EVENT",
|
|
22
|
-
message: {
|
|
23
|
-
type: "UNCAUGHT_EXCEPTION",
|
|
24
|
-
payload: {
|
|
25
|
-
error: { name: error.name, message: error.message, stack: error.stack },
|
|
26
|
-
origin,
|
|
27
|
-
},
|
|
28
|
-
version: "v1",
|
|
29
|
-
},
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
process.send &&
|
|
34
|
-
process.send({
|
|
35
|
-
type: "EVENT",
|
|
36
|
-
message: {
|
|
37
|
-
type: "UNCAUGHT_EXCEPTION",
|
|
38
|
-
payload: {
|
|
39
|
-
error: {
|
|
40
|
-
name: "Error",
|
|
41
|
-
message: typeof error === "string" ? error : JSON.stringify(error),
|
|
42
|
-
},
|
|
43
|
-
origin,
|
|
44
|
-
},
|
|
45
|
-
version: "v1",
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
const usageIntervalMs = getEnvVar("USAGE_HEARTBEAT_INTERVAL_MS");
|
|
51
|
-
const usageEventUrl = getEnvVar("USAGE_EVENT_URL");
|
|
52
|
-
const triggerJWT = getEnvVar("TRIGGER_JWT");
|
|
53
|
-
const heartbeatIntervalMs = getEnvVar("HEARTBEAT_INTERVAL_MS");
|
|
54
|
-
const devUsageManager = new DevUsageManager();
|
|
55
|
-
const prodUsageManager = new ProdUsageManager(devUsageManager, {
|
|
56
|
-
heartbeatIntervalMs: usageIntervalMs ? parseInt(usageIntervalMs, 10) : undefined,
|
|
57
|
-
url: usageEventUrl,
|
|
58
|
-
jwt: triggerJWT,
|
|
59
|
-
});
|
|
60
|
-
usage.setGlobalUsageManager(prodUsageManager);
|
|
61
|
-
timeout.setGlobalManager(new UsageTimeoutManager(devUsageManager));
|
|
62
|
-
taskCatalog.setGlobalTaskCatalog(new StandardTaskCatalog());
|
|
63
|
-
const durableClock = new DurableClock();
|
|
64
|
-
clock.setGlobalClock(durableClock);
|
|
65
|
-
const runMetadataManager = new StandardMetadataManager(apiClientManager.clientOrThrow(), getEnvVar("TRIGGER_STREAM_URL", getEnvVar("TRIGGER_API_URL")) ?? "https://api.trigger.dev");
|
|
66
|
-
runMetadata.setGlobalManager(runMetadataManager);
|
|
67
|
-
const waitUntilManager = new StandardWaitUntilManager();
|
|
68
|
-
waitUntil.setGlobalManager(waitUntilManager);
|
|
69
|
-
// Wait for all streams to finish before completing the run
|
|
70
|
-
waitUntil.register({
|
|
71
|
-
requiresResolving: () => runMetadataManager.hasActiveStreams(),
|
|
72
|
-
promise: () => runMetadataManager.waitForAllStreams(),
|
|
73
|
-
});
|
|
74
|
-
const triggerLogLevel = getEnvVar("TRIGGER_LOG_LEVEL");
|
|
75
|
-
async function importConfig(configPath) {
|
|
76
|
-
const configModule = await import(configPath);
|
|
77
|
-
const config = configModule?.default ?? configModule?.config;
|
|
78
|
-
return {
|
|
79
|
-
config,
|
|
80
|
-
handleError: configModule?.handleError,
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
async function loadWorkerManifest() {
|
|
84
|
-
const manifestContents = await readFile("./index.json", "utf-8");
|
|
85
|
-
const raw = JSON.parse(manifestContents);
|
|
86
|
-
return WorkerManifest.parse(raw);
|
|
87
|
-
}
|
|
88
|
-
async function bootstrap() {
|
|
89
|
-
const workerManifest = await loadWorkerManifest();
|
|
90
|
-
const { config, handleError } = await importConfig(normalizeImportPath(workerManifest.configPath));
|
|
91
|
-
const tracingSDK = new TracingSDK({
|
|
92
|
-
url: env.OTEL_EXPORTER_OTLP_ENDPOINT ?? "http://0.0.0.0:4318",
|
|
93
|
-
instrumentations: config.instrumentations ?? [],
|
|
94
|
-
diagLogLevel: env.OTEL_LOG_LEVEL ?? "none",
|
|
95
|
-
forceFlushTimeoutMillis: 30_000,
|
|
96
|
-
});
|
|
97
|
-
const otelTracer = tracingSDK.getTracer("trigger-dev-worker", VERSION);
|
|
98
|
-
const otelLogger = tracingSDK.getLogger("trigger-dev-worker", VERSION);
|
|
99
|
-
const tracer = new TriggerTracer({ tracer: otelTracer, logger: otelLogger });
|
|
100
|
-
const consoleInterceptor = new ConsoleInterceptor(otelLogger, typeof config.enableConsoleLogging === "boolean" ? config.enableConsoleLogging : true);
|
|
101
|
-
const configLogLevel = triggerLogLevel ?? config.logLevel ?? "info";
|
|
102
|
-
const otelTaskLogger = new OtelTaskLogger({
|
|
103
|
-
logger: otelLogger,
|
|
104
|
-
tracer: tracer,
|
|
105
|
-
level: logLevels.includes(configLogLevel) ? configLogLevel : "info",
|
|
106
|
-
});
|
|
107
|
-
logger.setGlobalTaskLogger(otelTaskLogger);
|
|
108
|
-
for (const task of workerManifest.tasks) {
|
|
109
|
-
taskCatalog.registerTaskFileMetadata(task.id, {
|
|
110
|
-
exportName: task.exportName,
|
|
111
|
-
filePath: task.filePath,
|
|
112
|
-
entryPoint: task.entryPoint,
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
return {
|
|
116
|
-
tracer,
|
|
117
|
-
tracingSDK,
|
|
118
|
-
consoleInterceptor,
|
|
119
|
-
config,
|
|
120
|
-
handleErrorFn: handleError,
|
|
121
|
-
workerManifest,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
let _execution;
|
|
125
|
-
let _isRunning = false;
|
|
126
|
-
let _tracingSDK;
|
|
127
|
-
const zodIpc = new ZodIpcConnection({
|
|
128
|
-
listenSchema: WorkerToExecutorMessageCatalog,
|
|
129
|
-
emitSchema: ExecutorToWorkerMessageCatalog,
|
|
130
|
-
process,
|
|
131
|
-
handlers: {
|
|
132
|
-
EXECUTE_TASK_RUN: async ({ execution, traceContext, metadata }, sender) => {
|
|
133
|
-
console.log(`[${new Date().toISOString()}] Received EXECUTE_TASK_RUN`, execution);
|
|
134
|
-
if (_isRunning) {
|
|
135
|
-
console.error("Worker is already running a task");
|
|
136
|
-
await sender.send("TASK_RUN_COMPLETED", {
|
|
137
|
-
execution,
|
|
138
|
-
result: {
|
|
139
|
-
ok: false,
|
|
140
|
-
id: execution.run.id,
|
|
141
|
-
error: {
|
|
142
|
-
type: "INTERNAL_ERROR",
|
|
143
|
-
code: TaskRunErrorCodes.TASK_ALREADY_RUNNING,
|
|
144
|
-
},
|
|
145
|
-
usage: {
|
|
146
|
-
durationMs: 0,
|
|
147
|
-
},
|
|
148
|
-
metadata: runMetadataManager.stopAndReturnLastFlush(),
|
|
149
|
-
},
|
|
150
|
-
});
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
try {
|
|
154
|
-
const { tracer, tracingSDK, consoleInterceptor, config, handleErrorFn, workerManifest } = await bootstrap();
|
|
155
|
-
_tracingSDK = tracingSDK;
|
|
156
|
-
const taskManifest = workerManifest.tasks.find((t) => t.id === execution.task.id);
|
|
157
|
-
if (!taskManifest) {
|
|
158
|
-
console.error(`Could not find task ${execution.task.id}`);
|
|
159
|
-
await sender.send("TASK_RUN_COMPLETED", {
|
|
160
|
-
execution,
|
|
161
|
-
result: {
|
|
162
|
-
ok: false,
|
|
163
|
-
id: execution.run.id,
|
|
164
|
-
error: {
|
|
165
|
-
type: "INTERNAL_ERROR",
|
|
166
|
-
code: TaskRunErrorCodes.COULD_NOT_FIND_TASK,
|
|
167
|
-
message: `Could not find task ${execution.task.id}. Make sure the task is exported and the ID is correct.`,
|
|
168
|
-
},
|
|
169
|
-
usage: {
|
|
170
|
-
durationMs: 0,
|
|
171
|
-
},
|
|
172
|
-
metadata: runMetadataManager.stopAndReturnLastFlush(),
|
|
173
|
-
},
|
|
174
|
-
});
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
try {
|
|
178
|
-
const beforeImport = performance.now();
|
|
179
|
-
await import(normalizeImportPath(taskManifest.entryPoint));
|
|
180
|
-
const durationMs = performance.now() - beforeImport;
|
|
181
|
-
console.log(`Imported task ${execution.task.id} [${taskManifest.entryPoint}] in ${durationMs}ms`);
|
|
182
|
-
}
|
|
183
|
-
catch (err) {
|
|
184
|
-
console.error(`Failed to import task ${execution.task.id}`, err);
|
|
185
|
-
await sender.send("TASK_RUN_COMPLETED", {
|
|
186
|
-
execution,
|
|
187
|
-
result: {
|
|
188
|
-
ok: false,
|
|
189
|
-
id: execution.run.id,
|
|
190
|
-
error: {
|
|
191
|
-
type: "INTERNAL_ERROR",
|
|
192
|
-
code: TaskRunErrorCodes.COULD_NOT_IMPORT_TASK,
|
|
193
|
-
message: err instanceof Error ? err.message : String(err),
|
|
194
|
-
stackTrace: err instanceof Error ? err.stack : undefined,
|
|
195
|
-
},
|
|
196
|
-
usage: {
|
|
197
|
-
durationMs: 0,
|
|
198
|
-
},
|
|
199
|
-
metadata: runMetadataManager.stopAndReturnLastFlush(),
|
|
200
|
-
},
|
|
201
|
-
});
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
process.title = `trigger-dev-worker: ${execution.task.id} ${execution.run.id}`;
|
|
205
|
-
// Import the task module
|
|
206
|
-
const task = taskCatalog.getTask(execution.task.id);
|
|
207
|
-
if (!task) {
|
|
208
|
-
console.error(`Could not find task ${execution.task.id}`);
|
|
209
|
-
await sender.send("TASK_RUN_COMPLETED", {
|
|
210
|
-
execution,
|
|
211
|
-
result: {
|
|
212
|
-
ok: false,
|
|
213
|
-
id: execution.run.id,
|
|
214
|
-
error: {
|
|
215
|
-
type: "INTERNAL_ERROR",
|
|
216
|
-
code: TaskRunErrorCodes.COULD_NOT_FIND_EXECUTOR,
|
|
217
|
-
},
|
|
218
|
-
usage: {
|
|
219
|
-
durationMs: 0,
|
|
220
|
-
},
|
|
221
|
-
metadata: runMetadataManager.stopAndReturnLastFlush(),
|
|
222
|
-
},
|
|
223
|
-
});
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
const executor = new TaskExecutor(task, {
|
|
227
|
-
tracer,
|
|
228
|
-
tracingSDK,
|
|
229
|
-
consoleInterceptor,
|
|
230
|
-
config,
|
|
231
|
-
handleErrorFn,
|
|
232
|
-
});
|
|
233
|
-
try {
|
|
234
|
-
_execution = execution;
|
|
235
|
-
_isRunning = true;
|
|
236
|
-
runMetadataManager.startPeriodicFlush(getNumberEnvVar("TRIGGER_RUN_METADATA_FLUSH_INTERVAL", 1000));
|
|
237
|
-
const measurement = usage.start();
|
|
238
|
-
// This lives outside of the executor because this will eventually be moved to the controller level
|
|
239
|
-
const signal = execution.run.maxDuration
|
|
240
|
-
? timeout.abortAfterTimeout(execution.run.maxDuration)
|
|
241
|
-
: undefined;
|
|
242
|
-
signal?.addEventListener("abort", async (e) => {
|
|
243
|
-
if (_isRunning) {
|
|
244
|
-
_isRunning = false;
|
|
245
|
-
_execution = undefined;
|
|
246
|
-
const usageSample = usage.stop(measurement);
|
|
247
|
-
await sender.send("TASK_RUN_COMPLETED", {
|
|
248
|
-
execution,
|
|
249
|
-
result: {
|
|
250
|
-
ok: false,
|
|
251
|
-
id: execution.run.id,
|
|
252
|
-
error: {
|
|
253
|
-
type: "INTERNAL_ERROR",
|
|
254
|
-
code: TaskRunErrorCodes.MAX_DURATION_EXCEEDED,
|
|
255
|
-
message: signal.reason instanceof Error
|
|
256
|
-
? signal.reason.message
|
|
257
|
-
: String(signal.reason),
|
|
258
|
-
},
|
|
259
|
-
usage: {
|
|
260
|
-
durationMs: usageSample.cpuTime,
|
|
261
|
-
},
|
|
262
|
-
metadata: runMetadataManager.stopAndReturnLastFlush(),
|
|
263
|
-
},
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
});
|
|
267
|
-
const { result } = await executor.execute(execution, metadata, traceContext, measurement, signal);
|
|
268
|
-
const usageSample = usage.stop(measurement);
|
|
269
|
-
if (_isRunning) {
|
|
270
|
-
return sender.send("TASK_RUN_COMPLETED", {
|
|
271
|
-
execution,
|
|
272
|
-
result: {
|
|
273
|
-
...result,
|
|
274
|
-
usage: {
|
|
275
|
-
durationMs: usageSample.cpuTime,
|
|
276
|
-
},
|
|
277
|
-
metadata: runMetadataManager.stopAndReturnLastFlush(),
|
|
278
|
-
},
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
finally {
|
|
283
|
-
_execution = undefined;
|
|
284
|
-
_isRunning = false;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
catch (err) {
|
|
288
|
-
console.error("Failed to execute task", err);
|
|
289
|
-
await sender.send("TASK_RUN_COMPLETED", {
|
|
290
|
-
execution,
|
|
291
|
-
result: {
|
|
292
|
-
ok: false,
|
|
293
|
-
id: execution.run.id,
|
|
294
|
-
error: {
|
|
295
|
-
type: "INTERNAL_ERROR",
|
|
296
|
-
code: TaskRunErrorCodes.CONFIGURED_INCORRECTLY,
|
|
297
|
-
},
|
|
298
|
-
usage: {
|
|
299
|
-
durationMs: 0,
|
|
300
|
-
},
|
|
301
|
-
metadata: runMetadataManager.stopAndReturnLastFlush(),
|
|
302
|
-
},
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
},
|
|
306
|
-
TASK_RUN_COMPLETED_NOTIFICATION: async () => {
|
|
307
|
-
await unmanagedWorkerRuntime.completeWaitpoints([]);
|
|
308
|
-
},
|
|
309
|
-
WAIT_COMPLETED_NOTIFICATION: async () => {
|
|
310
|
-
await unmanagedWorkerRuntime.completeWaitpoints([]);
|
|
311
|
-
},
|
|
312
|
-
FLUSH: async ({ timeoutInMs }, sender) => {
|
|
313
|
-
await flushAll(timeoutInMs);
|
|
314
|
-
},
|
|
315
|
-
},
|
|
316
|
-
});
|
|
317
|
-
async function flushAll(timeoutInMs = 10_000) {
|
|
318
|
-
const now = performance.now();
|
|
319
|
-
await Promise.all([
|
|
320
|
-
flushUsage(timeoutInMs),
|
|
321
|
-
flushTracingSDK(timeoutInMs),
|
|
322
|
-
flushMetadata(timeoutInMs),
|
|
323
|
-
]);
|
|
324
|
-
const duration = performance.now() - now;
|
|
325
|
-
console.log(`Flushed all in ${duration}ms`);
|
|
326
|
-
}
|
|
327
|
-
async function flushUsage(timeoutInMs = 10_000) {
|
|
328
|
-
const now = performance.now();
|
|
329
|
-
await Promise.race([prodUsageManager.flush(), setTimeout(timeoutInMs)]);
|
|
330
|
-
const duration = performance.now() - now;
|
|
331
|
-
console.log(`Flushed usage in ${duration}ms`);
|
|
332
|
-
}
|
|
333
|
-
async function flushTracingSDK(timeoutInMs = 10_000) {
|
|
334
|
-
const now = performance.now();
|
|
335
|
-
await Promise.race([_tracingSDK?.flush(), setTimeout(timeoutInMs)]);
|
|
336
|
-
const duration = performance.now() - now;
|
|
337
|
-
console.log(`Flushed tracingSDK in ${duration}ms`);
|
|
338
|
-
}
|
|
339
|
-
async function flushMetadata(timeoutInMs = 10_000) {
|
|
340
|
-
const now = performance.now();
|
|
341
|
-
await Promise.race([runMetadataManager.flush(), setTimeout(timeoutInMs)]);
|
|
342
|
-
const duration = performance.now() - now;
|
|
343
|
-
console.log(`Flushed runMetadata in ${duration}ms`);
|
|
344
|
-
}
|
|
345
|
-
const unmanagedWorkerRuntime = new UnmanagedRuntimeManager();
|
|
346
|
-
runtime.setGlobalRuntimeManager(unmanagedWorkerRuntime);
|
|
347
|
-
process.title = "trigger-unmanaged-worker";
|
|
348
|
-
const heartbeatInterval = parseInt(heartbeatIntervalMs ?? "30000", 10);
|
|
349
|
-
for await (const _ of setInterval(heartbeatInterval)) {
|
|
350
|
-
if (_isRunning && _execution) {
|
|
351
|
-
try {
|
|
352
|
-
await zodIpc.send("TASK_HEARTBEAT", { id: _execution.attempt.id });
|
|
353
|
-
}
|
|
354
|
-
catch (err) {
|
|
355
|
-
console.error("Failed to send HEARTBEAT message", err);
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
console.log(`[${new Date().toISOString()}] Executor started`);
|
|
360
|
-
//# sourceMappingURL=unmanaged-run-worker.js.map
|