Dashboard › cli › Distillation
859af0b8-9407-4925-af7b-108cfaf43860["lore_tm_v1_3DU0wFklxpxM_nzZAikbsKXBUd6J0GjTZ32ALFpVJLw","lore_tm_v1_TyW1XnTBMiOmNNBRurzFFKFFJRRPUKYHDyO0Ep3q3rQ"]
Date: Sep 9, 2026
/; [<org>/]<conversation-id> therefore permits at most one slash, with the portion before it as the organization and the remainder as the conversation ID.ALWAYS_STRIP are always stripped, so the command never sees them; ALWAYS_STRIP currently contains LOG_LEVEL_KEY.buildListCommand() must always inject --fresh unless the command already defines it..github/workflows/pr-risk.yml changing apply-label from "true" to ${{ github.event.pull_request.head.repo.full_name == github.repository }}, so getsentry/pr-risk-action@v0 applies labels only when the pull request head repository is the current repository.packages/cli/src/commands/agent-conversation/list.ts defining POSITIONAL as one optional tuple parameter named org with brief Organization slug, and deriving USAGE_HINT as sentry agent-conversation list ${getPositionalString(POSITIONAL)}.agent-conversation list replacing inline prose examples with 5 ordered structured examples: 1. sentry agent-conversation list — “List recent agent conversations”; 2. sentry agent-conversation list my-org — “Explicit organization”; 3. sentry agent-conversation list --limit 50 --period 24h — “Show more, last 24 hours”; 4. sentry agent-conversation list -q "has:errors" — “Filter conversations”; 5. sentry agent-conversation list my-org -c next — “Paginate through results”.agent-conversation list documentation now states that the organization is auto-detected when omitted, reuses POSITIONAL in its parameters, and uses the derived canonical USAGE_HINT when resolveOrg() fails.packages/cli/src/commands/agent-conversation/view.ts defining USAGE = "[<org>/]<conversation-id>", deriving USAGE_HINT = "sentry agent-conversation view [<org>/]<conversation-id>", and setting docs.customUsage: [USAGE].parseConversationTarget() validation behavior: no slash returns the trimmed value as conversationId; multiple slashes throw validationError("Conversation target must contain at most one '/'.", [USAGE_HINT], "conversation-id"); a slash with an empty organization or conversation-ID segment throws validationError("Conversation target must include both an organization and conversation ID when using '/'.", [USAGE_HINT], "conversation-id").agent-conversation view replacing prose examples with 3 ordered structured examples: 1. sentry agent-conversation view conv-123 — “View full transcript (organization auto-detected)”; 2. sentry agent-conversation view my-org/conv-123 — “Explicit organization”; 3. sentry agent-conversation view my-org/conv-123 --json — “JSON output”.packages/cli/src/lib/command.ts introducing prepareNativeDocs(): it removes the extended examples field before passing docs to Stricli and appends examples to fullDescription as lines formatted ${command} # ${description} under an Examples: heading; docs without examples pass through unchanged.packages/cli/src/lib/command.ts introducing attachDocumentationMetadata(): the first docs.customUsage entry is retained as __primaryUsage (a string directly or .input for structured usage), and nonempty docs.examples is retained as __examples.buildCommand() now calls prepareNativeDocs(builderArgs.docs) before enrichDocsWithSchema(), preserving JSON field documentation at the end of native help, passes the resulting stricliDocs to stricliCommand(), and calls attachDocumentationMetadata(cmd, builderArgs.docs) after command construction.packages/cli/src/lib/command.ts: injected global defaults are LOG_LEVEL_KEY, verbose, org, and project; every injected global flag is added to stripKeys; LOG_LEVEL_KEY is stripped even when command-defined; command-owned org and project flags are tracked separately; output-enabled commands receive json when not command-owned and always receive a generated fields flag.cleanRawFlags() omitting every key in stripKeys and parsing a string-valued fields flag through parseFieldsList() when an output configuration exists.packages/cli/src/lib/introspect.ts extending Command with __examples?: readonly CommandExample[]; buildCommandInfo() prefers these structured examples and converts each, in order, to # ${description}\n${command}, falling back to externally supplied legacy examples only when __examples is absent or empty.packages/cli/src/lib/list-command.ts changing buildListCommand() and OrgListCommandDocs to accept the shared CommandDocumentation type, enabling structured examples and custom usage for list commands.buildListCommand() common injection rules: preserve command-defined fresh and cursor; inject --fresh otherwise; inject --cursor unless options.noCursorFlag; inject -f → fresh unless options.noFreshAlias or alias key f already exists; inject -c → cursor unless options.noCursorFlag or alias key c already exists.buildListCommand() wrapping command execution to call applyFreshFlag(flags) automatically, then intercepting positional argument args[0] through interceptSubcommand(args[0], ctx.stderr, routeName) when it is a string or undefined, before invoking the original generator.interceptSubcommand() behavior: when a positional target matches a known subcommand of the singular route, it writes Tip: "${trimmed}" is a subcommand. Running: sentry ${routeName} ${trimmed}\n as a warning and returns undefined; otherwise it returns the original target.packages/cli/src/lib/mutate-command.ts importing and using the shared CommandDocumentation type for delete-command documentation, replacing its narrower local docs typing.