trigger.dev 0.0.0-re2-20250203135244 → 0.0.0-re2-20250312163355

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.
Files changed (104) hide show
  1. package/README.md +31 -0
  2. package/dist/esm/apiClient.d.ts +39 -160
  3. package/dist/esm/apiClient.js +157 -35
  4. package/dist/esm/apiClient.js.map +1 -1
  5. package/dist/esm/build/buildWorker.d.ts +6 -6
  6. package/dist/esm/build/bundle.js +22 -4
  7. package/dist/esm/build/bundle.js.map +1 -1
  8. package/dist/esm/build/entryPoints.d.ts +2 -0
  9. package/dist/esm/build/entryPoints.js +27 -7
  10. package/dist/esm/build/entryPoints.js.map +1 -1
  11. package/dist/esm/build/packageModules.d.ts +0 -5
  12. package/dist/esm/build/packageModules.js +0 -45
  13. package/dist/esm/build/packageModules.js.map +1 -1
  14. package/dist/esm/cli/common.d.ts +2 -2
  15. package/dist/esm/cli/index.js +2 -0
  16. package/dist/esm/cli/index.js.map +1 -1
  17. package/dist/esm/commands/deploy.js +52 -10
  18. package/dist/esm/commands/deploy.js.map +1 -1
  19. package/dist/esm/commands/dev.d.ts +13 -4
  20. package/dist/esm/commands/dev.js +7 -1
  21. package/dist/esm/commands/dev.js.map +1 -1
  22. package/dist/esm/commands/list-profiles.d.ts +2 -2
  23. package/dist/esm/commands/login.d.ts +2 -2
  24. package/dist/esm/commands/logout.d.ts +2 -2
  25. package/dist/esm/commands/promote.d.ts +3 -0
  26. package/dist/esm/commands/promote.js +75 -0
  27. package/dist/esm/commands/promote.js.map +1 -0
  28. package/dist/esm/commands/switch.d.ts +2 -2
  29. package/dist/esm/commands/trigger.d.ts +4 -4
  30. package/dist/esm/commands/update.d.ts +2 -2
  31. package/dist/esm/commands/whoami.d.ts +2 -2
  32. package/dist/esm/config.js +15 -3
  33. package/dist/esm/config.js.map +1 -1
  34. package/dist/esm/deploy/buildImage.d.ts +3 -1
  35. package/dist/esm/deploy/buildImage.js +10 -5
  36. package/dist/esm/deploy/buildImage.js.map +1 -1
  37. package/dist/esm/dev/backgroundWorker.d.ts +2 -240
  38. package/dist/esm/dev/backgroundWorker.js +8 -304
  39. package/dist/esm/dev/backgroundWorker.js.map +1 -1
  40. package/dist/esm/dev/devOutput.js +13 -5
  41. package/dist/esm/dev/devOutput.js.map +1 -1
  42. package/dist/esm/dev/devSession.js +14 -4
  43. package/dist/esm/dev/devSession.js.map +1 -1
  44. package/dist/esm/dev/devSupervisor.js +318 -38
  45. package/dist/esm/dev/devSupervisor.js.map +1 -1
  46. package/dist/esm/dev/mcpServer.d.ts +10 -0
  47. package/dist/esm/dev/mcpServer.js +201 -0
  48. package/dist/esm/dev/mcpServer.js.map +1 -0
  49. package/dist/esm/dev/workerRuntime.d.ts +0 -1
  50. package/dist/esm/dev/workerRuntime.js +1 -270
  51. package/dist/esm/dev/workerRuntime.js.map +1 -1
  52. package/dist/esm/entryPoints/dev-run-controller.d.ts +53 -0
  53. package/dist/esm/entryPoints/dev-run-controller.js +613 -0
  54. package/dist/esm/entryPoints/dev-run-controller.js.map +1 -0
  55. package/dist/esm/entryPoints/dev-run-worker.js +225 -164
  56. package/dist/esm/entryPoints/dev-run-worker.js.map +1 -1
  57. package/dist/esm/entryPoints/managed-run-controller.js +15 -31
  58. package/dist/esm/entryPoints/managed-run-controller.js.map +1 -1
  59. package/dist/esm/entryPoints/managed-run-worker.js +16 -8
  60. package/dist/esm/entryPoints/managed-run-worker.js.map +1 -1
  61. package/dist/esm/executions/taskRunProcess.d.ts +1 -69
  62. package/dist/esm/executions/taskRunProcess.js +7 -10
  63. package/dist/esm/executions/taskRunProcess.js.map +1 -1
  64. package/dist/esm/indexing/indexWorkerManifest.d.ts +6 -3
  65. package/dist/esm/indexing/registerTasks.js +3 -0
  66. package/dist/esm/indexing/registerTasks.js.map +1 -1
  67. package/dist/esm/utilities/eventBus.d.ts +8 -5
  68. package/dist/esm/utilities/eventBus.js.map +1 -1
  69. package/dist/esm/utilities/githubActions.d.ts +4 -0
  70. package/dist/esm/utilities/githubActions.js +18 -0
  71. package/dist/esm/utilities/githubActions.js.map +1 -0
  72. package/dist/esm/utilities/logger.d.ts +1 -1
  73. package/dist/esm/utilities/sanitizeEnvVars.d.ts +16 -3
  74. package/dist/esm/utilities/sanitizeEnvVars.js +15 -0
  75. package/dist/esm/utilities/sanitizeEnvVars.js.map +1 -1
  76. package/dist/esm/version.js +1 -1
  77. package/package.json +10 -6
  78. package/dist/esm/dev/backgroundWorkerEngine2.d.ts +0 -28
  79. package/dist/esm/dev/backgroundWorkerEngine2.js +0 -251
  80. package/dist/esm/dev/backgroundWorkerEngine2.js.map +0 -1
  81. package/dist/esm/entryPoints/deploy-index-controller.d.ts +0 -1
  82. package/dist/esm/entryPoints/deploy-index-controller.js +0 -86
  83. package/dist/esm/entryPoints/deploy-index-controller.js.map +0 -1
  84. package/dist/esm/entryPoints/deploy-index-worker.d.ts +0 -1
  85. package/dist/esm/entryPoints/deploy-index-worker.js +0 -142
  86. package/dist/esm/entryPoints/deploy-index-worker.js.map +0 -1
  87. package/dist/esm/entryPoints/deploy-run-controller.d.ts +0 -1
  88. package/dist/esm/entryPoints/deploy-run-controller.js +0 -1102
  89. package/dist/esm/entryPoints/deploy-run-controller.js.map +0 -1
  90. package/dist/esm/entryPoints/deploy-run-worker.d.ts +0 -1
  91. package/dist/esm/entryPoints/deploy-run-worker.js +0 -367
  92. package/dist/esm/entryPoints/deploy-run-worker.js.map +0 -1
  93. package/dist/esm/entryPoints/unmanaged-index-controller.d.ts +0 -1
  94. package/dist/esm/entryPoints/unmanaged-index-controller.js +0 -86
  95. package/dist/esm/entryPoints/unmanaged-index-controller.js.map +0 -1
  96. package/dist/esm/entryPoints/unmanaged-index-worker.d.ts +0 -1
  97. package/dist/esm/entryPoints/unmanaged-index-worker.js +0 -128
  98. package/dist/esm/entryPoints/unmanaged-index-worker.js.map +0 -1
  99. package/dist/esm/entryPoints/unmanaged-run-controller.d.ts +0 -1
  100. package/dist/esm/entryPoints/unmanaged-run-controller.js +0 -147
  101. package/dist/esm/entryPoints/unmanaged-run-controller.js.map +0 -1
  102. package/dist/esm/entryPoints/unmanaged-run-worker.d.ts +0 -1
  103. package/dist/esm/entryPoints/unmanaged-run-worker.js +0 -360
  104. package/dist/esm/entryPoints/unmanaged-run-worker.js.map +0 -1
