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

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 +482 -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 +141 -0
  133. package/dist/esm/entryPoints/managed/execution.js +869 -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 +51 -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,80 @@
1
+ import path from "node:path";
2
+ import { readFile } from "../utilities/fileSystem.js";
3
+ import { tryCatch } from "@trigger.dev/core/utils";
4
+ import { logger } from "../utilities/logger.js";
5
+ import { mkdir, writeFile } from "node:fs/promises";
6
+ import { existsSync, unlinkSync } from "node:fs";
7
+ import { onExit } from "signal-exit";
8
+ const LOCK_FILE_NAME = "dev.lock";
9
+ export async function createLockFile(cwd) {
10
+ const currentPid = process.pid;
11
+ const lockFilePath = path.join(cwd, ".trigger", LOCK_FILE_NAME);
12
+ logger.debug("Checking for lockfile", { lockFilePath, currentPid });
13
+ const removeLockFile = () => {
14
+ try {
15
+ logger.debug("Removing lockfile", { lockFilePath });
16
+ return unlinkSync(lockFilePath);
17
+ }
18
+ catch (e) {
19
+ // This sometimes fails on Windows with EBUSY
20
+ }
21
+ };
22
+ const removeExitListener = onExit(removeLockFile);
23
+ const [, existingLockfileContents] = await tryCatch(readFile(lockFilePath));
24
+ if (existingLockfileContents) {
25
+ // Read the pid number from the lockfile
26
+ const existingPid = Number(existingLockfileContents);
27
+ logger.debug("Lockfile exists", { lockFilePath, existingPid, currentPid });
28
+ if (existingPid === currentPid) {
29
+ logger.debug("Lockfile exists and is owned by current process", {
30
+ lockFilePath,
31
+ existingPid,
32
+ currentPid,
33
+ });
34
+ return () => {
35
+ removeExitListener();
36
+ removeLockFile();
37
+ };
38
+ }
39
+ // If the pid is different, try and kill the existing pid
40
+ logger.debug("Lockfile exists and is owned by another process, killing it", {
41
+ lockFilePath,
42
+ existingPid,
43
+ currentPid,
44
+ });
45
+ try {
46
+ process.kill(existingPid);
47
+ // If it did kill the process, it will have exited, deleting the lockfile, so let's wait for that to happen
48
+ // But let's not wait forever
49
+ await new Promise((resolve, reject) => {
50
+ const timeout = setTimeout(() => {
51
+ clearInterval(interval);
52
+ reject(new Error("Timed out waiting for lockfile to be deleted"));
53
+ }, 5000);
54
+ const interval = setInterval(() => {
55
+ if (!existsSync(lockFilePath)) {
56
+ clearInterval(interval);
57
+ clearTimeout(timeout);
58
+ resolve(true);
59
+ }
60
+ }, 100);
61
+ });
62
+ }
63
+ catch (error) {
64
+ logger.debug("Failed to kill existing process, lets assume it's not running", { error });
65
+ }
66
+ }
67
+ // Now write the current pid to the lockfile
68
+ await writeFileAndEnsureDirExists(lockFilePath, currentPid.toString());
69
+ logger.debug("Lockfile created", { lockFilePath, currentPid });
70
+ return () => {
71
+ removeExitListener();
72
+ removeLockFile();
73
+ };
74
+ }
75
+ async function writeFileAndEnsureDirExists(filePath, data) {
76
+ const dir = path.dirname(filePath);
77
+ await mkdir(dir, { recursive: true });
78
+ await writeFile(filePath, data);
79
+ }
80
+ //# sourceMappingURL=lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../src/dev/lock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { CliApiClient } from "../apiClient.js";
2
+ export declare const startMcpServer: (options: {
3
+ port: number;
4
+ cliApiClient: CliApiClient;
5
+ devSession: {
6
+ dashboardUrl: string;
7
+ projectRef: string;
8
+ };
9
+ }) => Promise<void>;
10
+ export declare const stopMcpServer: () => void;
@@ -0,0 +1,201 @@
1
+ import polka from "polka";
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
4
+ import { z } from "zod";
5
+ import { logger } from "../utilities/logger.js";
6
+ import { ApiClient, RunStatus } from "@trigger.dev/core/v3";
7
+ import { eventBus } from "../utilities/eventBus.js";
8
+ let allTaskIds = [];
9
+ let projectRef;
10
+ let dashboardUrl;
11
+ // there is some overlap between `ApiClient` and `CliApiClient` which is not ideal
12
+ // we can address in this in the future, but for now we need keep using both
13
+ // as `ApiClient` exposes most of the methods needed for the MCP tools
14
+ let sdkApiClient;
15
+ let mcpTransport = null;
16
+ const server = new McpServer({
17
+ name: "trigger.dev",
18
+ version: "1.0.0",
19
+ });
20
+ // The `list-all-tasks` tool primarily helps to enable fuzzy matching of task IDs (names).
21
+ // This way, one doesn't need to specify the full task ID and rather let the LLM figure it out.
22
+ // This could be a good fit for the `resource` entity in MCP.
23
+ // Also, a custom `prompt` entity could be useful to instruct the LLM to prompt the user
24
+ // for selecting a task from a list of matching tasks, when the confidence for an exact match is low.
25
+ server.tool("list-all-tasks", "List all available task IDs in the worker.", async () => {
26
+ return {
27
+ content: [
28
+ {
29
+ text: JSON.stringify(allTaskIds, null, 2),
30
+ type: "text",
31
+ },
32
+ ],
33
+ };
34
+ });
35
+ server.tool("trigger-task", "Trigger a task", {
36
+ id: z.string().describe("The ID of the task to trigger"),
37
+ payload: z
38
+ .string()
39
+ .transform((val, ctx) => {
40
+ try {
41
+ return JSON.parse(val);
42
+ }
43
+ catch {
44
+ ctx.addIssue({
45
+ code: z.ZodIssueCode.custom,
46
+ message: "The payload must be a valid JSON string",
47
+ });
48
+ return z.NEVER;
49
+ }
50
+ })
51
+ .describe("The payload to pass to the task run, must be a valid JSON"),
52
+ // TODO: expose more parameteres from the trigger options
53
+ }, async ({ id, payload }) => {
54
+ const result = await sdkApiClient.triggerTask(id, {
55
+ payload,
56
+ });
57
+ const taskRunUrl = `${dashboardUrl}/projects/v3/${projectRef}/runs/${result.id}`;
58
+ return {
59
+ content: [
60
+ {
61
+ type: "text",
62
+ text: JSON.stringify({ ...result, taskRunUrl }, null, 2),
63
+ },
64
+ ],
65
+ };
66
+ });
67
+ server.tool("list-runs", "List task runs. This returns a paginated list which shows the details of the runs, e.g., status, attempts, cost, etc.", {
68
+ filters: z
69
+ .object({
70
+ status: RunStatus.optional().describe("The status of the run. Can be WAITING_FOR_DEPLOY, QUEUED, EXECUTING, REATTEMPTING, or FROZEN"),
71
+ taskIdentifier: z
72
+ .union([z.array(z.string()), z.string()])
73
+ .optional()
74
+ .describe("The identifier of the task that was run"),
75
+ version: z
76
+ .union([z.array(z.string()), z.string()])
77
+ .optional()
78
+ .describe("The version of the worker that executed the run"),
79
+ from: z
80
+ .union([z.date(), z.number()])
81
+ .optional()
82
+ .describe("Start date/time for filtering runs"),
83
+ to: z.union([z.date(), z.number()]).optional().describe("End date/time for filtering runs"),
84
+ period: z.string().optional().describe("Time period for filtering runs"),
85
+ bulkAction: z
86
+ .string()
87
+ .optional()
88
+ .describe("The bulk action ID to filter the runs by (e.g., bulk_1234)"),
89
+ tag: z
90
+ .union([z.array(z.string()), z.string()])
91
+ .optional()
92
+ .describe("The tags that are attached to the run"),
93
+ schedule: z
94
+ .string()
95
+ .optional()
96
+ .describe("The schedule ID to filter the runs by (e.g., schedule_1234)"),
97
+ isTest: z.boolean().optional().describe("Whether the run is a test run or not"),
98
+ batch: z.string().optional().describe("The batch identifier to filter runs by"),
99
+ })
100
+ .describe("Parameters for listing task runs"),
101
+ }, async ({ filters }) => {
102
+ const { data, pagination } = await sdkApiClient.listRuns(filters);
103
+ return {
104
+ content: [
105
+ {
106
+ type: "text",
107
+ text: JSON.stringify({ data, pagination }, null, 2),
108
+ },
109
+ ],
110
+ };
111
+ });
112
+ server.tool("get-run", "Retrieve the details of a task run, e.g., status, attempts, cost, etc.", {
113
+ runId: z.string().describe("The ID of the task run to get"),
114
+ }, async ({ runId }) => {
115
+ const result = await sdkApiClient.retrieveRun(runId);
116
+ return {
117
+ content: [
118
+ {
119
+ type: "text",
120
+ text: JSON.stringify(result, null, 2),
121
+ },
122
+ ],
123
+ };
124
+ });
125
+ server.tool("cancel-run", "Cancel an in-progress run. Runs that have already completed cannot be cancelled.", {
126
+ runId: z.string().describe("The ID of the task run to cancel"),
127
+ }, async ({ runId }) => {
128
+ const run = await sdkApiClient.retrieveRun(runId);
129
+ if (run?.status === "COMPLETED") {
130
+ return {
131
+ content: [
132
+ {
133
+ type: "text",
134
+ text: JSON.stringify({ message: "This run is already completed, no action taken.", run }, null, 2),
135
+ },
136
+ ],
137
+ };
138
+ }
139
+ await sdkApiClient.cancelRun(runId);
140
+ // we could also skip fetching the run again, but it provides more context to the LLM
141
+ // and one extra API call is no big deal
142
+ const updatedRun = await sdkApiClient.retrieveRun(runId);
143
+ return {
144
+ content: [
145
+ {
146
+ type: "text",
147
+ text: JSON.stringify({
148
+ message: "Task run was cancelled",
149
+ previousStatus: run.status,
150
+ currentStatus: updatedRun.status,
151
+ updatedTaskRun: updatedRun,
152
+ }, null, 2),
153
+ },
154
+ ],
155
+ };
156
+ });
157
+ server.tool("get-run-logs", "Retrieve the logs output of a task run.", {
158
+ runId: z.string().describe("The ID of the task run to get"),
159
+ }, async ({ runId }) => {
160
+ const result = await sdkApiClient.listRunEvents(runId);
161
+ return {
162
+ content: [
163
+ {
164
+ text: JSON.stringify(result, null, 2),
165
+ type: "text",
166
+ },
167
+ ],
168
+ };
169
+ });
170
+ const app = polka();
171
+ app.get("/sse", (_req, res) => {
172
+ mcpTransport = new SSEServerTransport("/messages", res);
173
+ server.connect(mcpTransport);
174
+ });
175
+ app.post("/messages", (req, res) => {
176
+ if (mcpTransport) {
177
+ mcpTransport.handlePostMessage(req, res);
178
+ }
179
+ });
180
+ eventBus.on("backgroundWorkerInitialized", (worker) => {
181
+ allTaskIds = worker.manifest?.tasks.map((task) => task.id) ?? [];
182
+ });
183
+ export const startMcpServer = async (options) => {
184
+ const { apiURL, accessToken } = options.cliApiClient;
185
+ if (!accessToken) {
186
+ logger.error("No access token found in the API client, failed to start the MCP server");
187
+ return;
188
+ }
189
+ sdkApiClient = new ApiClient(apiURL, accessToken);
190
+ projectRef = options.devSession.projectRef;
191
+ dashboardUrl = options.devSession.dashboardUrl;
192
+ app.listen(options.port, () => {
193
+ logger.info(`Trigger.dev MCP Server is now running on port ${options.port} ✨`);
194
+ });
195
+ };
196
+ export const stopMcpServer = () => {
197
+ app.server?.close(() => {
198
+ logger.info(`Trigger.dev MCP Server is now stopped`);
199
+ });
200
+ };
201
+ //# sourceMappingURL=mcpServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpServer.js","sourceRoot":"","sources":["../../../src/dev/mcpServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { MachinePresetResources, ServerBackgroundWorker, WorkerManifest } from "@trigger.dev/core/v3";
2
+ import { TaskRunProcess } from "../executions/taskRunProcess.js";
3
+ export type TaskRunProcessPoolOptions = {
4
+ env: Record<string, string>;
5
+ cwd: string;
6
+ enableProcessReuse: boolean;
7
+ maxPoolSize?: number;
8
+ maxExecutionsPerProcess?: number;
9
+ };
10
+ export declare class TaskRunProcessPool {
11
+ private availableProcessesByVersion;
12
+ private busyProcessesByVersion;
13
+ private readonly options;
14
+ private readonly maxPoolSize;
15
+ private readonly maxExecutionsPerProcess;
16
+ private readonly executionCountsPerProcess;
17
+ private readonly deprecatedVersions;
18
+ constructor(options: TaskRunProcessPoolOptions);
19
+ deprecateVersion(version: string): void;
20
+ getProcess(workerManifest: WorkerManifest, serverWorker: ServerBackgroundWorker, machineResources: MachinePresetResources, env?: Record<string, string>, cwd?: string): Promise<{
21
+ taskRunProcess: TaskRunProcess;
22
+ isReused: boolean;
23
+ }>;
24
+ returnProcess(process: TaskRunProcess, version: string): Promise<void>;
25
+ private findReusableProcess;
26
+ private shouldReuseProcess;
27
+ private isProcessHealthy;
28
+ private killProcess;
29
+ shutdown(): Promise<void>;
30
+ getStats(): {
31
+ availableCount: number;
32
+ busyCount: number;
33
+ totalCount: number;
34
+ byVersion: Record<string, {
35
+ available: number;
36
+ busy: number;
37
+ }>;
38
+ };
39
+ }
@@ -0,0 +1,220 @@
1
+ import { TaskRunProcess } from "../executions/taskRunProcess.js";
2
+ import { logger } from "../utilities/logger.js";
3
+ export class TaskRunProcessPool {
4
+ // Group processes by worker version
5
+ availableProcessesByVersion = new Map();
6
+ busyProcessesByVersion = new Map();
7
+ options;
8
+ maxPoolSize;
9
+ maxExecutionsPerProcess;
10
+ executionCountsPerProcess = new Map();
11
+ deprecatedVersions = new Set();
12
+ constructor(options) {
13
+ this.options = options;
14
+ this.maxPoolSize = options.maxPoolSize ?? 3;
15
+ this.maxExecutionsPerProcess = options.maxExecutionsPerProcess ?? 50;
16
+ }
17
+ deprecateVersion(version) {
18
+ this.deprecatedVersions.add(version);
19
+ logger.debug("[TaskRunProcessPool] Deprecating version", { version });
20
+ const versionProcesses = this.availableProcessesByVersion.get(version) || [];
21
+ const processesToKill = versionProcesses.filter((process) => !process.isExecuting());
22
+ Promise.all(processesToKill.map((process) => this.killProcess(process))).then(() => {
23
+ this.availableProcessesByVersion.delete(version);
24
+ });
25
+ }
26
+ async getProcess(workerManifest, serverWorker, machineResources, env, cwd) {
27
+ const version = serverWorker.version || "unknown";
28
+ // Try to reuse an existing process if enabled
29
+ if (this.options.enableProcessReuse) {
30
+ const reusableProcess = this.findReusableProcess(version);
31
+ if (reusableProcess) {
32
+ const availableCount = this.availableProcessesByVersion.get(version)?.length || 0;
33
+ const busyCount = this.busyProcessesByVersion.get(version)?.size || 0;
34
+ logger.debug("[TaskRunProcessPool] Reusing existing process", {
35
+ version,
36
+ availableCount,
37
+ busyCount,
38
+ });
39
+ // Remove from available and add to busy for this version
40
+ const availableProcesses = this.availableProcessesByVersion.get(version) || [];
41
+ this.availableProcessesByVersion.set(version, availableProcesses.filter((p) => p !== reusableProcess));
42
+ if (!this.busyProcessesByVersion.has(version)) {
43
+ this.busyProcessesByVersion.set(version, new Set());
44
+ }
45
+ this.busyProcessesByVersion.get(version).add(reusableProcess);
46
+ return { taskRunProcess: reusableProcess, isReused: true };
47
+ }
48
+ else {
49
+ const availableCount = this.availableProcessesByVersion.get(version)?.length || 0;
50
+ const busyCount = this.busyProcessesByVersion.get(version)?.size || 0;
51
+ logger.debug("[TaskRunProcessPool] No reusable process found", {
52
+ version,
53
+ availableCount,
54
+ busyCount,
55
+ });
56
+ }
57
+ }
58
+ // Create new process
59
+ const availableCount = this.availableProcessesByVersion.get(version)?.length || 0;
60
+ const busyCount = this.busyProcessesByVersion.get(version)?.size || 0;
61
+ logger.debug("[TaskRunProcessPool] Creating new process", {
62
+ version,
63
+ availableCount,
64
+ busyCount,
65
+ workerManifest,
66
+ });
67
+ const newProcess = new TaskRunProcess({
68
+ workerManifest,
69
+ env: {
70
+ ...this.options.env,
71
+ ...env,
72
+ },
73
+ serverWorker,
74
+ machineResources,
75
+ cwd: cwd ?? this.options.cwd,
76
+ }).initialize();
77
+ // Add to busy processes for this version
78
+ if (!this.busyProcessesByVersion.has(version)) {
79
+ this.busyProcessesByVersion.set(version, new Set());
80
+ }
81
+ this.busyProcessesByVersion.get(version).add(newProcess);
82
+ return { taskRunProcess: newProcess, isReused: false };
83
+ }
84
+ async returnProcess(process, version) {
85
+ // Remove from busy processes for this version
86
+ const busyProcesses = this.busyProcessesByVersion.get(version);
87
+ if (busyProcesses) {
88
+ busyProcesses.delete(process);
89
+ }
90
+ if (process.pid) {
91
+ this.executionCountsPerProcess.set(process.pid, (this.executionCountsPerProcess.get(process.pid) ?? 0) + 1);
92
+ }
93
+ if (this.shouldReuseProcess(process, version)) {
94
+ const availableCount = this.availableProcessesByVersion.get(version)?.length || 0;
95
+ const busyCount = this.busyProcessesByVersion.get(version)?.size || 0;
96
+ logger.debug("[TaskRunProcessPool] Returning process to pool", {
97
+ version,
98
+ availableCount,
99
+ busyCount,
100
+ });
101
+ // Clean up but don't kill the process
102
+ try {
103
+ await process.cleanup(false);
104
+ // Add to available processes for this version
105
+ if (!this.availableProcessesByVersion.has(version)) {
106
+ this.availableProcessesByVersion.set(version, []);
107
+ }
108
+ this.availableProcessesByVersion.get(version).push(process);
109
+ }
110
+ catch (error) {
111
+ logger.debug("[TaskRunProcessPool] Failed to cleanup process for reuse, killing it", {
112
+ error,
113
+ });
114
+ await this.killProcess(process);
115
+ }
116
+ }
117
+ else {
118
+ const availableCount = this.availableProcessesByVersion.get(version)?.length || 0;
119
+ const busyCount = this.busyProcessesByVersion.get(version)?.size || 0;
120
+ logger.debug("[TaskRunProcessPool] Killing process", {
121
+ version,
122
+ availableCount,
123
+ busyCount,
124
+ });
125
+ await this.killProcess(process);
126
+ }
127
+ }
128
+ findReusableProcess(version) {
129
+ const availableProcesses = this.availableProcessesByVersion.get(version) || [];
130
+ return availableProcesses.find((process) => this.isProcessHealthy(process));
131
+ }
132
+ shouldReuseProcess(process, version) {
133
+ const isHealthy = this.isProcessHealthy(process);
134
+ const isBeingKilled = process.isBeingKilled;
135
+ const pid = process.pid;
136
+ const executionCount = this.executionCountsPerProcess.get(pid ?? 0) ?? 0;
137
+ const availableCount = this.availableProcessesByVersion.get(version)?.length || 0;
138
+ const busyCount = this.busyProcessesByVersion.get(version)?.size || 0;
139
+ const isDeprecated = this.deprecatedVersions.has(version);
140
+ logger.debug("[TaskRunProcessPool] Checking if process should be reused", {
141
+ version,
142
+ isHealthy,
143
+ isBeingKilled,
144
+ pid,
145
+ availableCount,
146
+ busyCount,
147
+ maxPoolSize: this.maxPoolSize,
148
+ executionCount,
149
+ isDeprecated,
150
+ });
151
+ return (this.options.enableProcessReuse &&
152
+ this.isProcessHealthy(process) &&
153
+ availableCount < this.maxPoolSize &&
154
+ executionCount < this.maxExecutionsPerProcess &&
155
+ !isDeprecated);
156
+ }
157
+ isProcessHealthy(process) {
158
+ // Basic health checks - we can expand this later
159
+ return process.isHealthy;
160
+ }
161
+ async killProcess(process) {
162
+ if (!process.isHealthy) {
163
+ logger.debug("[TaskRunProcessPool] Process is not healthy, skipping cleanup", {
164
+ processId: process.pid,
165
+ });
166
+ return;
167
+ }
168
+ try {
169
+ await process.cleanup(true);
170
+ }
171
+ catch (error) {
172
+ logger.debug("[TaskRunProcessPool] Error killing process", { error });
173
+ }
174
+ }
175
+ async shutdown() {
176
+ const totalAvailable = Array.from(this.availableProcessesByVersion.values()).reduce((sum, processes) => sum + processes.length, 0);
177
+ const totalBusy = Array.from(this.busyProcessesByVersion.values()).reduce((sum, processes) => sum + processes.size, 0);
178
+ logger.debug("[TaskRunProcessPool] Shutting down pool", {
179
+ availableCount: totalAvailable,
180
+ busyCount: totalBusy,
181
+ versions: Array.from(this.availableProcessesByVersion.keys()),
182
+ });
183
+ // Kill all available processes across all versions
184
+ const allAvailableProcesses = Array.from(this.availableProcessesByVersion.values()).flat();
185
+ await Promise.all(allAvailableProcesses.map((process) => this.killProcess(process)));
186
+ this.availableProcessesByVersion.clear();
187
+ // Kill all busy processes across all versions
188
+ const allBusyProcesses = Array.from(this.busyProcessesByVersion.values())
189
+ .map((processSet) => Array.from(processSet))
190
+ .flat();
191
+ await Promise.all(allBusyProcesses.map((process) => this.killProcess(process)));
192
+ this.busyProcessesByVersion.clear();
193
+ }
194
+ getStats() {
195
+ const totalAvailable = Array.from(this.availableProcessesByVersion.values()).reduce((sum, processes) => sum + processes.length, 0);
196
+ const totalBusy = Array.from(this.busyProcessesByVersion.values()).reduce((sum, processes) => sum + processes.size, 0);
197
+ const statsByVersion = {};
198
+ for (const [version, processes] of this.availableProcessesByVersion.entries()) {
199
+ statsByVersion[version] = {
200
+ available: processes.length,
201
+ busy: this.busyProcessesByVersion.get(version)?.size || 0,
202
+ };
203
+ }
204
+ for (const [version, processes] of this.busyProcessesByVersion.entries()) {
205
+ if (!statsByVersion[version]) {
206
+ statsByVersion[version] = {
207
+ available: 0,
208
+ busy: processes.size,
209
+ };
210
+ }
211
+ }
212
+ return {
213
+ availableCount: totalAvailable,
214
+ busyCount: totalBusy,
215
+ totalCount: totalAvailable + totalBusy,
216
+ byVersion: statsByVersion,
217
+ };
218
+ }
219
+ }
220
+ //# sourceMappingURL=taskRunProcessPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskRunProcessPool.js","sourceRoot":"","sources":["../../../src/dev/taskRunProcessPool.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,10 @@ import { BuildManifest } from "@trigger.dev/core/v3";
2
2
  import { ResolvedConfig } from "@trigger.dev/core/v3/build";
3
3
  import { CliApiClient } from "../apiClient.js";
4
4
  import { DevCommandOptions } from "../commands/dev.js";
5
+ import type { Metafile } from "esbuild";
5
6
  export interface WorkerRuntime {
6
7
  shutdown(): Promise<void>;
7
- initializeWorker(manifest: BuildManifest): Promise<void>;
8
+ initializeWorker(manifest: BuildManifest, metafile: Metafile, stop: () => void): Promise<void>;
8
9
  }
9
10
  export type WorkerRuntimeOptions = {
10
11
  name: string | undefined;
@@ -13,4 +14,3 @@ export type WorkerRuntimeOptions = {
13
14
  client: CliApiClient;
14
15
  dashboardUrl: string;
15
16
  };
16
- export declare function startWorkerRuntime(options: WorkerRuntimeOptions): Promise<WorkerRuntime>;