trigger.dev
Version:
A Command-Line Interface for Trigger.dev projects
53 lines • 2.52 kB
JavaScript
import { z } from "zod";
import { CliApiClient } from "../apiClient.js";
import { CommonCommandOptions, commonOptions, handleTelemetry, wrapCommandAction, } from "../cli/common.js";
import { isLoggedIn } from "../utilities/session.js";
const MintTokenCommandOptions = CommonCommandOptions.extend({
ttl: z.coerce.number().int().positive().optional(),
cap: z.string().optional(),
client: z.string().optional(),
});
export function configureMintTokenCommand(program) {
return commonOptions(program
.command("mint-token")
.description("Mint a short-lived token (tr_uat_) that authenticates as you, from your stored personal access token")
.option("--ttl <seconds>", "Token lifetime in seconds (default 3600, max 31536000)")
.option("--cap <scopes>", "Comma-separated scope cap, e.g. read:runs,read:tasks (defaults to your full role)")
.option("--client <label>", "Attribution label recorded in the token (default: cli)")).action(async (options) => {
await handleTelemetry(async () => {
await mintTokenCommand(options);
});
});
}
export async function mintTokenCommand(options) {
return await wrapCommandAction("mintTokenCommand", MintTokenCommandOptions, options, async (opts) => {
return await mintToken(opts);
});
}
async function mintToken(options) {
const authentication = await isLoggedIn(options.profile);
if (!authentication.ok) {
throw new Error(authentication.error === "fetch failed"
? "Fetch failed. Platform down?"
: `You must login first. Use \`trigger.dev login --profile ${options.profile}\` to login.`);
}
const apiClient = new CliApiClient(authentication.auth.apiUrl, authentication.auth.accessToken);
const cap = options.cap
?.split(",")
.map((scope) => scope.trim())
.filter(Boolean);
const result = await apiClient.mintUserActorToken({
ttlSeconds: options.ttl,
cap: cap && cap.length > 0 ? cap : undefined,
client: options.client ?? "cli",
});
if (!result.success) {
throw new Error(`Failed to mint token: ${result.error}`);
}
// The token alone goes to stdout so it can be captured
// (e.g. `UAT=$(trigger.dev mint-token)`); status goes to stderr.
process.stderr.write(`Minted token for ${authentication.email} (expires in ${result.data.expiresInSeconds}s)\n`);
console.log(result.data.token);
return result.data;
}
//# sourceMappingURL=mint-token.js.map