@@ -55,24 +55,22 @@ export function startDevOutput(options) {
55
55
  prettyError(`Build failed: ${errorText}`, stack);
56
56
  }
57
57
  };
58
- const runStarted = (...[worker, payload]) => {
58
+ const runStarted = (...[worker, execution]) => {
59
59
  if (!worker.serverWorker) {
60
60
  return;
61
61
  }
62
- const { execution } = payload;
63
62
  // ○ Mar 27 09:17:25.653 -> View logs | 20240326.20 | create-avatar | run_slufhjdfiv8ejnrkw9dsj.1
64
63
  const logsUrl = `${baseUrl}/runs/${execution.run.id}`;
65
64
  const pipe = chalkGrey("|");
66
65
  const bullet = chalkGrey("○");
67
66
  const link = chalkLink(cliLink("View logs", logsUrl));
68
- let timestampPrefix = chalkGrey(prettyPrintDate(payload.execution.attempt.startedAt));
67
+ let timestampPrefix = chalkGrey(prettyPrintDate(execution.run.startedAt));
69
68
  const workerPrefix = chalkWorker(worker.serverWorker.version);
70
69
  const taskPrefix = chalkTask(execution.task.id);
71
70
  const runId = chalkRun(`${execution.run.id}.${execution.attempt.number}`);
72
71
  logger.log(`${bullet} ${timestampPrefix} ${chalkGrey("->")} ${isLinksSupported ? `${link} ${pipe}` : ""} ${workerPrefix} ${pipe} ${taskPrefix} ${pipe} ${runId}`);
73
72
  };
74
- const runCompleted = (...[worker, payload, completion, durationMs]) => {
75
- const { execution } = payload;
73
+ const runCompleted = (...[worker, execution, completion, durationMs]) => {
76
74
  const retryingText = chalkGrey(!completion.ok && completion.skippedRetrying
77
75
  ? " (retrying skipped)"
78
76
  : !completion.ok && completion.retry !== undefined
@@ -101,6 +99,12 @@ export function startDevOutput(options) {
101
99
  const runId = chalkRun(`${execution.run.id}.${execution.attempt.number}`);
102
100
  logger.log(`${bullet} ${timestampPrefix} ${chalkGrey("->")} ${isLinksSupported ? `${link} ${pipe}` : ""} ${workerPrefix} ${pipe} ${taskPrefix} ${pipe} ${runId} ${pipe} ${resultText} ${elapsedText}${errorText}`);
103
101
  };
102
+ const socketConnectionDisconnected = (reason) => {
103
+ logger.log(chalkGrey(`○ Connection was lost: ${reason}`));
104
+ };
105
+ const socketConnectionReconnected = (reason) => {
106
+ logger.log(chalkGrey(`○ Connection was restored`));
107
+ };
104
108
  eventBus.on("rebuildStarted", rebuildStarted);
105
109
  eventBus.on("buildStarted", buildStarted);
106
110
  eventBus.on("workerSkipped", workerSkipped);
@@ -108,6 +112,8 @@ export function startDevOutput(options) {
108
112
  eventBus.on("runStarted", runStarted);
109
113
  eventBus.on("runCompleted", runCompleted);
110
114
  eventBus.on("backgroundWorkerIndexingError", backgroundWorkerIndexingError);
115
+ eventBus.on("socketConnectionDisconnected", socketConnectionDisconnected);
116
+ eventBus.on("socketConnectionReconnected", socketConnectionReconnected);
111
117
  return () => {
112
118
  eventBus.off("rebuildStarted", rebuildStarted);
113
119
  eventBus.off("buildStarted", buildStarted);
@@ -116,6 +122,8 @@ export function startDevOutput(options) {
116
122
  eventBus.off("runStarted", runStarted);
117
123
  eventBus.off("runCompleted", runCompleted);
118
124
  eventBus.off("backgroundWorkerIndexingError", backgroundWorkerIndexingError);
125
+ eventBus.off("socketConnectionDisconnected", socketConnectionDisconnected);
126
+ eventBus.off("socketConnectionReconnected", socketConnectionReconnected);
119
127
  };
120
128
  }
121
129
  function formatErrorLog(error) {
@@ -1 +1 @@
1
- {"version":3,"file":"devOutput.js","sourceRoot":"","sources":["../../../src/dev/devOutput.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devOutput.js","sourceRoot":"","sources":["../../../src/dev/devOutput.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import { logger } from "../utilities/logger.js";
7
7
  import { clearTmpDirs, getTmpDir } from "../utilities/tempDirectories.js";
8
8
  import { startDevOutput } from "./devOutput.js";
9
9
  import { startWorkerRuntime } from "./devSupervisor.js";
10
+ import { startMcpServer, stopMcpServer } from "./mcpServer.js";
10
11
  export async function startDevSession({ rawConfig, name, rawArgs, client, dashboardUrl, keepTmpFiles, }) {
11
12
  clearTmpDirs(rawConfig.workingDir);
12
13
  const destination = getTmpDir(rawConfig.workingDir, "build", keepTmpFiles);
@@ -17,6 +18,16 @@ export async function startDevSession({ rawConfig, name, rawArgs, client, dashbo
17
18
  client,
18
19
  dashboardUrl,
19
20
  });
21
+ if (rawArgs.mcp) {
22
+ await startMcpServer({
23
+ port: rawArgs.mcpPort,
24
+ cliApiClient: client,
25
+ devSession: {
26
+ dashboardUrl,
27
+ projectRef: rawConfig.project,
28
+ },
29
+ });
30
+ }
20
31
  const stopOutput = startDevOutput({
21
32
  name,
22
33
  dashboardUrl,
@@ -94,10 +105,8 @@ export async function startDevSession({ rawConfig, name, rawArgs, client, dashbo
94
105
  // First bundle, no need to update bundle
95
106
  bundled = true;
96
107
  }
97
- else {
98
- const workerDir = getTmpDir(rawConfig.workingDir, "build", keepTmpFiles);
99
- await updateBuild(result, workerDir);
100
- }
108
+ const workerDir = getTmpDir(rawConfig.workingDir, "build", keepTmpFiles);
109
+ await updateBuild(result, workerDir);
101
110
  });
102
111
  },
103
112
  };
@@ -128,6 +137,7 @@ export async function startDevSession({ rawConfig, name, rawArgs, client, dashbo
128
137
  stopBundling?.().catch((error) => { });
129
138
  runtime.shutdown().catch((error) => { });
130
139
  stopOutput();
140
+ stopMcpServer();
131
141
  },
132
142
  };
133
143
  }
@@ -1 +1 @@
1
- {"version":3,"file":"devSession.js","sourceRoot":"","sources":["../../../src/dev/devSession.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devSession.js","sourceRoot":"","sources":["../../../src/dev/devSession.ts"],"names":[],"mappings":"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"}
@@ -1,46 +1,72 @@
1
+ import { setTimeout as awaitTimeout } from "node:timers/promises";
1
2
  import { SemanticInternalAttributes, } from "@trigger.dev/core/v3";
2
3
  import { resolveDotEnvVars } from "../utilities/dotEnv.js";
3
4
  import { eventBus } from "../utilities/eventBus.js";
4
5
  import { logger } from "../utilities/logger.js";
5
6
  import { sanitizeEnvVars } from "../utilities/sanitizeEnvVars.js";
6
7
  import { resolveSourceFiles } from "../utilities/sourceFiles.js";
7
- import { BackgroundWorkerEngine2 } from "./backgroundWorkerEngine2.js";
8
- import { chalkTask } from "../utilities/cliOutput.js";
8
+ import { BackgroundWorker } from "./backgroundWorker.js";
9
+ import { chalkTask, cliLink, prettyError } from "../utilities/cliOutput.js";
10
+ import { DevRunController } from "../entryPoints/dev-run-controller.js";
11
+ import { io } from "socket.io-client";
12
+ import pLimit from "p-limit";
9
13
  export async function startWorkerRuntime(options) {
10
14
  const runtime = new DevSupervisor(options);
11
15
  await runtime.init();
12
16
  return runtime;
13
17
  }
18
+ /**
19
+ * The DevSupervisor is used when you run the `trigger.dev dev` command (with engine 2.0+)
20
+ * It's responsible for:
21
+ * - Creating/registering BackgroundWorkers
22
+ * - Pulling runs from the queue
23
+ * - Delegating executing the runs to DevRunController
24
+ * - Receiving snapshot update pings (via socket)
25
+ */
14
26
  class DevSupervisor {
15
27
  options;
16
28
  config;
17
29
  disconnectPresence;
18
30
  lastManifest;
19
31
  latestWorkerId;
32
+ /** Receive notifications when runs change state */
33
+ socket;
34
+ socketIsReconnecting = false;
35
+ /** Workers are versions of the code */
20
36
  workers = new Map();
37
+ /** Map of run friendly id to run controller. They process runs from start to finish. */
38
+ runControllers = new Map();
39
+ socketConnections = new Set();
40
+ runLimiter;
21
41
  constructor(options) {
22
42
  this.options = options;
23
43
  }
24
44
  async init() {
25
- logger.debug("initialized worker runtime", { options: this.options });
45
+ logger.debug("[DevSupervisor] initialized worker runtime", { options: this.options });
26
46
  //get the settings for dev
27
- const settings = await this.options.client.devConfig();
47
+ const settings = await this.options.client.dev.config();
28
48
  if (!settings.success) {
29
49
  throw new Error(`Failed to connect to ${this.options.client.apiURL}. Couldn't retrieve settings: ${settings.error}`);
30
50
  }
31
- logger.debug("Got dev settings", { settings: settings.data });
51
+ logger.debug("[DevSupervisor] Got dev settings", { settings: settings.data });
32
52
  this.config = settings.data;
53
+ const maxConcurrentRuns = Math.min(this.config.maxConcurrentRuns, this.options.args.maxConcurrentRuns ?? this.config.maxConcurrentRuns);
54
+ logger.debug("[DevSupervisor] Using maxConcurrentRuns", { maxConcurrentRuns });
55
+ this.runLimiter = pLimit(maxConcurrentRuns);
56
+ this.#createSocket();
33
57
  //start an SSE connection for presence
34
58
  this.disconnectPresence = await this.#startPresenceConnection();
35
59
  //start dequeuing
36
60
  await this.#dequeueRuns();
37
- //todo start dequeuing. Each time we dequeue:
38
- // Before hitting the API we will see if there are enough resources to dequeue.
39
- // 1. If there are messages we will wait a brief period of time and dequeue again
40
- // 2. If there are no messages we will wait for a longer period of time and dequeue again
41
61
  }
42
62
  async shutdown() {
43
63
  this.disconnectPresence?.();
64
+ try {
65
+ this.socket.close();
66
+ }
67
+ catch (error) {
68
+ logger.debug("[DevSupervisor] shutdown, socket failed to close", { error });
69
+ }
44
70
  }
45
71
  async initializeWorker(manifest, stop) {
46
72
  if (this.lastManifest && this.lastManifest.contentHash === manifest.contentHash) {
@@ -49,7 +75,7 @@ class DevSupervisor {
49
75
  return;
50
76
  }
51
77
  const env = await this.#getEnvVars();
52
- const backgroundWorker = new BackgroundWorkerEngine2(manifest, {
78
+ const backgroundWorker = new BackgroundWorker(manifest, {
53
79
  env,
54
80
  cwd: this.options.config.workingDir,
55
81
  stop,
@@ -59,9 +85,9 @@ class DevSupervisor {
59
85
  stop();
60
86
  throw new Error("Could not initialize worker");
61
87
  }
62
- const issues = validateWorkerManifest(backgroundWorker.manifest);
63
- if (issues.length > 0) {
64
- issues.forEach((issue) => logger.error(issue));
88
+ const validationIssue = validateWorkerManifest(backgroundWorker.manifest);
89
+ if (validationIssue) {
90
+ prettyError(generationValidationIssueHeader(validationIssue), generateValidationIssueMessage(validationIssue, backgroundWorker.manifest, manifest), generateValidationIssueFooter(validationIssue));
65
91
  stop();
66
92
  return;
67
93
  }
@@ -96,62 +122,140 @@ class DevSupervisor {
96
122
  async #dequeueRuns() {
97
123
  if (!this.latestWorkerId) {
98
124
  //try again later
125
+ logger.debug(`[DevSupervisor] dequeueRuns. No latest worker ID, trying again later`);
99
126
  setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithoutRun);
100
127
  return;
101
128
  }
129
+ if (this.runLimiter &&
130
+ this.runLimiter.activeCount + this.runLimiter.pendingCount > this.runLimiter.concurrency) {
131
+ logger.debug(`[DevSupervisor] dequeueRuns. Run limit reached, trying again later`);
132
+ setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithoutRun);
133
+ }
102
134
  //get relevant versions
103
135
  //ignore deprecated and the latest worker
104
- const oldWorkerIds = Array.from(this.workers.values())
105
- .filter((worker) => !worker.deprecated && worker.serverWorker?.id !== this.latestWorkerId)
106
- .map((worker) => worker.serverWorker?.id)
107
- .filter((id) => id !== undefined);
136
+ const oldWorkerIds = this.#getActiveOldWorkers();
108
137
  try {
109
- logger.debug(`Dequeue runs for versions`, {
110
- oldWorkerIds,
111
- latestWorkerId: this.latestWorkerId,
112
- });
113
138
  //todo later we should track available resources and machines used, and pass them in here (it supports it)
114
- const result = await this.options.client.devDequeue({
139
+ const result = await this.options.client.dev.dequeue({
115
140
  currentWorker: this.latestWorkerId,
116
141
  oldWorkers: oldWorkerIds,
117
142
  });
118
143
  if (!result.success) {
119
- logger.error(`Failed to dequeue runs`, { error: result.error });
144
+ logger.debug(`[DevSupervisor] dequeueRuns. Failed to dequeue runs`, {
145
+ error: result.error,
146
+ });
120
147
  setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithoutRun);
121
148
  return;
122
149
  }
123
150
  //no runs, try again later
124
151
  if (result.data.dequeuedMessages.length === 0) {
125
- logger.debug(`No runs dequeued`);
152
+ // logger.debug(`No dequeue runs for versions`, {
153
+ // oldWorkerIds,
154
+ // latestWorkerId: this.latestWorkerId,
155
+ // });
126
156
  setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithoutRun);
127
157
  return;
128
158
  }
129
- logger.debug(`Dequeued runs`, { dequeuedMessages: result.data.dequeuedMessages });
159
+ logger.debug(`[DevSupervisor] dequeueRuns. Results`, {
160
+ dequeuedMessages: JSON.stringify(result.data.dequeuedMessages),
161
+ });
162
+ //start runs
163
+ for (const message of result.data.dequeuedMessages) {
164
+ const worker = this.workers.get(message.backgroundWorker.friendlyId);
165
+ if (!worker) {
166
+ logger.debug(`[DevSupervisor] dequeueRuns. Dequeued a run but there's no BackgroundWorker so we can't execute it`, {
167
+ run: message.run.friendlyId,
168
+ workerId: message.backgroundWorker.friendlyId,
169
+ });
170
+ //todo call the API to crash the run with a good message
171
+ continue;
172
+ }
173
+ let runController = this.runControllers.get(message.run.friendlyId);
174
+ if (runController) {
175
+ logger.debug(`[DevSupervisor] dequeueRuns. Dequeuing a run that already has a runController`, {
176
+ runController: message.run.friendlyId,
177
+ });
178
+ //todo, what do we do here?
179
+ //todo I think the run shouldn't exist and we should kill the process but TBC
180
+ continue;
181
+ }
182
+ if (!worker.serverWorker) {
183
+ logger.debug(`[DevSupervisor] dequeueRuns. Worker doesn't have a serverWorker`, {
184
+ run: message.run.friendlyId,
185
+ worker,
186
+ });
187
+ continue;
188
+ }
189
+ if (!worker.manifest) {
190
+ logger.debug(`[DevSupervisor] dequeueRuns. Worker doesn't have a manifest`, {
191
+ run: message.run.friendlyId,
192
+ worker,
193
+ });
194
+ continue;
195
+ }
196
+ //new run
197
+ runController = new DevRunController({
198
+ runFriendlyId: message.run.friendlyId,
199
+ worker: worker,
200
+ httpClient: this.options.client,
201
+ logLevel: this.options.args.logLevel,
202
+ onFinished: () => {
203
+ logger.debug("[DevSupervisor] Run finished", { runId: message.run.friendlyId });
204
+ //stop the run controller, and remove it
205
+ runController?.stop();
206
+ this.runControllers.delete(message.run.friendlyId);
207
+ this.#unsubscribeFromRunNotifications(message.run.friendlyId);
208
+ //stop the worker if it is deprecated and there are no more runs
209
+ if (worker.deprecated) {
210
+ this.#tryDeleteWorker(message.backgroundWorker.friendlyId).finally(() => { });
211
+ }
212
+ },
213
+ onSubscribeToRunNotifications: async (run, snapshot) => {
214
+ this.#subscribeToRunNotifications();
215
+ },
216
+ onUnsubscribeFromRunNotifications: async (run, snapshot) => {
217
+ this.#unsubscribeFromRunNotifications(run.friendlyId);
218
+ },
219
+ });
220
+ this.runControllers.set(message.run.friendlyId, runController);
221
+ if (this.runLimiter) {
222
+ this.runLimiter(() => runController.start(message)).then(() => {
223
+ logger.debug("[DevSupervisor] Run started", { runId: message.run.friendlyId });
224
+ });
225
+ }
226
+ else {
227
+ //don't await for run completion, we want to dequeue more runs
228
+ runController.start(message).then(() => {
229
+ logger.debug("[DevSupervisor] Run started", { runId: message.run.friendlyId });
230
+ });
231
+ }
232
+ }
130
233
  setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithRun);
131
234
  }
132
235
  catch (error) {
236
+ logger.debug(`[DevSupervisor] dequeueRuns. Error thrown`, { error });
133
237
  //dequeue again
134
238
  setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithoutRun);
135
239
  }
136
240
  }
137
241
  async #startPresenceConnection() {
138
242
  try {
139
- const eventSource = await this.options.client.devPresenceConnection();
243
+ const eventSource = await this.options.client.dev.presenceConnection();
140
244
  // Regular "ping" messages
141
245
  eventSource.addEventListener("presence", (event) => {
142
246
  // logger.debug(`Presence ping received`, { event });
143
247
  });
144
248
  // Connection was lost and successfully reconnected
145
249
  eventSource.addEventListener("reconnect", (event) => {
146
- logger.info("Presence connection restored");
250
+ logger.debug("[DevSupervisor] Presence connection restored");
147
251
  });
148
252
  // Handle messages that might have been missed during disconnection
149
253
  eventSource.addEventListener("missed_events", (event) => {
150
- logger.warn("Missed some presence events during disconnection");
254
+ logger.debug("[DevSupervisor] Missed some presence events during disconnection");
151
255
  });
152
256
  // If you need to close it manually
153
257
  return () => {
154
- logger.info("Closing presence connection");
258
+ logger.info("[DevSupervisor] Closing presence connection");
155
259
  eventSource.close();
156
260
  };
157
261
  }
@@ -187,9 +291,143 @@ class DevSupervisor {
187
291
  continue;
188
292
  }
189
293
  existingWorker.deprecate();
294
+ this.#tryDeleteWorker(workerId).finally(() => { });
190
295
  }
191
296
  this.workers.set(worker.serverWorker.id, worker);
192
297
  }
298
+ #createSocket() {
299
+ const wsUrl = new URL(this.options.client.apiURL);
300
+ wsUrl.pathname = "/dev-worker";
301
+ this.socket = io(wsUrl.href, {
302
+ transports: ["websocket"],
303
+ extraHeaders: {
304
+ Authorization: `Bearer ${this.options.client.accessToken}`,
305
+ },
306
+ });
307
+ this.socket.on("run:notify", async ({ version, run }) => {
308
+ logger.debug("[DevSupervisor] Received run notification", { version, run });
309
+ this.options.client.dev.sendDebugLog(run.friendlyId, {
310
+ time: new Date(),
311
+ message: "run:notify received by runner",
312
+ });
313
+ const controller = this.runControllers.get(run.friendlyId);
314
+ if (!controller) {
315
+ logger.debug("[DevSupervisor] Ignoring notification, no local run ID", {
316
+ runId: run.friendlyId,
317
+ });
318
+ return;
319
+ }
320
+ await controller.getLatestSnapshot();
321
+ });
322
+ this.socket.on("connect", () => {
323
+ logger.debug("[DevSupervisor] Connected to supervisor");
324
+ if (this.socket.recovered || this.socketIsReconnecting) {
325
+ logger.debug("[DevSupervisor] Socket recovered");
326
+ eventBus.emit("socketConnectionReconnected", `Connection was recovered`);
327
+ }
328
+ this.socketIsReconnecting = false;
329
+ for (const controller of this.runControllers.values()) {
330
+ controller.resubscribeToRunNotifications();
331
+ }
332
+ });
333
+ this.socket.on("connect_error", (error) => {
334
+ logger.debug("[DevSupervisor] Connection error", { error });
335
+ });
336
+ this.socket.on("disconnect", (reason, description) => {
337
+ logger.debug("[DevSupervisor] socket was disconnected", {
338
+ reason,
339
+ description,
340
+ active: this.socket.active,
341
+ });
342
+ if (reason === "io server disconnect") {
343
+ // the disconnection was initiated by the server, you need to manually reconnect
344
+ this.socket.connect();
345
+ }
346
+ else {
347
+ this.socketIsReconnecting = true;
348
+ eventBus.emit("socketConnectionDisconnected", reason);
349
+ }
350
+ });
351
+ const interval = setInterval(() => {
352
+ logger.debug("[DevSupervisor] Socket connections", {
353
+ connections: Array.from(this.socketConnections),
354
+ });
355
+ }, 5000);
356
+ }
357
+ #subscribeToRunNotifications() {
358
+ const runFriendlyIds = Array.from(this.runControllers.keys());
359
+ if (!this.socket) {
360
+ logger.debug("[DevSupervisor] Socket not connected");
361
+ return;
362
+ }
363
+ for (const id of runFriendlyIds) {
364
+ this.socketConnections.add(id);
365
+ }
366
+ logger.debug("[DevSupervisor] Subscribing to run notifications", {
367
+ runFriendlyIds,
368
+ connections: Array.from(this.socketConnections),
369
+ });
370
+ this.socket.emit("run:subscribe", { version: "1", runFriendlyIds });
371
+ }
372
+ #unsubscribeFromRunNotifications(friendlyId) {
373
+ if (!this.socket) {
374
+ logger.debug("[DevSupervisor] Socket not connected");
375
+ return;
376
+ }
377
+ this.socketConnections.delete(friendlyId);
378
+ logger.debug("[DevSupervisor] Unsubscribing from run notifications", {
379
+ runFriendlyId: friendlyId,
380
+ connections: Array.from(this.socketConnections),
381
+ });
382
+ this.socket.emit("run:unsubscribe", { version: "1", runFriendlyIds: [friendlyId] });
383
+ }
384
+ #getActiveOldWorkers() {
385
+ return Array.from(this.workers.values())
386
+ .filter((worker) => {
387
+ //exclude the latest
388
+ if (worker.serverWorker?.id === this.latestWorkerId) {
389
+ return false;
390
+ }
391
+ //if it's deprecated AND there are no executing runs, then filter it out
392
+ if (worker.deprecated && worker.serverWorker?.id) {
393
+ return this.#workerHasInProgressRuns(worker.serverWorker.id);
394
+ }
395
+ return true;
396
+ })
397
+ .map((worker) => worker.serverWorker?.id)
398
+ .filter((id) => id !== undefined);
399
+ }
400
+ #workerHasInProgressRuns(friendlyId) {
401
+ for (const controller of this.runControllers.values()) {
402
+ logger.debug("[DevSupervisor] Checking controller", {
403
+ controllerFriendlyId: controller.workerFriendlyId,
404
+ friendlyId,
405
+ });
406
+ if (controller.workerFriendlyId === friendlyId) {
407
+ return true;
408
+ }
409
+ }
410
+ return false;
411
+ }
412
+ /** Deletes the worker if there are no active runs, after a delay */
413
+ async #tryDeleteWorker(friendlyId) {
414
+ await awaitTimeout(1_000);
415
+ this.#deleteWorker(friendlyId);
416
+ }
417
+ #deleteWorker(friendlyId) {
418
+ logger.debug("[DevSupervisor] Delete worker (if relevant)", {
419
+ workerId: friendlyId,
420
+ });
421
+ const worker = this.workers.get(friendlyId);
422
+ if (!worker) {
423
+ return;
424
+ }
425
+ if (this.#workerHasInProgressRuns(friendlyId)) {
426
+ return;
427
+ }
428
+ worker.stop();
429
+ this.workers.delete(friendlyId);
430
+ }
193
431
  }
194
432
  function gatherProcessEnv() {
195
433
  const $env = {
@@ -202,15 +440,63 @@ function gatherProcessEnv() {
202
440
  function validateWorkerManifest(manifest) {
203
441
  const issues = [];
204
442
  if (!manifest.tasks || manifest.tasks.length === 0) {
205
- issues.push("No tasks defined. Make sure you are exporting tasks.");
443
+ return { type: "noTasksDefined" };
206
444
  }
207
445
  // Check for any duplicate task ids
208
446
  const taskIds = manifest.tasks.map((task) => task.id);
209
447
  const duplicateTaskIds = taskIds.filter((id, index) => taskIds.indexOf(id) !== index);
210
448
  if (duplicateTaskIds.length > 0) {
211
- issues.push(createDuplicateTaskIdOutputErrorMessage(duplicateTaskIds, manifest.tasks));
449
+ return { type: "duplicateTaskId", duplicationTaskIds: duplicateTaskIds };
450
+ }
451
+ return undefined;
452
+ }
453
+ function generationValidationIssueHeader(issue) {
454
+ switch (issue.type) {
455
+ case "duplicateTaskId": {
456
+ return `Duplicate task ids detected`;
457
+ }
458
+ case "noTasksDefined": {
459
+ return `No tasks exported from your trigger files`;
460
+ }
461
+ }
462
+ }
463
+ function generateValidationIssueFooter(issue) {
464
+ switch (issue.type) {
465
+ case "duplicateTaskId": {
466
+ return cliLink("View the task docs", "https://trigger.dev/docs/tasks/overview");
467
+ }
468
+ case "noTasksDefined": {
469
+ return cliLink("View the task docs", "https://trigger.dev/docs/tasks/overview");
470
+ }
471
+ }
472
+ }
473
+ function generateValidationIssueMessage(issue, manifest, buildManifest) {
474
+ switch (issue.type) {
475
+ case "duplicateTaskId": {
476
+ return createDuplicateTaskIdOutputErrorMessage(issue.duplicationTaskIds, manifest.tasks);
477
+ }
478
+ case "noTasksDefined": {
479
+ return `
480
+ Files:
481
+ ${buildManifest.files.map((file) => file.entry).join("\n")}
482
+ Make sure you have at least one task exported from your trigger files.
483
+ You may have defined a task and forgot to add the export statement:
484
+ \`\`\`ts
485
+ import { task } from "@trigger.dev/sdk/v3";
486
+ 👇 Don't forget this
487
+ export const myTask = task({
488
+ id: "myTask",
489
+ async run() {
490
+ // Your task logic here
491
+ }
492
+ });
493
+ \`\`\`
494
+ `.replace(/^ {8}/gm, "");
495
+ }
496
+ default: {
497
+ return `Unknown validation issue: ${issue}`;
498
+ }
212
499
  }
213
- return issues;
214
500
  }
215
501
  function createDuplicateTaskIdOutputErrorMessage(duplicateTaskIds, tasks) {
216
502
  const duplicateTable = duplicateTaskIds
@@ -223,10 +509,4 @@ function createDuplicateTaskIdOutputErrorMessage(duplicateTaskIds, tasks) {
223
509
  .join("");
224
510
  return `Duplicate ${chalkTask("task id")} detected:${duplicateTable}`;
225
511
  }
226
- //todo ignore the dev queue pulling route in the rate limiter
227
- //todo the queue pull endpoint should just update the presence
228
- //todo ignore the dev presence
229
- //we will need to hit the presence endpoint if we aren't going to dequeue because of CPU/RAM
230
- //CLI hits an SSE endpoint, it will periodically update a last seen value in Redis. Look at how to do presence Redis.
231
- //Frontend will subscribe to Redis for this.
232
512
  //# sourceMappingURL=devSupervisor.js.map