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,381 @@
1
+ import { confirm, intro, isCancel, log, multiselect, outro } from "@clack/prompts";
2
+ import chalk from "chalk";
3
+ import { Option as CommandOption } from "commander";
4
+ import { join } from "node:path";
5
+ import * as semver from "semver";
6
+ import { z } from "zod";
7
+ import { OutroCommandError, wrapCommandAction } from "../cli/common.js";
8
+ import { loadConfig } from "../config.js";
9
+ import { GithubRulesManifestLoader, loadRulesManifest, LocalRulesManifestLoader, } from "../rules/manifest.js";
10
+ import { cliLink } from "../utilities/cliOutput.js";
11
+ import { readConfigHasSeenRulesInstallPrompt, readConfigLastRulesInstallPromptVersion, writeConfigHasSeenRulesInstallPrompt, writeConfigLastRulesInstallPromptVersion, } from "../utilities/configFiles.js";
12
+ import { pathExists, readFile, safeWriteFile } from "../utilities/fileSystem.js";
13
+ import { printStandloneInitialBanner } from "../utilities/initialBanner.js";
14
+ import { logger } from "../utilities/logger.js";
15
+ import { tryCatch } from "@trigger.dev/core/utils";
16
+ const targets = [
17
+ "claude-code",
18
+ "cursor",
19
+ "vscode",
20
+ "windsurf",
21
+ "gemini-cli",
22
+ "cline",
23
+ "agents.md",
24
+ "amp",
25
+ "kilo",
26
+ "ruler",
27
+ ];
28
+ const targetLabels = {
29
+ "claude-code": "Claude Code",
30
+ cursor: "Cursor",
31
+ vscode: "VSCode",
32
+ windsurf: "Windsurf",
33
+ "gemini-cli": "Gemini CLI",
34
+ cline: "Cline",
35
+ "agents.md": "AGENTS.md (OpenAI Codex CLI, Jules, OpenCode)",
36
+ amp: "Sourcegraph AMP",
37
+ kilo: "Kilo Code",
38
+ ruler: "Ruler",
39
+ };
40
+ const InstallRulesCommandOptions = z.object({
41
+ target: z.enum(targets).array().optional(),
42
+ manifestPath: z.string().optional(),
43
+ branch: z.string().optional(),
44
+ logLevel: z.enum(["debug", "info", "log", "warn", "error", "none"]).optional(),
45
+ forceWizard: z.boolean().optional(),
46
+ });
47
+ export function configureInstallRulesCommand(program) {
48
+ return program
49
+ .command("install-rules")
50
+ .description("Install the Trigger.dev Agent rules files")
51
+ .option("--target <targets...>", "Choose the target (or targets) to install the Trigger.dev rules into. We currently support: " +
52
+ targets.join(", "))
53
+ .option("-l, --log-level <level>", "The CLI log level to use (debug, info, log, warn, error, none). This does not effect the log level of your trigger.dev tasks.", "log")
54
+ .addOption(new CommandOption("--manifest-path <path>", "The path to the rules manifest file. This is useful if you want to install the rules from a local file.").hideHelp())
55
+ .addOption(new CommandOption("--branch <branch>", "The branch to install the rules from, the default is main").hideHelp())
56
+ .addOption(new CommandOption("--force-wizard", "Force the rules install wizard to run even if the rules have already been installed.").hideHelp())
57
+ .action(async (options) => {
58
+ await printStandloneInitialBanner(true);
59
+ await installRulesCommand(options);
60
+ });
61
+ }
62
+ export async function installRulesCommand(options) {
63
+ return await wrapCommandAction("installRulesCommand", InstallRulesCommandOptions, options, async (opts) => {
64
+ if (opts.logLevel) {
65
+ logger.loggerLevel = opts.logLevel;
66
+ }
67
+ return await _installRulesCommand(opts);
68
+ });
69
+ }
70
+ async function _installRulesCommand(options) {
71
+ if (options.forceWizard) {
72
+ await initiateRulesInstallWizard(options);
73
+ return;
74
+ }
75
+ intro("Welcome to the Trigger.dev Agent rules install wizard ");
76
+ const manifestLoader = options.manifestPath
77
+ ? new LocalRulesManifestLoader(options.manifestPath)
78
+ : new GithubRulesManifestLoader(options.branch ?? "main");
79
+ const manifest = await loadRulesManifest(manifestLoader);
80
+ writeConfigLastRulesInstallPromptVersion(manifest.currentVersion);
81
+ writeConfigHasSeenRulesInstallPrompt(true);
82
+ await installRules(manifest, options);
83
+ outro("You're all set! ");
84
+ }
85
+ export async function initiateRulesInstallWizard(options) {
86
+ const manifestLoader = options.manifestPath
87
+ ? new LocalRulesManifestLoader(options.manifestPath)
88
+ : new GithubRulesManifestLoader(options.branch ?? "main");
89
+ const manifest = await loadRulesManifest(manifestLoader);
90
+ const hasSeenRulesInstallPrompt = readConfigHasSeenRulesInstallPrompt();
91
+ if (!hasSeenRulesInstallPrompt) {
92
+ writeConfigHasSeenRulesInstallPrompt(true);
93
+ writeConfigLastRulesInstallPromptVersion(manifest.currentVersion);
94
+ const installChoice = await confirm({
95
+ message: "Would you like to install the Trigger.dev code agent rules?",
96
+ initialValue: true,
97
+ });
98
+ const skipInstall = isCancel(installChoice) || !installChoice;
99
+ if (skipInstall) {
100
+ return;
101
+ }
102
+ await installRules(manifest, options);
103
+ return;
104
+ }
105
+ const lastRulesInstallPromptVersion = readConfigLastRulesInstallPromptVersion();
106
+ if (!lastRulesInstallPromptVersion) {
107
+ writeConfigHasSeenRulesInstallPrompt(true);
108
+ writeConfigLastRulesInstallPromptVersion(manifest.currentVersion);
109
+ const installChoice = await confirm({
110
+ message: `A new version of the trigger.dev agent rules is available (${manifest.currentVersion}). Do you want to install it?`,
111
+ initialValue: true,
112
+ });
113
+ const skipInstall = isCancel(installChoice) || !installChoice;
114
+ if (skipInstall) {
115
+ return;
116
+ }
117
+ await installRules(manifest, options);
118
+ return;
119
+ }
120
+ if (semver.gt(manifest.currentVersion, lastRulesInstallPromptVersion)) {
121
+ writeConfigHasSeenRulesInstallPrompt(true);
122
+ writeConfigLastRulesInstallPromptVersion(manifest.currentVersion);
123
+ const confirmed = await confirm({
124
+ message: `A new version of the trigger.dev agent rules is available (${lastRulesInstallPromptVersion} → ${chalk.greenBright(manifest.currentVersion)}). Do you want to install it?`,
125
+ initialValue: true,
126
+ });
127
+ if (isCancel(confirmed) || !confirmed) {
128
+ return;
129
+ }
130
+ await installRules(manifest, options);
131
+ }
132
+ return;
133
+ }
134
+ async function installRules(manifest, opts) {
135
+ const [_, config] = await tryCatch(loadConfig({
136
+ cwd: process.cwd(),
137
+ }));
138
+ const currentVersion = await manifest.getCurrentVersion();
139
+ const targetNames = await resolveTargets(opts);
140
+ if (targetNames.length === 1 && targetNames.includes("unsupported")) {
141
+ handleUnsupportedTargetOnly(opts);
142
+ return;
143
+ }
144
+ const results = [];
145
+ for (const targetName of targetNames) {
146
+ const result = await installRulesForTarget(targetName, currentVersion, opts, config ?? undefined);
147
+ if (result) {
148
+ results.push(result);
149
+ }
150
+ }
151
+ if (results.length > 0) {
152
+ log.step("Installed the following rules files:");
153
+ for (const r of results) {
154
+ const installationsByLocation = r.installations.reduce((acc, i) => {
155
+ if (!acc[i.location]) {
156
+ acc[i.location] = [];
157
+ }
158
+ acc[i.location].push(i.option);
159
+ return acc;
160
+ }, {});
161
+ const locationOutput = Object.entries(installationsByLocation).map(([location]) => `${chalk.greenBright(location)}`);
162
+ for (const message of locationOutput) {
163
+ log.info(message);
164
+ }
165
+ }
166
+ log.info(`${cliLink("Learn how to use our rules", "https://trigger.dev/docs/agents/rules/overview")}`);
167
+ }
168
+ }
169
+ function handleUnsupportedTargetOnly(options) {
170
+ log.info(`${cliLink("Install the rules manually", "https://trigger.dev/docs/agents/rules/overview")}`);
171
+ return [];
172
+ }
173
+ async function installRulesForTarget(targetName, currentVersion, options, config) {
174
+ if (targetName === "unsupported") {
175
+ // This should not happen as unsupported targets are handled separately
176
+ // but if it does, provide helpful output
177
+ log.message(`${chalk.yellow("⚠")} Skipping unsupported target - see manual configuration above`);
178
+ return;
179
+ }
180
+ const result = await performInstallForTarget(targetName, currentVersion, options, config);
181
+ return result;
182
+ }
183
+ async function performInstallForTarget(targetName, currentVersion, cmdOptions, config) {
184
+ const options = await resolveOptionsForTarget(targetName, currentVersion, cmdOptions);
185
+ const installations = await performInstallOptionsForTarget(targetName, options, config);
186
+ return {
187
+ targetName,
188
+ installations,
189
+ };
190
+ }
191
+ async function performInstallOptionsForTarget(targetName, options, config) {
192
+ const results = [];
193
+ for (const option of options) {
194
+ const result = await performInstallOptionForTarget(targetName, option, config);
195
+ results.push(result);
196
+ }
197
+ return results;
198
+ }
199
+ async function performInstallOptionForTarget(targetName, option, config) {
200
+ switch (option.installStrategy) {
201
+ case "default": {
202
+ return performInstallDefaultOptionForTarget(targetName, option, config);
203
+ }
204
+ case "claude-code-subagent": {
205
+ return performInstallClaudeCodeSubagentOptionForTarget(option);
206
+ }
207
+ default: {
208
+ throw new Error(`Unknown install strategy: ${option.installStrategy}`);
209
+ }
210
+ }
211
+ }
212
+ async function performInstallDefaultOptionForTarget(targetName, option, config) {
213
+ // Get the path to the rules file
214
+ const rulesFilePath = resolveRulesFilePathForTargetOption(targetName, option);
215
+ const rulesFileContents = await resolveRulesFileContentsForTarget(targetName, option, config);
216
+ const mergeStrategy = await resolveRulesFileMergeStrategyForTarget(targetName);
217
+ // Try and read the existing rules file
218
+ const rulesFileAbsolutePath = join(process.cwd(), rulesFilePath);
219
+ await writeToFile(rulesFileAbsolutePath, rulesFileContents, mergeStrategy, option.name);
220
+ return { option, location: rulesFilePath };
221
+ }
222
+ async function writeToFile(path, contents, mergeStrategy = "overwrite", sectionName) {
223
+ const exists = await pathExists(path);
224
+ if (exists) {
225
+ switch (mergeStrategy) {
226
+ case "overwrite": {
227
+ await safeWriteFile(path, contents);
228
+ break;
229
+ }
230
+ case "replace": {
231
+ const existingContents = await readFile(path);
232
+ const pattern = new RegExp(`<!-- TRIGGER.DEV ${sectionName} START -->.*?<!-- TRIGGER.DEV ${sectionName} END -->`, "gs");
233
+ // If the section name is not found, just append the new content
234
+ if (!pattern.test(existingContents)) {
235
+ await safeWriteFile(path, existingContents + "\n\n" + contents);
236
+ break;
237
+ }
238
+ const updatedContent = existingContents.replace(pattern, contents);
239
+ await safeWriteFile(path, updatedContent);
240
+ break;
241
+ }
242
+ default: {
243
+ throw new Error(`Unknown merge strategy: ${mergeStrategy}`);
244
+ }
245
+ }
246
+ }
247
+ else {
248
+ await safeWriteFile(path, contents);
249
+ }
250
+ }
251
+ async function performInstallClaudeCodeSubagentOptionForTarget(option) {
252
+ const rulesFilePath = ".claude/agents/trigger-dev-task-writer.md";
253
+ const rulesFileContents = option.contents;
254
+ await writeToFile(rulesFilePath, rulesFileContents, "overwrite", option.name);
255
+ return { option, location: rulesFilePath };
256
+ }
257
+ function resolveRulesFilePathForTargetOption(targetName, option) {
258
+ if (option.installStrategy === "claude-code-subagent") {
259
+ return ".claude/agents/trigger-dev-task-writer.md";
260
+ }
261
+ switch (targetName) {
262
+ case "claude-code": {
263
+ return "CLAUDE.md";
264
+ }
265
+ case "cursor": {
266
+ return `.cursor/rules/trigger.${option.name}.mdc`;
267
+ }
268
+ case "vscode": {
269
+ return `.github/instructions/trigger-${option.name}.instructions.md`;
270
+ }
271
+ case "windsurf": {
272
+ return `.windsurf/rules/trigger-${option.name}.md`;
273
+ }
274
+ case "gemini-cli": {
275
+ return `GEMINI.md`;
276
+ }
277
+ case "cline": {
278
+ return `.clinerules/trigger-${option.name}.md`;
279
+ }
280
+ case "agents.md": {
281
+ return "AGENTS.md";
282
+ }
283
+ case "amp": {
284
+ return "AGENT.md";
285
+ }
286
+ case "kilo": {
287
+ return `.kilocode/rules/trigger-${option.name}.md`;
288
+ }
289
+ case "ruler": {
290
+ return `.ruler/trigger-${option.name}.md`;
291
+ }
292
+ default: {
293
+ throw new Error(`Unknown target: ${targetName}`);
294
+ }
295
+ }
296
+ }
297
+ async function resolveRulesFileMergeStrategyForTarget(targetName) {
298
+ switch (targetName) {
299
+ case "amp":
300
+ case "agents.md":
301
+ case "gemini-cli":
302
+ case "claude-code": {
303
+ return "replace";
304
+ }
305
+ default: {
306
+ return "overwrite";
307
+ }
308
+ }
309
+ }
310
+ async function resolveRulesFileContentsForTarget(targetName, option, config) {
311
+ switch (targetName) {
312
+ case "cursor": {
313
+ return $output(frontmatter({
314
+ description: option.label,
315
+ globs: option.applyTo ?? "**/trigger/**/*.ts",
316
+ alwaysApply: false,
317
+ }), option.contents);
318
+ }
319
+ case "vscode": {
320
+ return $output(frontmatter({
321
+ applyTo: option.applyTo ?? "**/trigger/**/*.ts",
322
+ }), option.contents);
323
+ }
324
+ case "windsurf": {
325
+ return $output(frontmatter({
326
+ trigger: "glob",
327
+ globs: option.applyTo ?? "**/trigger/**/*.ts",
328
+ }), option.contents);
329
+ }
330
+ default: {
331
+ return $output(`<!-- TRIGGER.DEV ${option.name} START -->`, option.contents, `<!-- TRIGGER.DEV ${option.name} END -->`);
332
+ }
333
+ }
334
+ }
335
+ function frontmatter(data) {
336
+ return $output("---", ...Object.entries(data).map(([key, value]) => `${key}: ${value}`), "---");
337
+ }
338
+ function $output(...strings) {
339
+ return strings.map((s) => s).join("\n");
340
+ }
341
+ async function resolveOptionsForTarget(targetName, currentVersion, cmdOptions) {
342
+ const possibleOptions = currentVersion.options.filter((option) => !option.client || option.client === targetName);
343
+ const selectedOptions = await multiselect({
344
+ message: `Choose the rules you want to install for ${targetLabels[targetName]}`,
345
+ options: possibleOptions.map((option) => ({
346
+ value: option,
347
+ label: option.title,
348
+ hint: `${option.label} [~${option.tokens} tokens]`,
349
+ })),
350
+ required: true,
351
+ });
352
+ if (isCancel(selectedOptions)) {
353
+ throw new OutroCommandError("No options selected");
354
+ }
355
+ return selectedOptions;
356
+ }
357
+ async function resolveTargets(options) {
358
+ if (options.target) {
359
+ return options.target;
360
+ }
361
+ const selectOptions = targets.map((target) => ({
362
+ value: target,
363
+ label: targetLabels[target],
364
+ }));
365
+ selectOptions.push({
366
+ value: "unsupported",
367
+ label: "Unsupported target",
368
+ hint: "We don't support this target yet, but you can still install the rules manually.",
369
+ });
370
+ const $selectOptions = selectOptions;
371
+ const selectedTargets = await multiselect({
372
+ message: "Select one or more targets to install the rules into",
373
+ options: $selectOptions,
374
+ required: true,
375
+ });
376
+ if (isCancel(selectedTargets)) {
377
+ throw new OutroCommandError("No targets selected");
378
+ }
379
+ return selectedTargets;
380
+ }
381
+ //# sourceMappingURL=install-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-rules.js","sourceRoot":"","sources":["../../../src/commands/install-rules.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,19 @@
1
1
  import { Command } from "commander";
