trigger.dev 0.0.0-v3-prerelease-20250108142426 → 0.0.0-v4-prerelease-20250917185130

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 (292) hide show
  1. package/README.md +28 -1
  2. package/dist/esm/apiClient.d.ts +158 -74
  3. package/dist/esm/apiClient.js +341 -76
  4. package/dist/esm/apiClient.js.map +1 -1
  5. package/dist/esm/build/buildWorker.d.ts +10 -6
  6. package/dist/esm/build/buildWorker.js +22 -38
  7. package/dist/esm/build/buildWorker.js.map +1 -1
  8. package/dist/esm/build/bundle.d.ts +18 -1
  9. package/dist/esm/build/bundle.js +142 -52
  10. package/dist/esm/build/bundle.js.map +1 -1
  11. package/dist/esm/build/entryPoints.d.ts +12 -0
  12. package/dist/esm/build/entryPoints.js +127 -0
  13. package/dist/esm/build/entryPoints.js.map +1 -0
  14. package/dist/esm/build/extensions.js +17 -0
  15. package/dist/esm/build/extensions.js.map +1 -1
  16. package/dist/esm/build/externals.js +184 -2
  17. package/dist/esm/build/externals.js.map +1 -1
  18. package/dist/esm/build/packageModules.d.ts +15 -5
  19. package/dist/esm/build/packageModules.js +154 -36
  20. package/dist/esm/build/packageModules.js.map +1 -1
  21. package/dist/esm/cli/common.d.ts +1 -1
  22. package/dist/esm/cli/common.js +38 -45
  23. package/dist/esm/cli/common.js.map +1 -1
  24. package/dist/esm/cli/index.js +19 -3
  25. package/dist/esm/cli/index.js.map +1 -1
  26. package/dist/esm/commands/analyze.d.ts +23 -0
  27. package/dist/esm/commands/analyze.js +122 -0
  28. package/dist/esm/commands/analyze.js.map +1 -0
  29. package/dist/esm/commands/deploy.d.ts +5 -2
  30. package/dist/esm/commands/deploy.js +271 -160
  31. package/dist/esm/commands/deploy.js.map +1 -1
  32. package/dist/esm/commands/dev.d.ts +36 -6
  33. package/dist/esm/commands/dev.js +71 -2
  34. package/dist/esm/commands/dev.js.map +1 -1
  35. package/dist/esm/commands/env.d.ts +2 -0
  36. package/dist/esm/commands/env.js +298 -0
  37. package/dist/esm/commands/env.js.map +1 -0
  38. package/dist/esm/commands/init.d.ts +9 -1
  39. package/dist/esm/commands/init.js +132 -65
  40. package/dist/esm/commands/init.js.map +1 -1
  41. package/dist/esm/commands/install-mcp.d.ts +50 -0
  42. package/dist/esm/commands/install-mcp.js +497 -0
  43. package/dist/esm/commands/install-mcp.js.map +1 -0
  44. package/dist/esm/commands/install-rules.d.ts +11 -0
  45. package/dist/esm/commands/install-rules.js +381 -0
  46. package/dist/esm/commands/install-rules.js.map +1 -0
  47. package/dist/esm/commands/list-profiles.d.ts +3 -7
  48. package/dist/esm/commands/list-profiles.js +7 -4
  49. package/dist/esm/commands/list-profiles.js.map +1 -1
  50. package/dist/esm/commands/login.d.ts +9 -5
  51. package/dist/esm/commands/login.js +40 -7
  52. package/dist/esm/commands/login.js.map +1 -1
  53. package/dist/esm/commands/logout.d.ts +1 -1
  54. package/dist/esm/commands/mcp.d.ts +38 -0
  55. package/dist/esm/commands/mcp.js +82 -0
  56. package/dist/esm/commands/mcp.js.map +1 -0
  57. package/dist/esm/commands/preview.d.ts +5 -0
  58. package/dist/esm/commands/preview.js +93 -0
  59. package/dist/esm/commands/preview.js.map +1 -0
  60. package/dist/esm/commands/promote.d.ts +3 -0
  61. package/dist/esm/commands/promote.js +86 -0
  62. package/dist/esm/commands/promote.js.map +1 -0
  63. package/dist/esm/commands/switch.d.ts +19 -0
  64. package/dist/esm/commands/switch.js +93 -0
  65. package/dist/esm/commands/switch.js.map +1 -0
  66. package/dist/esm/commands/trigger.d.ts +33 -0
  67. package/dist/esm/commands/trigger.js +88 -0
  68. package/dist/esm/commands/trigger.js.map +1 -0
  69. package/dist/esm/commands/update.d.ts +3 -2
  70. package/dist/esm/commands/update.js +23 -9
  71. package/dist/esm/commands/update.js.map +1 -1
  72. package/dist/esm/commands/whoami.d.ts +12 -1
  73. package/dist/esm/commands/whoami.js +36 -6
  74. package/dist/esm/commands/whoami.js.map +1 -1
  75. package/dist/esm/commands/workers/build.d.ts +4 -0
  76. package/dist/esm/commands/workers/build.js +345 -0
  77. package/dist/esm/commands/workers/build.js.map +1 -0
  78. package/dist/esm/commands/workers/create.d.ts +2 -0
  79. package/dist/esm/commands/workers/create.js +91 -0
  80. package/dist/esm/commands/workers/create.js.map +1 -0
  81. package/dist/esm/commands/workers/index.d.ts +2 -0
  82. package/dist/esm/commands/workers/index.js +13 -0
  83. package/dist/esm/commands/workers/index.js.map +1 -0
  84. package/dist/esm/commands/workers/list.d.ts +2 -0
  85. package/dist/esm/commands/workers/list.js +80 -0
  86. package/dist/esm/commands/workers/list.js.map +1 -0
  87. package/dist/esm/commands/workers/run.d.ts +2 -0
  88. package/dist/esm/commands/workers/run.js +105 -0
  89. package/dist/esm/commands/workers/run.js.map +1 -0
  90. package/dist/esm/config.d.ts +2 -1
  91. package/dist/esm/config.js +35 -8
  92. package/dist/esm/config.js.map +1 -1
  93. package/dist/esm/deploy/buildImage.d.ts +12 -11
  94. package/dist/esm/deploy/buildImage.js +360 -115
  95. package/dist/esm/deploy/buildImage.js.map +1 -1
  96. package/dist/esm/dev/backgroundWorker.d.ts +6 -245
  97. package/dist/esm/dev/backgroundWorker.js +11 -320
  98. package/dist/esm/dev/backgroundWorker.js.map +1 -1
  99. package/dist/esm/dev/devOutput.js +48 -9
  100. package/dist/esm/dev/devOutput.js.map +1 -1
  101. package/dist/esm/dev/devSession.d.ts +2 -1
  102. package/dist/esm/dev/devSession.js +68 -65
  103. package/dist/esm/dev/devSession.js.map +1 -1
  104. package/dist/esm/dev/devSupervisor.d.ts +12 -0
  105. package/dist/esm/dev/devSupervisor.js +568 -0
  106. package/dist/esm/dev/devSupervisor.js.map +1 -0
  107. package/dist/esm/dev/lock.d.ts +1 -0
  108. package/dist/esm/dev/lock.js +80 -0
  109. package/dist/esm/dev/lock.js.map +1 -0
  110. package/dist/esm/dev/mcpServer.d.ts +10 -0
  111. package/dist/esm/dev/mcpServer.js +201 -0
  112. package/dist/esm/dev/mcpServer.js.map +1 -0
  113. package/dist/esm/dev/taskRunProcessPool.d.ts +39 -0
  114. package/dist/esm/dev/taskRunProcessPool.js +220 -0
  115. package/dist/esm/dev/taskRunProcessPool.js.map +1 -0
  116. package/dist/esm/dev/workerRuntime.d.ts +2 -2
  117. package/dist/esm/dev/workerRuntime.js +1 -265
  118. package/dist/esm/dev/workerRuntime.js.map +1 -1
  119. package/dist/esm/entryPoints/dev-index-worker.js +45 -8
  120. package/dist/esm/entryPoints/dev-index-worker.js.map +1 -1
  121. package/dist/esm/entryPoints/dev-run-controller.d.ts +58 -0
  122. package/dist/esm/entryPoints/dev-run-controller.js +652 -0
  123. package/dist/esm/entryPoints/dev-run-controller.js.map +1 -0
  124. package/dist/esm/entryPoints/dev-run-worker.js +394 -199
  125. package/dist/esm/entryPoints/dev-run-worker.js.map +1 -1
  126. package/dist/esm/entryPoints/managed/controller.d.ts +63 -0
  127. package/dist/esm/entryPoints/managed/controller.js +502 -0
  128. package/dist/esm/entryPoints/managed/controller.js.map +1 -0
  129. package/dist/esm/entryPoints/managed/env.d.ts +170 -0
  130. package/dist/esm/entryPoints/managed/env.js +199 -0
  131. package/dist/esm/entryPoints/managed/env.js.map +1 -0
  132. package/dist/esm/entryPoints/managed/execution.d.ts +143 -0
  133. package/dist/esm/entryPoints/managed/execution.js +901 -0
  134. package/dist/esm/entryPoints/managed/execution.js.map +1 -0
  135. package/dist/esm/entryPoints/managed/logger.d.ts +30 -0
  136. package/dist/esm/entryPoints/managed/logger.js +47 -0
  137. package/dist/esm/entryPoints/managed/logger.js.map +1 -0
  138. package/dist/esm/entryPoints/managed/notifier.d.ts +30 -0
  139. package/dist/esm/entryPoints/managed/notifier.js +63 -0
  140. package/dist/esm/entryPoints/managed/notifier.js.map +1 -0
  141. package/dist/esm/entryPoints/managed/overrides.d.ts +18 -0
  142. package/dist/esm/entryPoints/managed/overrides.js +19 -0
  143. package/dist/esm/entryPoints/managed/overrides.js.map +1 -0
  144. package/dist/esm/entryPoints/managed/poller.d.ts +31 -0
  145. package/dist/esm/entryPoints/managed/poller.js +89 -0
  146. package/dist/esm/entryPoints/managed/poller.js.map +1 -0
  147. package/dist/esm/entryPoints/managed/snapshot.d.ts +54 -0
  148. package/dist/esm/entryPoints/managed/snapshot.js +293 -0
  149. package/dist/esm/entryPoints/managed/snapshot.js.map +1 -0
  150. package/dist/esm/entryPoints/managed/taskRunProcessProvider.d.ts +62 -0
  151. package/dist/esm/entryPoints/managed/taskRunProcessProvider.js +252 -0
  152. package/dist/esm/entryPoints/managed/taskRunProcessProvider.js.map +1 -0
  153. package/dist/esm/entryPoints/{deploy-index-controller.js → managed-index-controller.js} +27 -3
  154. package/dist/esm/entryPoints/managed-index-controller.js.map +1 -0
  155. package/dist/esm/entryPoints/{deploy-index-worker.js → managed-index-worker.js} +50 -21
  156. package/dist/esm/entryPoints/managed-index-worker.js.map +1 -0
  157. package/dist/esm/entryPoints/managed-run-controller.js +13 -0
  158. package/dist/esm/entryPoints/managed-run-controller.js.map +1 -0
  159. package/dist/esm/entryPoints/managed-run-worker.js +512 -0
  160. package/dist/esm/entryPoints/managed-run-worker.js.map +1 -0
  161. package/dist/esm/executions/taskRunProcess.d.ts +28 -82
  162. package/dist/esm/executions/taskRunProcess.js +130 -74
  163. package/dist/esm/executions/taskRunProcess.js.map +1 -1
  164. package/dist/esm/indexing/indexWorkerManifest.d.ts +21 -5
  165. package/dist/esm/indexing/indexWorkerManifest.js +4 -4
  166. package/dist/esm/indexing/indexWorkerManifest.js.map +1 -1
  167. package/dist/esm/indexing/registerResources.d.ts +5 -0
  168. package/dist/esm/indexing/registerResources.js +44 -0
  169. package/dist/esm/indexing/registerResources.js.map +1 -0
  170. package/dist/esm/mcp/auth.d.ts +12 -0
  171. package/dist/esm/mcp/auth.js +152 -0
  172. package/dist/esm/mcp/auth.js.map +1 -0
  173. package/dist/esm/mcp/capabilities.d.ts +4 -0
  174. package/dist/esm/mcp/capabilities.js +22 -0
  175. package/dist/esm/mcp/capabilities.js.map +1 -0
  176. package/dist/esm/mcp/config.d.ts +82 -0
  177. package/dist/esm/mcp/config.js +87 -0
  178. package/dist/esm/mcp/config.js.map +1 -0
  179. package/dist/esm/mcp/context.d.ts +45 -0
  180. package/dist/esm/mcp/context.js +129 -0
  181. package/dist/esm/mcp/context.js.map +1 -0
  182. package/dist/esm/mcp/formatters.d.ts +7 -0
  183. package/dist/esm/mcp/formatters.js +330 -0
  184. package/dist/esm/mcp/formatters.js.map +1 -0
  185. package/dist/esm/mcp/logger.d.ts +11 -0
  186. package/dist/esm/mcp/logger.js +34 -0
  187. package/dist/esm/mcp/logger.js.map +1 -0
  188. package/dist/esm/mcp/mintlifyClient.d.ts +1 -0
  189. package/dist/esm/mcp/mintlifyClient.js +65 -0
  190. package/dist/esm/mcp/mintlifyClient.js.map +1 -0
  191. package/dist/esm/mcp/schemas.d.ts +324 -0
  192. package/dist/esm/mcp/schemas.js +144 -0
  193. package/dist/esm/mcp/schemas.js.map +1 -0
  194. package/dist/esm/mcp/tools/deploys.d.ts +174 -0
  195. package/dist/esm/mcp/tools/deploys.js +161 -0
  196. package/dist/esm/mcp/tools/deploys.js.map +1 -0
  197. package/dist/esm/mcp/tools/docs.d.ts +77 -0
  198. package/dist/esm/mcp/tools/docs.js +18 -0
  199. package/dist/esm/mcp/tools/docs.js.map +1 -0
  200. package/dist/esm/mcp/tools/orgs.d.ts +172 -0
  201. package/dist/esm/mcp/tools/orgs.js +172 -0
  202. package/dist/esm/mcp/tools/orgs.js.map +1 -0
  203. package/dist/esm/mcp/tools/previewBranches.d.ts +78 -0
  204. package/dist/esm/mcp/tools/previewBranches.js +28 -0
  205. package/dist/esm/mcp/tools/previewBranches.js.map +1 -0
  206. package/dist/esm/mcp/tools/runs.d.ts +335 -0
  207. package/dist/esm/mcp/tools/runs.js +160 -0
  208. package/dist/esm/mcp/tools/runs.js.map +1 -0
  209. package/dist/esm/mcp/tools/tasks.d.ts +200 -0
  210. package/dist/esm/mcp/tools/tasks.js +117 -0
  211. package/dist/esm/mcp/tools/tasks.js.map +1 -0
  212. package/dist/esm/mcp/tools.d.ts +2 -0
  213. package/dist/esm/mcp/tools.js +40 -0
  214. package/dist/esm/mcp/tools.js.map +1 -0
  215. package/dist/esm/mcp/types.d.ts +6 -0
  216. package/dist/esm/mcp/types.js +2 -0
  217. package/dist/esm/mcp/types.js.map +1 -0
  218. package/dist/esm/mcp/utils.d.ts +89 -0
  219. package/dist/esm/mcp/utils.js +95 -0
  220. package/dist/esm/mcp/utils.js.map +1 -0
  221. package/dist/esm/rules/install.d.ts +1 -0
  222. package/dist/esm/rules/install.js +2 -0
  223. package/dist/esm/rules/install.js.map +1 -0
  224. package/dist/esm/rules/manifest.d.ts +145 -0
  225. package/dist/esm/rules/manifest.js +110 -0
  226. package/dist/esm/rules/manifest.js.map +1 -0
  227. package/dist/esm/rules/types.d.ts +3 -0
  228. package/dist/esm/rules/types.js +3 -0
  229. package/dist/esm/rules/types.js.map +1 -0
  230. package/dist/esm/utilities/accessTokens.d.ts +12 -0
  231. package/dist/esm/utilities/accessTokens.js +30 -0
  232. package/dist/esm/utilities/accessTokens.js.map +1 -0
  233. package/dist/esm/utilities/analyze.d.ts +13 -0
  234. package/dist/esm/utilities/analyze.js +463 -0
  235. package/dist/esm/utilities/analyze.js.map +1 -0
  236. package/dist/esm/utilities/cliOutput.d.ts +6 -1
  237. package/dist/esm/utilities/cliOutput.js +11 -2
  238. package/dist/esm/utilities/cliOutput.js.map +1 -1
  239. package/dist/esm/utilities/configFiles.d.ts +65 -15
  240. package/dist/esm/utilities/configFiles.js +124 -26
  241. package/dist/esm/utilities/configFiles.js.map +1 -1
  242. package/dist/esm/utilities/eventBus.d.ts +7 -3
  243. package/dist/esm/utilities/eventBus.js.map +1 -1
  244. package/dist/esm/utilities/fileSystem.d.ts +7 -1
  245. package/dist/esm/utilities/fileSystem.js +42 -4
  246. package/dist/esm/utilities/fileSystem.js.map +1 -1
  247. package/dist/esm/utilities/gitMeta.d.ts +2 -0
  248. package/dist/esm/utilities/gitMeta.js +220 -0
  249. package/dist/esm/utilities/gitMeta.js.map +1 -0
  250. package/dist/esm/utilities/githubActions.d.ts +4 -0
  251. package/dist/esm/utilities/githubActions.js +18 -0
  252. package/dist/esm/utilities/githubActions.js.map +1 -0
  253. package/dist/esm/utilities/initialBanner.js +18 -6
  254. package/dist/esm/utilities/initialBanner.js.map +1 -1
  255. package/dist/esm/utilities/localEnvVars.d.ts +3 -0
  256. package/dist/esm/utilities/localEnvVars.js +19 -0
  257. package/dist/esm/utilities/localEnvVars.js.map +1 -0
  258. package/dist/esm/utilities/sanitizeEnvVars.d.ts +16 -3
  259. package/dist/esm/utilities/sanitizeEnvVars.js +15 -0
  260. package/dist/esm/utilities/sanitizeEnvVars.js.map +1 -1
  261. package/dist/esm/utilities/session.d.ts +14 -0
  262. package/dist/esm/utilities/session.js +44 -47
  263. package/dist/esm/utilities/session.js.map +1 -1
  264. package/dist/esm/utilities/supportsHyperlinks.d.ts +15 -0
  265. package/dist/esm/utilities/supportsHyperlinks.js +122 -0
  266. package/dist/esm/utilities/supportsHyperlinks.js.map +1 -0
  267. package/dist/esm/utilities/tempDirectories.d.ts +1 -0
  268. package/dist/esm/utilities/tempDirectories.js +19 -2
  269. package/dist/esm/utilities/tempDirectories.js.map +1 -1
  270. package/dist/esm/utilities/terminalLink.d.ts +56 -0
  271. package/dist/esm/utilities/terminalLink.js +76 -0
  272. package/dist/esm/utilities/terminalLink.js.map +1 -0
  273. package/dist/esm/utilities/windows.js +65 -1
  274. package/dist/esm/utilities/windows.js.map +1 -1
  275. package/dist/esm/version.js +1 -1
  276. package/package.json +44 -25
  277. package/dist/esm/entryPoints/deploy-index-controller.js.map +0 -1
  278. package/dist/esm/entryPoints/deploy-index-worker.js.map +0 -1
  279. package/dist/esm/entryPoints/deploy-run-controller.js +0 -1099
  280. package/dist/esm/entryPoints/deploy-run-controller.js.map +0 -1
  281. package/dist/esm/entryPoints/deploy-run-worker.js +0 -366
  282. package/dist/esm/entryPoints/deploy-run-worker.js.map +0 -1
  283. package/dist/esm/indexing/registerTasks.d.ts +0 -2
  284. package/dist/esm/indexing/registerTasks.js +0 -62
  285. package/dist/esm/indexing/registerTasks.js.map +0 -1
  286. package/dist/esm/telemetry/tracing.d.ts +0 -3
  287. package/dist/esm/telemetry/tracing.js +0 -58
  288. package/dist/esm/telemetry/tracing.js.map +0 -1
  289. /package/dist/esm/entryPoints/{deploy-index-controller.d.ts → managed-index-controller.d.ts} +0 -0
  290. /package/dist/esm/entryPoints/{deploy-index-worker.d.ts → managed-index-worker.d.ts} +0 -0
  291. /package/dist/esm/entryPoints/{deploy-run-controller.d.ts → managed-run-controller.d.ts} +0 -0
  292. /package/dist/esm/entryPoints/{deploy-run-worker.d.ts → managed-run-worker.d.ts} +0 -0
