Dashboard › cli › Distillation
e329e652-41f4-403c-8ac5-94bbbc414768["lore_tm_v1_Y-ZmqTU5OetCgLgg6H98oGsu82Q-MDfkMYLnaV2aUJ4","lore_tm_v1_N-ixlw8BnZCP5E4dMOd_c7Fh8q1Lwk9Pax1sXw1RrQM","lore_tm_v1_HQYxvliL0yOCAXvpPTWuGy1JyMUNYLTbL06hGjGX4m4","lore_tm_v1_TezvNBWE0S6TE1fU7D0L-qst1DkSPphHisIPI8-6b8E","lore_tm_v1_mMm7GU8ho-jK9V3HZTXjSEscaZp8b7NWQfXkW-OFsfA","lore_tm_v1_6honqABK5Q5URipTPFw0kROoXyeUDomNlYKTFJQviGo","lore_tm_v1_zxAHHJY289H2-ERZGUBD86zGKCWP2sDWq75_FM7Y6JU","lore_tm_v1_W98V_mgfXmagSpcHm28TVGJwBho9eFEGlFBW8NjcFGw"]
CommandDocumentation matches: packages/cli/src/lib/mutate-command.ts lines 22 and 335; packages/cli/src/lib/list-command.ts lines 25, 552, and 631; packages/cli/src/lib/command.ts lines 110, 154, 421, 424, 442, and 461.packages/cli/src/index.ts is the programmatic library entry point. It exposes createSentrySDK() as the single public API, default-exports it, re-exports AsyncChannel, SentryError, SentryOptions, and SentrySDK, and re-exports startCli as internal _cli for the dist/bin.cjs npm wrapper.createSentrySDK(options?) constructs typed command methods with createSDKMethods(buildInvoker(options)), constructs the arbitrary-command escape hatch with buildRunner(options), and returns Object.assign(methods, { run }). Typed methods bypass Stricli string dispatch and invoke handlers with pre-built flags.packages/cli/src/commands/alert/issues/create.ts, issue-alert triggers always evaluate as 'any-short' because they fire on a single error detector; there is no trigger match flag. --filter-match all|any controls only how action-filter conditions combine.sentry alert issues create accepts a target as explicit <org>/<project>, an auto-detected project, or a bare project search resolving to exactly one project. Required inputs are --name, at least 1 --condition, and at least 1 --action; optional inputs are --frequency, --environment, --filter, --filter-match, and --owner.--condition is a trigger data-condition shaped as {type, comparison, conditionResult}; --action is shaped as {type, data, config}; --filter is an action-filter condition with the same shape as --condition.c: "condition", a: "action", and m: "filter-match" plus DRY_RUN_ALIASES. condition, action, and filter are repeatable strings or one JSON array. frequency uses numberParser, defaults to 30 minutes, and must be greater than 0.flags.name.trim() is nonempty, parses lists with parseJsonObjectList(), resolves targets through parseOrgProjectArg() and resolveTargetsFromParsedArg(), and rejects targets that do not resolve to exactly 1 project.resolveErrorDetectorId(target.org, target.project) and builds a workflow body containing name, detectorIds: [detectorId], config: { frequency }, triggers: { logicType: triggerLogicType(), conditions }, and one actionFilters entry with logicType: matchToLogicType(flags["filter-match"]), conditions: filters ?? [], and actions. It adds environment and owner only when defined.packages/cli/src/commands/trial/start.ts, parseTrialStartArgs(first, second?) treats 1 argument as the trial name. With 2 arguments it accepts normal <name> <org> order and detects/auto-corrects swapped <org> <name> order via detectSwappedTrialArgs(first, second, isValidTrialArg), including the "plan" pseudo-trial.sentry trial start examples include sentry trial start seer, sentry trial start seer my-org, sentry trial start replays, sentry trial start plan, and sentry trial start --json seer. The organization slug is auto-detected when omitted.isTrialName() except for special name "plan", resolves the organization through resolveOrg({ org: parsed.org, cwd: this.cwd }), and raises ContextError("Organization", "sentry trial start <name> <org>") if unresolved.getProductTrials(orgSlug), selecting one with findAvailableTrial(trials, parsed.name), and invoking startProductTrial(orgSlug, trial.category). Success output contains name, category, organization, lengthDays, and started: true."plan" pseudo-trial has no programmatic start API; handlePlanTrial(orgSlug, flags.json ?? false) instead handles eligibility and directs the user to the Sentry billing UI.promptOpenBrowser(url) prompts only when both stdin and stderr are TTYs (isatty(0) && isatty(2)). It uses logger.prompt("Open in browser?", { type: "confirm", initial: true }) and requires confirmed === true because Symbol(clack:cancel) is truthy. It calls openBrowser(url), logs "Opening in browser..." on success, logs "Could not open browser. Visit the URL above." on failure, and otherwise returns false./\\x1b/i: 0, /\\u001b/i: 0, /\\033/i: 0, /\]\d+;/: 0, /\$\(/: 0, and /[^]*/`: 60.