Dashboard › cli › Distillation
df2255dc-9f5e-4f2c-997d-9fc544ca0615["lore_tm_v1_WTXQzfuB-dEfbu0lUUnNtJOFGgCKZ2XneJWPl9IOpzY","lore_tm_v1_ONOZBQOr4hepxV5vJCyBw-CgigMAAlywr1puNkrCb-M","lore_tm_v1_TMrrVYCSOf05V78DUwR7mCnDtrWUC5Y2Se3bYJr1J3Y","lore_tm_v1_pSU9FMkUsrWuEqqXY2eLF2MjFMW_bsk0DIsdPmdmpPY","lore_tm_v1_PU9MKjZzTjqGHj6CkssAZCGHov8zn9XoRn45aAdlKyw","lore_tm_v1_pwZ4E_i9g-xpGc83kX_ZzXSsR1hzz9o4EoYYLI7H19E","lore_tm_v1_pV2DNxKeCx36kd3DBsgtWnl5Mc7UiWEFdbdijyCxjJc","lore_tm_v1_yzsqqo1IYxJNjV8eFc77-L8opUFDhT0KJ5NLbtjMKKE","lore_tm_v1_iUrWZ-xkFeq4JPYYBu39YaPgAc7MS-eR_Pp9i9hDprU","lore_tm_v1_gsk8SR1JsZzzQe6OUAdQqmvbnwj-5PAPb-ZwvLmwgK8","lore_tm_v1_lh2yy8V6tU2NEDCdXoQyvY-onlUkHIc6OEoWMpyvkYU","lore_tm_v1_qzE4xc9Xy_6n11UiDwlfqG5a1icHg98fqlACOBvRpfU","lore_tm_v1_psOS4ysoESiqISOlAzrUGeDPivyeMgtaqdIkacr03Cg","lore_tm_v1_Riw9d1Q2SzN-tBKr3NhM7FEt0ViOqFyX2lhUDSYekpo"]
Date: Sep 10, 2026
customText.exceptionWhileParsingArguments() in packages/cli/src/app.ts handles UnsatisfiedPositionalError via detectBareRouteGroup(ansiColor); handles UnexpectedPositionalError first via detectPluralAliasMisuse(ansiColor), then via getSynonymSuggestionFromArgv(); otherwise falls back to text_en.exceptionWhileParsingArguments(exc, ansiColor).customText.noCommandRegisteredForInput() builds the normal Stricli error, derives routeContext from the first non-flag token in process.argv.slice(2), calls getCommandSuggestion(routeContext, input), and appends a plain or yellow Tip:; ANSI output resets red/bold with \x1B[39m\x1B[22m before applying warning().customText.exceptionWhileRunningCommand() rethrows errors accepted by escapesToOuterMiddleware(), returns formatSynonymError() results without Sentry capture, otherwise calls reportCliError(exc); rendered WizardError returns "", other CliError values render as Error: ${exc.format()}, native Error values render Unexpected error: ${exc.stack ?? exc.message}, and unknown values use stringifyUnknown(exc).packages/cli/src/app.ts builds app with name "sentry", version CLI_VERSION, scanner case style "allow-kebab-for-camel", allowArgumentEscapeSequence: true, global topLevelFlags: buildTopLevelFlags(), exit-code resolver getExitCode, and localization loader returning customText.app.config.documentation.renderHelp delegates to renderJsonHelp(prefix, unprocessedInputs): JSON help uses structured introspection, while returning undefined preserves Stricli’s built-in text help.@stricli/core/dist/index.js showed buildCommand() rejects reserved flags help, helpAll, and help-all, rejects alias h, checks negation collisions and invalid variadic separators, and exposes formatUsageLine() through formatUsageLineForParameters() while formatHelp() joins generateCommandHelpLines() with newlines and adds a trailing newline.route.formatUsageLine({...args, prefix: [...args.prefix, externalRouteName]}); it does not use the child command’s custom help usage rendering.viewCommand.formatUsageLine() renders sentry agent-conversation view [--fresh] [--json] [--fields value] <org/conversation-id>, while viewCommand.formatHelp() honors custom usage and renders sentry agent-conversation view [<org>/]<conversation-id>.conversationRoute.formatHelp() reproduces the stale child usage sentry agent-conversation view [--fresh] [--json] [--fields value] <org/conversation-id> because route-group help calls the child’s formatUsageLine(); the same help output renders list usage with [<org>], includes built-in --help and --, and lists commands list and view.view help includes 3 examples: 1. sentry agent-conversation view conv-123 for auto-detected organization; 2. sentry agent-conversation view my-org/conv-123 for explicit organization; 3. sentry agent-conversation view my-org/conv-123 --json for JSON output.runUpload(args: string[]) test harness in packages/cli/test/commands/debug-files/upload.test.ts invokes run(app, ["debug-files", "upload", ...args], mockContext), captures stdout and stderr independently, and returns { output, error, exitCode: mockContext.process.exitCode }.packages/cli/test/lib/introspect.test.ts expects getPositionalString(undefined) to return ""; tuple defaults are <arg0> <arg1>, optional tuple entries use brackets, an array defaults to <args...>, and a named array renders <command...>.json, fields, help, helpAll, and log-level; SKIP_ROUTES contains "help".packages/cli/script/generate-command-docs.ts creates src/generated/skill-content.ts with export const SKILL_FILES: [string, string][] = [];\n when absent, before dynamically importing the route tree.generateCommandHelpLines() uses docs.customUsage when present: string entries render as ${prefix} ${usage}, structured entries render ${prefix} ${usage.input} followed by an indented brief; without customUsage, it calls formatUsageLineForParameters(parameters, args).generateBuiltInFlagUsageLines() always emits help, emits --${formatForDisplay("helpAll", caseStyle)} when includeHelpAllFlag is true, emits version when requested, and uses -h/-v instead of long forms when config.useAliasInUsageLine is enabled.