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.
- package/README.md +28 -1
- package/dist/esm/apiClient.d.ts +158 -74
- package/dist/esm/apiClient.js +341 -76
- package/dist/esm/apiClient.js.map +1 -1
- package/dist/esm/build/buildWorker.d.ts +10 -6
- package/dist/esm/build/buildWorker.js +22 -38
- package/dist/esm/build/buildWorker.js.map +1 -1
- package/dist/esm/build/bundle.d.ts +18 -1
- package/dist/esm/build/bundle.js +142 -52
- package/dist/esm/build/bundle.js.map +1 -1
- package/dist/esm/build/entryPoints.d.ts +12 -0
- package/dist/esm/build/entryPoints.js +127 -0
- package/dist/esm/build/entryPoints.js.map +1 -0
- package/dist/esm/build/extensions.js +17 -0
- package/dist/esm/build/extensions.js.map +1 -1
- package/dist/esm/build/externals.js +184 -2
- package/dist/esm/build/externals.js.map +1 -1
- package/dist/esm/build/packageModules.d.ts +15 -5
- package/dist/esm/build/packageModules.js +154 -36
- package/dist/esm/build/packageModules.js.map +1 -1
- package/dist/esm/cli/common.d.ts +1 -1
- package/dist/esm/cli/common.js +38 -45
- package/dist/esm/cli/common.js.map +1 -1
- package/dist/esm/cli/index.js +19 -3
- package/dist/esm/cli/index.js.map +1 -1
- package/dist/esm/commands/analyze.d.ts +23 -0
- package/dist/esm/commands/analyze.js +122 -0
- package/dist/esm/commands/analyze.js.map +1 -0
- package/dist/esm/commands/deploy.d.ts +5 -2
- package/dist/esm/commands/deploy.js +271 -160
- package/dist/esm/commands/deploy.js.map +1 -1
- package/dist/esm/commands/dev.d.ts +36 -6
- package/dist/esm/commands/dev.js +71 -2
- package/dist/esm/commands/dev.js.map +1 -1
- package/dist/esm/commands/env.d.ts +2 -0
- package/dist/esm/commands/env.js +298 -0
- package/dist/esm/commands/env.js.map +1 -0
- package/dist/esm/commands/init.d.ts +9 -1
- package/dist/esm/commands/init.js +132 -65
- package/dist/esm/commands/init.js.map +1 -1
- package/dist/esm/commands/install-mcp.d.ts +50 -0
- package/dist/esm/commands/install-mcp.js +497 -0
- package/dist/esm/commands/install-mcp.js.map +1 -0
- package/dist/esm/commands/install-rules.d.ts +11 -0
- package/dist/esm/commands/install-rules.js +381 -0
- package/dist/esm/commands/install-rules.js.map +1 -0
- package/dist/esm/commands/list-profiles.d.ts +3 -7
- package/dist/esm/commands/list-profiles.js +7 -4
- package/dist/esm/commands/list-profiles.js.map +1 -1
- package/dist/esm/commands/login.d.ts +9 -5
- package/dist/esm/commands/login.js +40 -7
- package/dist/esm/commands/login.js.map +1 -1
- package/dist/esm/commands/logout.d.ts +1 -1
- package/dist/esm/commands/mcp.d.ts +38 -0
- package/dist/esm/commands/mcp.js +82 -0
- package/dist/esm/commands/mcp.js.map +1 -0
- package/dist/esm/commands/preview.d.ts +5 -0
- package/dist/esm/commands/preview.js +93 -0
- package/dist/esm/commands/preview.js.map +1 -0
- package/dist/esm/commands/promote.d.ts +3 -0
- package/dist/esm/commands/promote.js +86 -0
- package/dist/esm/commands/promote.js.map +1 -0
- package/dist/esm/commands/switch.d.ts +19 -0
- package/dist/esm/commands/switch.js +93 -0
- package/dist/esm/commands/switch.js.map +1 -0
- package/dist/esm/commands/trigger.d.ts +33 -0
- package/dist/esm/commands/trigger.js +88 -0
- package/dist/esm/commands/trigger.js.map +1 -0
- package/dist/esm/commands/update.d.ts +3 -2
- package/dist/esm/commands/update.js +23 -9
- package/dist/esm/commands/update.js.map +1 -1
- package/dist/esm/commands/whoami.d.ts +12 -1
- package/dist/esm/commands/whoami.js +36 -6
- package/dist/esm/commands/whoami.js.map +1 -1
- package/dist/esm/commands/workers/build.d.ts +4 -0
- package/dist/esm/commands/workers/build.js +345 -0
- package/dist/esm/commands/workers/build.js.map +1 -0
- package/dist/esm/commands/workers/create.d.ts +2 -0
- package/dist/esm/commands/workers/create.js +91 -0
- package/dist/esm/commands/workers/create.js.map +1 -0
- package/dist/esm/commands/workers/index.d.ts +2 -0
- package/dist/esm/commands/workers/index.js +13 -0
- package/dist/esm/commands/workers/index.js.map +1 -0
- package/dist/esm/commands/workers/list.d.ts +2 -0
- package/dist/esm/commands/workers/list.js +80 -0
- package/dist/esm/commands/workers/list.js.map +1 -0
- package/dist/esm/commands/workers/run.d.ts +2 -0
- package/dist/esm/commands/workers/run.js +105 -0
- package/dist/esm/commands/workers/run.js.map +1 -0
- package/dist/esm/config.d.ts +2 -1
- package/dist/esm/config.js +35 -8
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/deploy/buildImage.d.ts +12 -11
- package/dist/esm/deploy/buildImage.js +360 -115
- package/dist/esm/deploy/buildImage.js.map +1 -1
- package/dist/esm/dev/backgroundWorker.d.ts +6 -245
- package/dist/esm/dev/backgroundWorker.js +11 -320
- package/dist/esm/dev/backgroundWorker.js.map +1 -1
- package/dist/esm/dev/devOutput.js +48 -9
- package/dist/esm/dev/devOutput.js.map +1 -1
- package/dist/esm/dev/devSession.d.ts +2 -1
- package/dist/esm/dev/devSession.js +68 -65
- package/dist/esm/dev/devSession.js.map +1 -1
- package/dist/esm/dev/devSupervisor.d.ts +12 -0
- package/dist/esm/dev/devSupervisor.js +568 -0
- package/dist/esm/dev/devSupervisor.js.map +1 -0
- package/dist/esm/dev/lock.d.ts +1 -0
- package/dist/esm/dev/lock.js +80 -0
- package/dist/esm/dev/lock.js.map +1 -0
- package/dist/esm/dev/mcpServer.d.ts +10 -0
- package/dist/esm/dev/mcpServer.js +201 -0
- package/dist/esm/dev/mcpServer.js.map +1 -0
- package/dist/esm/dev/taskRunProcessPool.d.ts +39 -0
- package/dist/esm/dev/taskRunProcessPool.js +220 -0
- package/dist/esm/dev/taskRunProcessPool.js.map +1 -0
- package/dist/esm/dev/workerRuntime.d.ts +2 -2
- package/dist/esm/dev/workerRuntime.js +1 -265
- package/dist/esm/dev/workerRuntime.js.map +1 -1
- package/dist/esm/entryPoints/dev-index-worker.js +45 -8
- package/dist/esm/entryPoints/dev-index-worker.js.map +1 -1
- package/dist/esm/entryPoints/dev-run-controller.d.ts +58 -0
- package/dist/esm/entryPoints/dev-run-controller.js +652 -0
- package/dist/esm/entryPoints/dev-run-controller.js.map +1 -0
- package/dist/esm/entryPoints/dev-run-worker.js +394 -199
- package/dist/esm/entryPoints/dev-run-worker.js.map +1 -1
- package/dist/esm/entryPoints/managed/controller.d.ts +63 -0
- package/dist/esm/entryPoints/managed/controller.js +502 -0
- package/dist/esm/entryPoints/managed/controller.js.map +1 -0
- package/dist/esm/entryPoints/managed/env.d.ts +170 -0
- package/dist/esm/entryPoints/managed/env.js +199 -0
- package/dist/esm/entryPoints/managed/env.js.map +1 -0
- package/dist/esm/entryPoints/managed/execution.d.ts +143 -0
- package/dist/esm/entryPoints/managed/execution.js +901 -0
- package/dist/esm/entryPoints/managed/execution.js.map +1 -0
- package/dist/esm/entryPoints/managed/logger.d.ts +30 -0
- package/dist/esm/entryPoints/managed/logger.js +47 -0
- package/dist/esm/entryPoints/managed/logger.js.map +1 -0
- package/dist/esm/entryPoints/managed/notifier.d.ts +30 -0
- package/dist/esm/entryPoints/managed/notifier.js +63 -0
- package/dist/esm/entryPoints/managed/notifier.js.map +1 -0
- package/dist/esm/entryPoints/managed/overrides.d.ts +18 -0
- package/dist/esm/entryPoints/managed/overrides.js +19 -0
- package/dist/esm/entryPoints/managed/overrides.js.map +1 -0
- package/dist/esm/entryPoints/managed/poller.d.ts +31 -0
- package/dist/esm/entryPoints/managed/poller.js +89 -0
- package/dist/esm/entryPoints/managed/poller.js.map +1 -0
- package/dist/esm/entryPoints/managed/snapshot.d.ts +54 -0
- package/dist/esm/entryPoints/managed/snapshot.js +293 -0
- package/dist/esm/entryPoints/managed/snapshot.js.map +1 -0
- package/dist/esm/entryPoints/managed/taskRunProcessProvider.d.ts +62 -0
- package/dist/esm/entryPoints/managed/taskRunProcessProvider.js +252 -0
- package/dist/esm/entryPoints/managed/taskRunProcessProvider.js.map +1 -0
- package/dist/esm/entryPoints/{deploy-index-controller.js → managed-index-controller.js} +27 -3
- package/dist/esm/entryPoints/managed-index-controller.js.map +1 -0
- package/dist/esm/entryPoints/{deploy-index-worker.js → managed-index-worker.js} +50 -21
- package/dist/esm/entryPoints/managed-index-worker.js.map +1 -0
- package/dist/esm/entryPoints/managed-run-controller.js +13 -0
- package/dist/esm/entryPoints/managed-run-controller.js.map +1 -0
- package/dist/esm/entryPoints/managed-run-worker.js +512 -0
- package/dist/esm/entryPoints/managed-run-worker.js.map +1 -0
- package/dist/esm/executions/taskRunProcess.d.ts +28 -82
- package/dist/esm/executions/taskRunProcess.js +130 -74
- package/dist/esm/executions/taskRunProcess.js.map +1 -1
- package/dist/esm/indexing/indexWorkerManifest.d.ts +21 -5
- package/dist/esm/indexing/indexWorkerManifest.js +4 -4
- package/dist/esm/indexing/indexWorkerManifest.js.map +1 -1
- package/dist/esm/indexing/registerResources.d.ts +5 -0
- package/dist/esm/indexing/registerResources.js +44 -0
- package/dist/esm/indexing/registerResources.js.map +1 -0
- package/dist/esm/mcp/auth.d.ts +12 -0
- package/dist/esm/mcp/auth.js +152 -0
- package/dist/esm/mcp/auth.js.map +1 -0
- package/dist/esm/mcp/capabilities.d.ts +4 -0
- package/dist/esm/mcp/capabilities.js +22 -0
- package/dist/esm/mcp/capabilities.js.map +1 -0
- package/dist/esm/mcp/config.d.ts +82 -0
- package/dist/esm/mcp/config.js +87 -0
- package/dist/esm/mcp/config.js.map +1 -0
- package/dist/esm/mcp/context.d.ts +45 -0
- package/dist/esm/mcp/context.js +129 -0
- package/dist/esm/mcp/context.js.map +1 -0
- package/dist/esm/mcp/formatters.d.ts +7 -0
- package/dist/esm/mcp/formatters.js +330 -0
- package/dist/esm/mcp/formatters.js.map +1 -0
- package/dist/esm/mcp/logger.d.ts +11 -0
- package/dist/esm/mcp/logger.js +34 -0
- package/dist/esm/mcp/logger.js.map +1 -0
- package/dist/esm/mcp/mintlifyClient.d.ts +1 -0
- package/dist/esm/mcp/mintlifyClient.js +65 -0
- package/dist/esm/mcp/mintlifyClient.js.map +1 -0
- package/dist/esm/mcp/schemas.d.ts +324 -0
- package/dist/esm/mcp/schemas.js +144 -0
- package/dist/esm/mcp/schemas.js.map +1 -0
- package/dist/esm/mcp/tools/deploys.d.ts +174 -0
- package/dist/esm/mcp/tools/deploys.js +161 -0
- package/dist/esm/mcp/tools/deploys.js.map +1 -0
- package/dist/esm/mcp/tools/docs.d.ts +77 -0
- package/dist/esm/mcp/tools/docs.js +18 -0
- package/dist/esm/mcp/tools/docs.js.map +1 -0
- package/dist/esm/mcp/tools/orgs.d.ts +172 -0
- package/dist/esm/mcp/tools/orgs.js +172 -0
- package/dist/esm/mcp/tools/orgs.js.map +1 -0
- package/dist/esm/mcp/tools/previewBranches.d.ts +78 -0
- package/dist/esm/mcp/tools/previewBranches.js +28 -0
- package/dist/esm/mcp/tools/previewBranches.js.map +1 -0
- package/dist/esm/mcp/tools/runs.d.ts +335 -0
- package/dist/esm/mcp/tools/runs.js +160 -0
- package/dist/esm/mcp/tools/runs.js.map +1 -0
- package/dist/esm/mcp/tools/tasks.d.ts +200 -0
- package/dist/esm/mcp/tools/tasks.js +117 -0
- package/dist/esm/mcp/tools/tasks.js.map +1 -0
- package/dist/esm/mcp/tools.d.ts +2 -0
- package/dist/esm/mcp/tools.js +40 -0
- package/dist/esm/mcp/tools.js.map +1 -0
- package/dist/esm/mcp/types.d.ts +6 -0
- package/dist/esm/mcp/types.js +2 -0
- package/dist/esm/mcp/types.js.map +1 -0
- package/dist/esm/mcp/utils.d.ts +89 -0
- package/dist/esm/mcp/utils.js +95 -0
- package/dist/esm/mcp/utils.js.map +1 -0
- package/dist/esm/rules/install.d.ts +1 -0
- package/dist/esm/rules/install.js +2 -0
- package/dist/esm/rules/install.js.map +1 -0
- package/dist/esm/rules/manifest.d.ts +145 -0
- package/dist/esm/rules/manifest.js +110 -0
- package/dist/esm/rules/manifest.js.map +1 -0
- package/dist/esm/rules/types.d.ts +3 -0
- package/dist/esm/rules/types.js +3 -0
- package/dist/esm/rules/types.js.map +1 -0
- package/dist/esm/utilities/accessTokens.d.ts +12 -0
- package/dist/esm/utilities/accessTokens.js +30 -0
- package/dist/esm/utilities/accessTokens.js.map +1 -0
- package/dist/esm/utilities/analyze.d.ts +13 -0
- package/dist/esm/utilities/analyze.js +463 -0
- package/dist/esm/utilities/analyze.js.map +1 -0
- package/dist/esm/utilities/cliOutput.d.ts +6 -1
- package/dist/esm/utilities/cliOutput.js +11 -2
- package/dist/esm/utilities/cliOutput.js.map +1 -1
- package/dist/esm/utilities/configFiles.d.ts +65 -15
- package/dist/esm/utilities/configFiles.js +124 -26
- package/dist/esm/utilities/configFiles.js.map +1 -1
- package/dist/esm/utilities/eventBus.d.ts +7 -3
- package/dist/esm/utilities/eventBus.js.map +1 -1
- package/dist/esm/utilities/fileSystem.d.ts +7 -1
- package/dist/esm/utilities/fileSystem.js +42 -4
- package/dist/esm/utilities/fileSystem.js.map +1 -1
- package/dist/esm/utilities/gitMeta.d.ts +2 -0
- package/dist/esm/utilities/gitMeta.js +220 -0
- package/dist/esm/utilities/gitMeta.js.map +1 -0
- package/dist/esm/utilities/githubActions.d.ts +4 -0
- package/dist/esm/utilities/githubActions.js +18 -0
- package/dist/esm/utilities/githubActions.js.map +1 -0
- package/dist/esm/utilities/initialBanner.js +18 -6
- package/dist/esm/utilities/initialBanner.js.map +1 -1
- package/dist/esm/utilities/localEnvVars.d.ts +3 -0
- package/dist/esm/utilities/localEnvVars.js +19 -0
- package/dist/esm/utilities/localEnvVars.js.map +1 -0
- package/dist/esm/utilities/sanitizeEnvVars.d.ts +16 -3
- package/dist/esm/utilities/sanitizeEnvVars.js +15 -0
- package/dist/esm/utilities/sanitizeEnvVars.js.map +1 -1
- package/dist/esm/utilities/session.d.ts +14 -0
- package/dist/esm/utilities/session.js +44 -47
- package/dist/esm/utilities/session.js.map +1 -1
- package/dist/esm/utilities/supportsHyperlinks.d.ts +15 -0
- package/dist/esm/utilities/supportsHyperlinks.js +122 -0
- package/dist/esm/utilities/supportsHyperlinks.js.map +1 -0
- package/dist/esm/utilities/tempDirectories.d.ts +1 -0
- package/dist/esm/utilities/tempDirectories.js +19 -2
- package/dist/esm/utilities/tempDirectories.js.map +1 -1
- package/dist/esm/utilities/terminalLink.d.ts +56 -0
- package/dist/esm/utilities/terminalLink.js +76 -0
- package/dist/esm/utilities/terminalLink.js.map +1 -0
- package/dist/esm/utilities/windows.js +65 -1
- package/dist/esm/utilities/windows.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +44 -25
- package/dist/esm/entryPoints/deploy-index-controller.js.map +0 -1
- package/dist/esm/entryPoints/deploy-index-worker.js.map +0 -1
- package/dist/esm/entryPoints/deploy-run-controller.js +0 -1099
- package/dist/esm/entryPoints/deploy-run-controller.js.map +0 -1
- package/dist/esm/entryPoints/deploy-run-worker.js +0 -366
- package/dist/esm/entryPoints/deploy-run-worker.js.map +0 -1
- package/dist/esm/indexing/registerTasks.d.ts +0 -2
- package/dist/esm/indexing/registerTasks.js +0 -62
- package/dist/esm/indexing/registerTasks.js.map +0 -1
- package/dist/esm/telemetry/tracing.d.ts +0 -3
- package/dist/esm/telemetry/tracing.js +0 -58
- package/dist/esm/telemetry/tracing.js.map +0 -1
- /package/dist/esm/entryPoints/{deploy-index-controller.d.ts → managed-index-controller.d.ts} +0 -0
- /package/dist/esm/entryPoints/{deploy-index-worker.d.ts → managed-index-worker.d.ts} +0 -0
- /package/dist/esm/entryPoints/{deploy-run-controller.d.ts → managed-run-controller.d.ts} +0 -0
- /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
|
|
35
|
+
const profileNames = Object.keys(authConfig.profiles);
|
|
33
36
|
log.message("Profiles:");
|
|
34
|
-
for (const profile of
|
|
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;
|
|
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<
|
|
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
|
-
}
|
|
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:
|
|
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 ??
|
|
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({
|
|
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:
|
|
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);
|