2
2
  import { z } from "zod";
3
- declare const ListProfilesOptions: z.ZodObject<{
3
+ declare const ListProfilesOptions: z.ZodObject<Pick<{
4
4
  apiUrl: z.ZodOptional<z.ZodString>;
5
5
  logLevel: z.ZodDefault<z.ZodEnum<["debug", "info", "log", "warn", "error", "none"]>>;
6
6
  skipTelemetry: z.ZodDefault<z.ZodBoolean>;
7
7
  profile: z.ZodDefault<z.ZodString>;
8
- }, "strip", z.ZodTypeAny, {
8
+ }, "logLevel" | "skipTelemetry">, "strip", z.ZodTypeAny, {
9
9
  logLevel: "error" | "debug" | "info" | "warn" | "none" | "log";
10
10
  skipTelemetry: boolean;
11
- profile: string;
12
- apiUrl?: string | undefined;
13
11
  }, {
14
12
  logLevel?: "error" | "debug" | "info" | "warn" | "none" | "log" | undefined;
15
- apiUrl?: string | undefined;
16
13
  skipTelemetry?: boolean | undefined;
17
- profile?: string | undefined;
18
14
  }>;
19
15
  type ListProfilesOptions = z.infer<typeof ListProfilesOptions>;
20
16
  export declare function configureListProfilesCommand(program: Command): Command;
21
- export declare function listProfilesCommand(options: unknown): Promise<void>;
17
+ export declare function listProfilesCommand(options: unknown): Promise<void | undefined>;
22
18
  export declare function listProfiles(options: ListProfilesOptions): Promise<void>;
23
19
  export {};
@@ -4,7 +4,10 @@ import { chalkGrey } from "../utilities/cliOutput.js";
4
4
  import { readAuthConfigFile } from "../utilities/configFiles.js";
5
5
  import { printInitialBanner } from "../utilities/initialBanner.js";
6
6
  import { logger } from "../utilities/logger.js";
7
- const ListProfilesOptions = CommonCommandOptions;
7
+ const ListProfilesOptions = CommonCommandOptions.pick({
8
+ logLevel: true,
9
+ skipTelemetry: true,
10
+ });
8
11
  export function configureListProfilesCommand(program) {
9
12
  return program
10
13
  .command("list-profiles")
@@ -29,10 +32,10 @@ export async function listProfiles(options) {
29
32
  logger.info("No profiles found");
30
33
  return;
31
34
  }
32
- const profiles = Object.keys(authConfig);
35
+ const profileNames = Object.keys(authConfig.profiles);
33
36
  log.message("Profiles:");
34
- for (const profile of profiles) {
35
- const profileConfig = authConfig[profile];
37
+ for (const profile of profileNames) {
38
+ const profileConfig = authConfig.profiles[profile];
36
39
  log.info(`${profile}${profileConfig?.apiUrl ? ` - ${chalkGrey(profileConfig.apiUrl)}` : ""}`);
37
40
  }
38
41
  outro("Retrieve account info by running whoami --profile <profile>");
@@ -1 +1 @@
1
- {"version":3,"file":"list-profiles.js","sourceRoot":"","sources":["../../../src/commands/list-profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AAIjD,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC3D,OAAO,OAAO;SACX,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CACL,yBAAyB,EACzB,+HAA+H,EAC/H,KAAK,CACN;SACA,MAAM,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,eAAe,CAAC,KAAK,IAAI,EAAE;YAC/B,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAgB;IACxD,OAAO,MAAM,iBAAiB,CAAC,cAAc,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1F,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IAExC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEzC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEzB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAE1C,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,6DAA6D,CAAC,CAAC;AACvE,CAAC"}
1
+ {"version":3,"file":"list-profiles.js","sourceRoot":"","sources":["../../../src/commands/list-profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,IAAI,CAAC;IACpD,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC;AAIH,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC3D,OAAO,OAAO;SACX,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CACL,yBAAyB,EACzB,+HAA+H,EAC/H,KAAK,CACN;SACA,MAAM,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,eAAe,CAAC,KAAK,IAAI,EAAE;YAC/B,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAgB;IACxD,OAAO,MAAM,iBAAiB,CAAC,cAAc,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1F,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B;IAC7D,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IAExC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEtD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEzB,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEnD,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,6DAA6D,CAAC,CAAC;AACvE,CAAC"}
@@ -1,14 +1,14 @@
1
1
  import { Command } from "commander";
2
2
  import { z } from "zod";
3
+ import { CliApiClient } from "../apiClient.js";
3
4
  import { LoginResult } from "../utilities/session.js";
4
- export declare const LoginCommandOptions: z.ZodObject<z.objectUtil.extendShape<{
5
- apiUrl: z.ZodOptional<z.ZodString>;
5
+ export declare const LoginCommandOptions: z.ZodObject<{
6
6
  logLevel: z.ZodDefault<z.ZodEnum<["debug", "info", "log", "warn", "error", "none"]>>;
7
7
  skipTelemetry: z.ZodDefault<z.ZodBoolean>;
8
8
  profile: z.ZodDefault<z.ZodString>;
9
- }, {
9
+ } & {
10
10
  apiUrl: z.ZodString;
11
- }>, "strip", z.ZodTypeAny, {
11
+ }, "strip", z.ZodTypeAny, {
12
12
  logLevel: "error" | "debug" | "info" | "warn" | "none" | "log";
13
13
  apiUrl: string;
14
14
  skipTelemetry: boolean;
@@ -21,7 +21,7 @@ export declare const LoginCommandOptions: z.ZodObject<z.objectUtil.extendShape<{
21
21
  }>;
22
22
  export type LoginCommandOptions = z.infer<typeof LoginCommandOptions>;
23
23
  export declare function configureLoginCommand(program: Command): Command;
24
- export declare function loginCommand(options: unknown): Promise<LoginResult>;
24
+ export declare function loginCommand(options: unknown): Promise<LoginResult | undefined>;
25
25
  export type LoginOptions = {
26
26
  defaultApiUrl?: string;
27
27
  embedded?: boolean;
@@ -29,3 +29,7 @@ export type LoginOptions = {
29
29
  silent?: boolean;
30
30
  };
31
31
  export declare function login(options?: LoginOptions): Promise<LoginResult>;
32
+ export declare function getPersonalAccessToken(apiClient: CliApiClient, authorizationCode: string): Promise<{
33
+ token: string;
34
+ obfuscatedToken: string;
35
+ }>;
@@ -6,14 +6,17 @@ import { z } from "zod";
6
6
  import { CliApiClient } from "../apiClient.js";
7
7
  import { CommonCommandOptions, SkipLoggingError, commonOptions, handleTelemetry, tracer, wrapCommandAction, } from "../cli/common.js";
8
8
  import { chalkLink, prettyError } from "../utilities/cliOutput.js";
9
- import { readAuthConfigProfile, writeAuthConfigProfile } from "../utilities/configFiles.js";
9
+ import { readAuthConfigProfile, writeAuthConfigProfile, writeAuthConfigCurrentProfileName, } from "../utilities/configFiles.js";
10
10
  import { printInitialBanner } from "../utilities/initialBanner.js";
11
11
  import { whoAmI } from "./whoami.js";
12
12
  import { logger } from "../utilities/logger.js";
13
13
  import { spinner } from "../utilities/windows.js";
14
14
  import { isLinuxServer } from "../utilities/linux.js";
15
15
  import { VERSION } from "../version.js";
16
- import { env } from "std-env";
16
+ import { env, isCI } from "std-env";
17
+ import { CLOUD_API_URL } from "../consts.js";
18
+ import { validateAccessToken, NotPersonalAccessTokenError, NotAccessTokenError, } from "../utilities/accessTokens.js";
19
+ import { links } from "@trigger.dev/core/v3";
17
20
  export const LoginCommandOptions = CommonCommandOptions.extend({
18
21
  apiUrl: z.string(),
19
22
  });
@@ -41,7 +44,7 @@ export async function login(options) {
41
44
  return await tracer.startActiveSpan("login", async (span) => {
42
45
  try {
43
46
  const opts = {
44
- defaultApiUrl: "https://api.trigger.dev",
47
+ defaultApiUrl: CLOUD_API_URL,
45
48
  embedded: false,
46
49
  silent: false,
47
50
  ...options,
@@ -55,9 +58,15 @@ export async function login(options) {
55
58
  }
56
59
  const accessTokenFromEnv = env.TRIGGER_ACCESS_TOKEN;
57
60
  if (accessTokenFromEnv) {
61
+ const validationResult = validateAccessToken(accessTokenFromEnv);
62
+ if (!validationResult.success) {
63
+ // We deliberately don't surface the existence of organization access tokens to the user for now, as they're only used internally.
64
+ // Once we expose them in the application, we should also communicate that option here.
65
+ throw new NotAccessTokenError("Your TRIGGER_ACCESS_TOKEN is not a Personal Access Token, they start with 'tr_pat_'. You can generate one here: https://cloud.trigger.dev/account/tokens");
66
+ }
58
67
  const auth = {
59
68
  accessToken: accessTokenFromEnv,
60
- apiUrl: env.TRIGGER_API_URL ?? opts.defaultApiUrl ?? "https://api.trigger.dev",
69
+ apiUrl: env.TRIGGER_API_URL ?? opts.defaultApiUrl ?? CLOUD_API_URL,
61
70
  };
62
71
  const apiClient = new CliApiClient(auth.apiUrl, auth.accessToken);
63
72
  const userData = await apiClient.whoAmI();
@@ -72,6 +81,7 @@ export async function login(options) {
72
81
  dashboardUrl: userData.data.dashboardUrl,
73
82
  auth: {
74
83
  accessToken: auth.accessToken,
84
+ tokenType: validationResult.type,
75
85
  apiUrl: auth.apiUrl,
76
86
  },
77
87
  };
@@ -126,6 +136,7 @@ export async function login(options) {
126
136
  auth: {
127
137
  accessToken: authConfig.accessToken,
128
138
  apiUrl: authConfig.apiUrl ?? opts.defaultApiUrl,
139
+ tokenType: "personal",
129
140
  },
130
141
  };
131
142
  }
@@ -146,11 +157,23 @@ export async function login(options) {
146
157
  auth: {
147
158
  accessToken: authConfig.accessToken,
148
159
  apiUrl: authConfig.apiUrl ?? opts.defaultApiUrl,
160
+ tokenType: "personal",
149
161
  },
150
162
  };
151
163
  }
152
164
  }
153
165
  }
166
+ if (isCI) {
167
+ const apiUrl = env.TRIGGER_API_URL ?? authConfig?.apiUrl ?? opts.defaultApiUrl ?? CLOUD_API_URL;
168
+ const isSelfHosted = apiUrl !== CLOUD_API_URL;
169
+ // This is fine, as the api URL will generally be the same as the dashboard URL for self-hosted instances
170
+ const dashboardUrl = isSelfHosted ? apiUrl : "https://cloud.trigger.dev";
171
+ throw new Error(`Authentication required in CI environment. Please set the TRIGGER_ACCESS_TOKEN environment variable with a Personal Access Token.
172
+
173
+ - You can generate one here: ${dashboardUrl}/account/tokens
174
+
175
+ - For more information, see: ${links.docs.gitHubActions.personalAccessToken}`);
176
+ }
154
177
  if (opts.embedded) {
155
178
  log.step("You must login to continue.");
156
179
  }
@@ -176,7 +199,10 @@ export async function login(options) {
176
199
  minTimeout: 1000,
177
200
  });
178
201
  getPersonalAccessTokenSpinner.stop(`Logged in with token ${indexResult.obfuscatedToken}`);
179
- writeAuthConfigProfile({ accessToken: indexResult.token, apiUrl: opts.defaultApiUrl }, options?.profile);
202
+ writeAuthConfigProfile({
203
+ accessToken: indexResult.token,
204
+ apiUrl: opts.defaultApiUrl,
205
+ }, options?.profile);
180
206
  const whoAmIResult = await whoAmI({
181
207
  profile: options?.profile ?? "default",
182
208
  skipTelemetry: !span.isRecording(),
@@ -185,6 +211,9 @@ export async function login(options) {
185
211
  if (!whoAmIResult.success) {
186
212
  throw new Error(whoAmIResult.error);
187
213
  }
214
+ const profileName = options?.profile ?? "default";
215
+ // Set this profile as the current default
216
+ writeAuthConfigCurrentProfileName(profileName);
188
217
  if (opts.embedded) {
189
218
  log.step("Logged in successfully");
190
219
  }
@@ -194,13 +223,14 @@ export async function login(options) {
194
223
  span.end();
195
224
  return {
196
225
  ok: true,
197
- profile: options?.profile ?? "default",
226
+ profile: profileName,
198
227
  userId: whoAmIResult.data.userId,
199
228
  email: whoAmIResult.data.email,
200
229
  dashboardUrl: whoAmIResult.data.dashboardUrl,
201
230
  auth: {
202
231
  accessToken: indexResult.token,
203
232
  apiUrl: authConfig?.apiUrl ?? opts.defaultApiUrl,
233
+ tokenType: "personal",
204
234
  },
205
235
  };
206
236
  }
@@ -221,6 +251,9 @@ export async function login(options) {
221
251
  recordSpanException(span, e);
222
252
  span.end();
223
253
  if (options?.embedded) {
254
+ if (e instanceof NotPersonalAccessTokenError) {
255
+ throw e;
256
+ }
224
257
  return {
225
258
  ok: false,
226
259
  error: e instanceof Error ? e.message : String(e),
@@ -230,7 +263,7 @@ export async function login(options) {
230
263
  }
231
264
  });
232
265
  }
233
- async function getPersonalAccessToken(apiClient, authorizationCode) {
266
+ export async function getPersonalAccessToken(apiClient, authorizationCode) {
234
267
  return await tracer.startActiveSpan("getPersonalAccessToken", async (span) => {
235
268
  try {
236
269
  const token = await apiClient.getPersonalAccessToken(authorizationCode);