@@ -0,0 +1,568 @@
1
+ import { setTimeout as awaitTimeout } from "node:timers/promises";
2
+ import { SemanticInternalAttributes, } from "@trigger.dev/core/v3";
3
+ import { eventBus } from "../utilities/eventBus.js";
4
+ import { logger } from "../utilities/logger.js";
5
+ import { resolveSourceFiles } from "../utilities/sourceFiles.js";
6
+ import { BackgroundWorker } from "./backgroundWorker.js";
7
+ import { chalkTask, cliLink, prettyError } from "../utilities/cliOutput.js";
8
+ import { DevRunController } from "../entryPoints/dev-run-controller.js";
9
+ import { io } from "socket.io-client";
10
+ import pLimit from "p-limit";
11
+ import { resolveLocalEnvVars } from "../utilities/localEnvVars.js";
12
+ import { TaskRunProcessPool } from "./taskRunProcessPool.js";
13
+ import { tryCatch } from "@trigger.dev/core/utils";
14
+ export async function startWorkerRuntime(options) {
15
+ const runtime = new DevSupervisor(options);
16
+ await runtime.init();
17
+ return runtime;
18
+ }
19
+ /**
20
+ * The DevSupervisor is used when you run the `trigger.dev dev` command (with engine 2.0+)
21
+ * It's responsible for:
22
+ * - Creating/registering BackgroundWorkers
23
+ * - Pulling runs from the queue
24
+ * - Delegating executing the runs to DevRunController
25
+ * - Receiving snapshot update pings (via socket)
26
+ */
27
+ class DevSupervisor {
28
+ options;
29
+ config;
30
+ disconnectPresence;
31
+ lastManifest;
32
+ latestWorkerId;
33
+ /** Receive notifications when runs change state */
34
+ socket;
35
+ socketIsReconnecting = false;
36
+ /** Workers are versions of the code */
37
+ workers = new Map();
38
+ /** Map of run friendly id to run controller. They process runs from start to finish. */
39
+ runControllers = new Map();
40
+ socketConnections = new Set();
41
+ runLimiter;
42
+ taskRunProcessPool;
43
+ constructor(options) {
44
+ this.options = options;
45
+ }
46
+ async init() {
47
+ logger.debug("[DevSupervisor] initialized worker runtime", { options: this.options });
48
+ //get the settings for dev
49
+ const settings = await this.options.client.dev.config();
50
+ if (!settings.success) {
51
+ throw new Error(`Failed to connect to ${this.options.client.apiURL}. Couldn't retrieve settings: ${settings.error}`);
52
+ }
53
+ logger.debug("[DevSupervisor] Got dev settings", { settings: settings.data });
54
+ this.config = settings.data;
55
+ this.options.client.dev.setEngineURL(this.config.engineUrl);
56
+ const maxConcurrentRuns = Math.min(this.config.maxConcurrentRuns, this.options.args.maxConcurrentRuns ?? this.config.maxConcurrentRuns);
57
+ logger.debug("[DevSupervisor] Using maxConcurrentRuns", { maxConcurrentRuns });
58
+ this.runLimiter = pLimit(maxConcurrentRuns);
59
+ // Initialize the task run process pool
60
+ const env = await this.#getEnvVars();
61
+ const processKeepAlive = this.options.config.processKeepAlive ?? this.options.config.experimental_processKeepAlive;
62
+ const enableProcessReuse = typeof processKeepAlive === "boolean"
63
+ ? processKeepAlive
64
+ : typeof processKeepAlive === "object"
65
+ ? processKeepAlive.enabled
66
+ : false;
67
+ const maxPoolSize = typeof processKeepAlive === "object" ? processKeepAlive.devMaxPoolSize ?? 25 : 25;
68
+ const maxExecutionsPerProcess = typeof processKeepAlive === "object" ? processKeepAlive.maxExecutionsPerProcess ?? 50 : 50;
69
+ if (enableProcessReuse) {
70
+ logger.debug("[DevSupervisor] Enabling process reuse", {
71
+ enableProcessReuse,
72
+ maxPoolSize,
73
+ maxExecutionsPerProcess,
74
+ });
75
+ }
76
+ this.taskRunProcessPool = new TaskRunProcessPool({
77
+ env,
78
+ cwd: this.options.config.workingDir,
79
+ enableProcessReuse,
80
+ maxPoolSize,
81
+ maxExecutionsPerProcess,
82
+ });
83
+ this.socket = this.#createSocket();
84
+ //start an SSE connection for presence
85
+ this.disconnectPresence = await this.#startPresenceConnection();
86
+ //start dequeuing
87
+ await this.#dequeueRuns();
88
+ }
89
+ async shutdown() {
90
+ this.disconnectPresence?.();
91
+ try {
92
+ this.socket?.close();
93
+ }
94
+ catch (error) {
95
+ logger.debug("[DevSupervisor] shutdown, socket failed to close", { error });
96
+ }
97
+ // Shutdown the task run process pool
98
+ if (this.taskRunProcessPool) {
99
+ const [shutdownError] = await tryCatch(this.taskRunProcessPool.shutdown());
100
+ if (shutdownError) {
101
+ logger.debug("[DevSupervisor] shutdown, task run process pool failed to shutdown", {
102
+ error: shutdownError,
103
+ });
104
+ }
105
+ }
106
+ }
107
+ async initializeWorker(manifest, metafile, stop) {
108
+ if (this.lastManifest && this.lastManifest.contentHash === manifest.contentHash) {
109
+ logger.debug("worker skipped", { lastManifestContentHash: this.lastManifest?.contentHash });
110
+ eventBus.emit("workerSkipped");
111
+ stop();
112
+ return;
113
+ }
114
+ const env = await this.#getEnvVars();
115
+ const backgroundWorker = new BackgroundWorker(manifest, metafile, {
116
+ env,
117
+ cwd: this.options.config.workingDir,
118
+ stop,
119
+ });
120
+ logger.debug("initializing background worker", { manifest });
121
+ await backgroundWorker.initialize();
122
+ if (!backgroundWorker.manifest) {
123
+ stop();
124
+ throw new Error("Could not initialize worker");
125
+ }
126
+ const validationIssue = validateWorkerManifest(backgroundWorker.manifest);
127
+ if (validationIssue) {
128
+ prettyError(generationValidationIssueHeader(validationIssue), generateValidationIssueMessage(validationIssue, backgroundWorker.manifest, manifest), generateValidationIssueFooter(validationIssue));
129
+ stop();
130
+ return;
131
+ }
132
+ const sourceFiles = resolveSourceFiles(manifest.sources, backgroundWorker.manifest.tasks);
133
+ const backgroundWorkerBody = {
134
+ localOnly: true,
135
+ metadata: {
136
+ packageVersion: manifest.packageVersion,
137
+ cliPackageVersion: manifest.cliPackageVersion,
138
+ tasks: backgroundWorker.manifest.tasks,
139
+ queues: backgroundWorker.manifest.queues,
140
+ contentHash: manifest.contentHash,
141
+ sourceFiles,
142
+ runtime: backgroundWorker.manifest.runtime,
143
+ runtimeVersion: backgroundWorker.manifest.runtimeVersion,
144
+ },
145
+ engine: "V2",
146
+ supportsLazyAttempts: true,
147
+ };
148
+ const backgroundWorkerRecord = await this.options.client.createBackgroundWorker(this.options.config.project, backgroundWorkerBody);
149
+ if (!backgroundWorkerRecord.success) {
150
+ stop();
151
+ throw new Error(backgroundWorkerRecord.error);
152
+ }
153
+ backgroundWorker.serverWorker = backgroundWorkerRecord.data;
154
+ this.#registerWorker(backgroundWorker);
155
+ this.lastManifest = manifest;
156
+ this.latestWorkerId = backgroundWorker.serverWorker.id;
157
+ eventBus.emit("backgroundWorkerInitialized", backgroundWorker);
158
+ }
159
+ /**
160
+ * Tries to dequeue runs for all the active versions running.
161
+ * For the latest version we will pull from the main queue, so we don't specify that.
162
+ */
163
+ async #dequeueRuns() {
164
+ if (!this.config) {
165
+ throw new Error("No config, can't dequeue runs");
166
+ }
167
+ if (!this.latestWorkerId) {
168
+ //try again later
169
+ logger.debug(`[DevSupervisor] dequeueRuns. No latest worker ID, trying again later`);
170
+ setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithoutRun);
171
+ return;
172
+ }
173
+ if (this.runLimiter &&
174
+ this.runLimiter.activeCount + this.runLimiter.pendingCount > this.runLimiter.concurrency) {
175
+ logger.debug(`[DevSupervisor] dequeueRuns. Run limit reached, trying again later`);
176
+ setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithoutRun);
177
+ return;
178
+ }
179
+ //get relevant versions
180
+ //ignore deprecated and the latest worker
181
+ const oldWorkerIds = this.#getActiveOldWorkers();
182
+ try {
183
+ //todo later we should track available resources and machines used, and pass them in here (it supports it)
184
+ const result = await this.options.client.dev.dequeue({
185
+ currentWorker: this.latestWorkerId,
186
+ oldWorkers: oldWorkerIds,
187
+ });
188
+ if (!result.success) {
189
+ logger.debug(`[DevSupervisor] dequeueRuns. Failed to dequeue runs`, {
190
+ error: result.error,
191
+ });
192
+ setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithoutRun);
193
+ return;
194
+ }
195
+ //no runs, try again later
196
+ if (result.data.dequeuedMessages.length === 0) {
197
+ // logger.debug(`No dequeue runs for versions`, {
198
+ // oldWorkerIds,
199
+ // latestWorkerId: this.latestWorkerId,
200
+ // });
201
+ setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithoutRun);
202
+ return;
203
+ }
204
+ logger.debug(`[DevSupervisor] dequeueRuns. Results`, {
205
+ dequeuedMessages: JSON.stringify(result.data.dequeuedMessages),
206
+ });
207
+ //start runs
208
+ for (const message of result.data.dequeuedMessages) {
209
+ const worker = this.workers.get(message.backgroundWorker.friendlyId);
210
+ if (!worker) {
211
+ logger.debug(`[DevSupervisor] dequeueRuns. Dequeued a run but there's no BackgroundWorker so we can't execute it`, {
212
+ run: message.run.friendlyId,
213
+ workerId: message.backgroundWorker.friendlyId,
214
+ });
215
+ //todo call the API to crash the run with a good message
216
+ continue;
217
+ }
218
+ let runController = this.runControllers.get(message.run.friendlyId);
219
+ if (runController) {
220
+ logger.debug(`[DevSupervisor] dequeueRuns. Dequeuing a run that already has a runController`, {
221
+ runController: message.run.friendlyId,
222
+ });
223
+ //todo, what do we do here?
224
+ //todo I think the run shouldn't exist and we should kill the process but TBC
225
+ continue;
226
+ }
227
+ if (!worker.serverWorker) {
228
+ logger.debug(`[DevSupervisor] dequeueRuns. Worker doesn't have a serverWorker`, {
229
+ run: message.run.friendlyId,
230
+ worker,
231
+ });
232
+ continue;
233
+ }
234
+ if (!worker.manifest) {
235
+ logger.debug(`[DevSupervisor] dequeueRuns. Worker doesn't have a manifest`, {
236
+ run: message.run.friendlyId,
237
+ worker,
238
+ });
239
+ continue;
240
+ }
241
+ if (!this.taskRunProcessPool) {
242
+ logger.debug(`[DevSupervisor] dequeueRuns. No task run process pool`, {
243
+ run: message.run.friendlyId,
244
+ worker,
245
+ });
246
+ continue;
247
+ }
248
+ logger.debug("[DevSupervisor] dequeueRuns. Creating run controller", {
249
+ run: message.run.friendlyId,
250
+ worker,
251
+ config: this.options.config,
252
+ });
253
+ const legacyDevProcessCwdBehaviour = typeof this.options.config.legacyDevProcessCwdBehaviour === "boolean"
254
+ ? this.options.config.legacyDevProcessCwdBehaviour
255
+ : true;
256
+ const cwd = legacyDevProcessCwdBehaviour === true ? undefined : worker.build.outputPath;
257
+ //new run
258
+ runController = new DevRunController({
259
+ runFriendlyId: message.run.friendlyId,
260
+ worker: worker,
261
+ httpClient: this.options.client,
262
+ logLevel: this.options.args.logLevel,
263
+ taskRunProcessPool: this.taskRunProcessPool,
264
+ cwd,
265
+ onFinished: () => {
266
+ logger.debug("[DevSupervisor] Run finished", { runId: message.run.friendlyId });
267
+ //stop the run controller, and remove it
268
+ runController?.stop();
269
+ this.runControllers.delete(message.run.friendlyId);
270
+ this.#unsubscribeFromRunNotifications(message.run.friendlyId);
271
+ //stop the worker if it is deprecated and there are no more runs
272
+ if (worker.deprecated) {
273
+ this.#tryDeleteWorker(message.backgroundWorker.friendlyId).finally(() => { });
274
+ }
275
+ },
276
+ onSubscribeToRunNotifications: async (run, snapshot) => {
277
+ this.#subscribeToRunNotifications();
278
+ },
279
+ onUnsubscribeFromRunNotifications: async (run, snapshot) => {
280
+ this.#unsubscribeFromRunNotifications(run.friendlyId);
281
+ },
282
+ });
283
+ this.runControllers.set(message.run.friendlyId, runController);
284
+ if (this.runLimiter) {
285
+ this.runLimiter(() => runController.start(message)).then(() => {
286
+ logger.debug("[DevSupervisor] Run started", { runId: message.run.friendlyId });
287
+ });
288
+ }
289
+ else {
290
+ //don't await for run completion, we want to dequeue more runs
291
+ runController.start(message).then(() => {
292
+ logger.debug("[DevSupervisor] Run started", { runId: message.run.friendlyId });
293
+ });
294
+ }
295
+ }
296
+ setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithRun);
297
+ }
298
+ catch (error) {
299
+ logger.debug(`[DevSupervisor] dequeueRuns. Error thrown`, { error });
300
+ //dequeue again
301
+ setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithoutRun);
302
+ }
303
+ }
304
+ async #startPresenceConnection() {
305
+ try {
306
+ const eventSource = this.options.client.dev.presenceConnection();
307
+ // Regular "ping" messages
308
+ eventSource.addEventListener("presence", (event) => {
309
+ // logger.debug(`Presence ping received`, { event });
310
+ });
311
+ // Connection was lost and successfully reconnected
312
+ eventSource.addEventListener("reconnect", (event) => {
313
+ logger.debug("[DevSupervisor] Presence connection restored");
314
+ });
315
+ // Handle messages that might have been missed during disconnection
316
+ eventSource.addEventListener("missed_events", (event) => {
317
+ logger.debug("[DevSupervisor] Missed some presence events during disconnection");
318
+ });
319
+ // If you need to close it manually
320
+ return () => {
321
+ logger.info("[DevSupervisor] Closing presence connection");
322
+ eventSource.close();
323
+ };
324
+ }
325
+ catch (error) {
326
+ throw error;
327
+ }
328
+ }
329
+ async #getEnvVars() {
330
+ const environmentVariablesResponse = await this.options.client.getEnvironmentVariables(this.options.config.project);
331
+ const OTEL_IMPORT_HOOK_INCLUDES = (this.options.config.instrumentedPackageNames ?? []).join(",");
332
+ return {
333
+ ...resolveLocalEnvVars(this.options.args.envFile, environmentVariablesResponse.success ? environmentVariablesResponse.data.variables : {}),
334
+ NODE_ENV: "development",
335
+ TRIGGER_API_URL: this.options.client.apiURL,
336
+ TRIGGER_SECRET_KEY: this.options.client.accessToken,
337
+ OTEL_EXPORTER_OTLP_COMPRESSION: "none",
338
+ OTEL_RESOURCE_ATTRIBUTES: JSON.stringify({
339
+ [SemanticInternalAttributes.PROJECT_DIR]: this.options.config.workingDir,
340
+ }),
341
+ OTEL_IMPORT_HOOK_INCLUDES,
342
+ };
343
+ }
344
+ async #registerWorker(worker) {
345
+ if (!worker.serverWorker) {
346
+ return;
347
+ }
348
+ //deprecate other workers
349
+ for (const [workerId, existingWorker] of this.workers.entries()) {
350
+ if (workerId === worker.serverWorker.id) {
351
+ continue;
352
+ }
353
+ existingWorker.deprecate();
354
+ this.#tryDeleteWorker(workerId).finally(() => { });
355
+ }
356
+ this.workers.set(worker.serverWorker.id, worker);
357
+ }
358
+ #createSocket() {
359
+ const wsUrl = new URL(this.options.client.apiURL);
360
+ wsUrl.pathname = "/dev-worker";
361
+ const socket = io(wsUrl.href, {
362
+ transports: ["websocket"],
363
+ extraHeaders: {
364
+ Authorization: `Bearer ${this.options.client.accessToken}`,
365
+ },
366
+ });
367
+ socket.on("run:notify", async ({ version, run }) => {
368
+ logger.debug("[DevSupervisor] Received run notification", { version, run });
369
+ this.options.client.dev.sendDebugLog(run.friendlyId, {
370
+ time: new Date(),
371
+ message: "run:notify received by runner",
372
+ });
373
+ const controller = this.runControllers.get(run.friendlyId);
374
+ if (!controller) {
375
+ logger.debug("[DevSupervisor] Ignoring notification, no local run ID", {
376
+ runId: run.friendlyId,
377
+ });
378
+ return;
379
+ }
380
+ await controller.getLatestSnapshot();
381
+ });
382
+ socket.on("connect", () => {
383
+ logger.debug("[DevSupervisor] Connected to supervisor");
384
+ if (socket.recovered || this.socketIsReconnecting) {
385
+ logger.debug("[DevSupervisor] Socket recovered");
386
+ eventBus.emit("socketConnectionReconnected", `Connection was recovered`);
387
+ }
388
+ this.socketIsReconnecting = false;
389
+ for (const controller of this.runControllers.values()) {
390
+ controller.resubscribeToRunNotifications();
391
+ }
392
+ });
393
+ socket.on("connect_error", (error) => {
394
+ logger.debug("[DevSupervisor] Connection error", { error });
395
+ });
396
+ socket.on("disconnect", (reason, description) => {
397
+ logger.debug("[DevSupervisor] socket was disconnected", {
398
+ reason,
399
+ description,
400
+ active: socket.active,
401
+ });
402
+ if (reason === "io server disconnect") {
403
+ // the disconnection was initiated by the server, you need to manually reconnect
404
+ socket.connect();
405
+ }
406
+ else {
407
+ this.socketIsReconnecting = true;
408
+ eventBus.emit("socketConnectionDisconnected", reason);
409
+ }
410
+ });
411
+ const interval = setInterval(() => {
412
+ logger.debug("[DevSupervisor] Socket connections", {
413
+ connections: Array.from(this.socketConnections),
414
+ });
415
+ }, 5000);
416
+ return socket;
417
+ }
418
+ #subscribeToRunNotifications() {
419
+ const runFriendlyIds = Array.from(this.runControllers.keys());
420
+ if (!this.socket) {
421
+ logger.debug("[DevSupervisor] Socket not connected");
422
+ return;
423
+ }
424
+ for (const id of runFriendlyIds) {
425
+ this.socketConnections.add(id);
426
+ }
427
+ logger.debug("[DevSupervisor] Subscribing to run notifications", {
428
+ runFriendlyIds,
429
+ connections: Array.from(this.socketConnections),
430
+ });
431
+ this.socket.emit("run:subscribe", { version: "1", runFriendlyIds });
432
+ }
433
+ #unsubscribeFromRunNotifications(friendlyId) {
434
+ if (!this.socket) {
435
+ logger.debug("[DevSupervisor] Socket not connected");
436
+ return;
437
+ }
438
+ this.socketConnections.delete(friendlyId);
439
+ logger.debug("[DevSupervisor] Unsubscribing from run notifications", {
440
+ runFriendlyId: friendlyId,
441
+ connections: Array.from(this.socketConnections),
442
+ });
443
+ this.socket.emit("run:unsubscribe", { version: "1", runFriendlyIds: [friendlyId] });
444
+ }
445
+ #getActiveOldWorkers() {
446
+ return Array.from(this.workers.values())
447
+ .filter((worker) => {
448
+ //exclude the latest
449
+ if (worker.serverWorker?.id === this.latestWorkerId) {
450
+ return false;
451
+ }
452
+ //if it's deprecated AND there are no executing runs, then filter it out
453
+ if (worker.deprecated && worker.serverWorker?.id) {
454
+ return this.#workerHasInProgressRuns(worker.serverWorker.id);
455
+ }
456
+ return true;
457
+ })
458
+ .map((worker) => worker.serverWorker?.id)
459
+ .filter((id) => id !== undefined);
460
+ }
461
+ #workerHasInProgressRuns(friendlyId) {
462
+ for (const controller of this.runControllers.values()) {
463
+ logger.debug("[DevSupervisor] Checking controller", {
464
+ controllerFriendlyId: controller.workerFriendlyId,
465
+ friendlyId,
466
+ });
467
+ if (controller.workerFriendlyId === friendlyId) {
468
+ return true;
469
+ }
470
+ }
471
+ return false;
472
+ }
473
+ /** Deletes the worker if there are no active runs, after a delay */
474
+ async #tryDeleteWorker(friendlyId) {
475
+ await awaitTimeout(1_000);
476
+ this.#deleteWorker(friendlyId);
477
+ }
478
+ #deleteWorker(friendlyId) {
479
+ logger.debug("[DevSupervisor] Delete worker (if relevant)", {
480
+ workerId: friendlyId,
481
+ });
482
+ const worker = this.workers.get(friendlyId);
483
+ if (!worker) {
484
+ return;
485
+ }
486
+ if (worker.serverWorker?.version) {
487
+ this.taskRunProcessPool?.deprecateVersion(worker.serverWorker?.version);
488
+ }
489
+ if (this.#workerHasInProgressRuns(friendlyId)) {
490
+ return;
491
+ }
492
+ worker.stop();
493
+ this.workers.delete(friendlyId);
494
+ }
495
+ }
496
+ function validateWorkerManifest(manifest) {
497
+ const issues = [];
498
+ if (!manifest.tasks || manifest.tasks.length === 0) {
499
+ return { type: "noTasksDefined" };
500
+ }
501
+ // Check for any duplicate task ids
502
+ const taskIds = manifest.tasks.map((task) => task.id);
503
+ const duplicateTaskIds = taskIds.filter((id, index) => taskIds.indexOf(id) !== index);
504
+ if (duplicateTaskIds.length > 0) {
505
+ return { type: "duplicateTaskId", duplicationTaskIds: duplicateTaskIds };
506
+ }
507
+ return undefined;
508
+ }
509
+ function generationValidationIssueHeader(issue) {
510
+ switch (issue.type) {
511
+ case "duplicateTaskId": {
512
+ return `Duplicate task ids detected`;
513
+ }
514
+ case "noTasksDefined": {
515
+ return `No tasks exported from your trigger files`;
516
+ }
517
+ }
518
+ }
519
+ function generateValidationIssueFooter(issue) {
520
+ switch (issue.type) {
521
+ case "duplicateTaskId": {
522
+ return cliLink("View the task docs", "https://trigger.dev/docs/tasks/overview");
523
+ }
524
+ case "noTasksDefined": {
525
+ return cliLink("View the task docs", "https://trigger.dev/docs/tasks/overview");
526
+ }
527
+ }
528
+ }
529
+ function generateValidationIssueMessage(issue, manifest, buildManifest) {
530
+ switch (issue.type) {
531
+ case "duplicateTaskId": {
532
+ return createDuplicateTaskIdOutputErrorMessage(issue.duplicationTaskIds, manifest.tasks);
533
+ }
534
+ case "noTasksDefined": {
535
+ return `
536
+ Files:
537
+ ${buildManifest.files.map((file) => file.entry).join("\n")}
538
+ Make sure you have at least one task exported from your trigger files.
539
+ You may have defined a task and forgot to add the export statement:
540
+ \`\`\`ts
541
+ import { task } from "@trigger.dev/sdk/v3";
542
+ 👇 Don't forget this
543
+ export const myTask = task({
544
+ id: "myTask",
545
+ async run() {
546
+ // Your task logic here
547
+ }
548
+ });
549
+ \`\`\`
550
+ `.replace(/^ {8}/gm, "");
551
+ }
552
+ default: {
553
+ return `Unknown validation issue: ${issue}`;
554
+ }
555
+ }
556
+ }
557
+ function createDuplicateTaskIdOutputErrorMessage(duplicateTaskIds, tasks) {
558
+ const duplicateTable = duplicateTaskIds
559
+ .map((id) => {
560
+ const $tasks = tasks.filter((task) => task.id === id);
561
+ return `\n\n${chalkTask(id)} was found in:${tasks
562
+ .map((task) => `\n${task.filePath} -> ${task.exportName}`)
563
+ .join("")}`;
564
+ })
565
+ .join("");
566
+ return `Duplicate ${chalkTask("task id")} detected:${duplicateTable}`;
567
+ }
568
+ //# sourceMappingURL=devSupervisor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devSupervisor.js","sourceRoot":"","sources":["../../../src/dev/devSupervisor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function createLockFile(cwd: string): Promise<() => void>;