Dashboard › cli › Distillation
e4199626-eaf7-43d7-9e4a-9d42f653f194["lore_tm_v1_dm6puwIu9l9e4_p_l8uzfGpJwyXHrKCIG0rpmM-w5Oc","lore_tm_v1_NvNX36ZnoiHHyRWpOkkJgNUpHis3-nHiygbpNPg3OAw","lore_tm_v1_1tb1xg6uCwlAlvPy9RDCa46T1eEP_qVL9WVJoRnuRUU","lore_tm_v1_Ut0XYbdcUBKGaQ-E7W_4safpmnsBuNHvDKUB7SnGQSI","lore_tm_v1_Kt9AJX31rMphgmDv2aZBQW5H-boRw7lG28Tjq2yPliQ","lore_tm_v1_82OqTnIP9yUwrqBzl-X6xfArXd0Zr9otvGiL3bf5MwI"]
sentry org view [<org>]; sentry project list [<org/project>]; sentry project view [<org/project>]; sentry issue list [<org/project>]; sentry alert issues list [<org/project>]; sentry alert issues create [<target>]; sentry alert metrics list [<target>]; sentry cli completion [<shell>]; sentry cli upgrade [<version>]; sentry agent-conversation list [<org>]; sentry agent-conversation view [<org>/]<conversation-id>; sentry replay list [<org/project>]; sentry release list [<org/project>]; sentry release deploy <org/version> <environment> [<name>]; sentry repo list [<org/project>]; sentry team list [<org/project>]; sentry explore [<target>]; sentry feedback list [<org/project>]; sentry monitor list [<org/project>]; sentry trace list [<org/project>]; sentry trial list [<org>]; sentry trial start <name> [<org>]; and sentry init [<target>] [<directory>].apps/cli-docs/src/fragments/commands/agent-conversation.md was emptied because the agent-conversation examples moved from the handwritten fragment into command-definition metadata.docs/src/fragments/; fragments are the source of truth only for content that cannot live in command definitions.CommandExample and CommandDocumentation in packages/cli/src/lib/command.ts. Each CommandExample has exact fields description and command; CommandDocumentation extends native Stricli docs with optional readonly examples?: readonly CommandExample[].prepareNativeDocs() in packages/cli/src/lib/command.ts; it converts structured examples to native help lines formatted as ${command} # ${description}, appended under Examples:.attachDocumentationMetadata() in packages/cli/src/lib/command.ts; it preserves the first customUsage entry as __primaryUsage and structured examples as __examples on the built command. buildCommand() now runs prepareNativeDocs() before enrichDocsWithSchema() so JSON field documentation retains its established position at the end of native help.buildListCommand and OrgListCommandDocs in packages/cli/src/lib/list-command.ts, plus buildDeleteCommand in packages/cli/src/lib/mutate-command.ts, to accept the shared CommandDocumentation type.__examples?: readonly CommandExample[] to the introspected Command type in packages/cli/src/lib/introspect.ts. buildCommandInfo() prefers these structured examples over legacy document examples and converts each to # ${description}\n${command}.getPositionalString() in packages/cli/src/lib/introspect.ts so optional tuple parameters render as [<placeholder>], while required tuple parameters remain <placeholder>; missing placeholder names still fall back to arg${index}.formatPositionalsTable() in packages/cli/script/generate-command-docs.ts to render optional positionals as [<placeholder>] and required positionals as <placeholder>.formatCommandExamples(examples: readonly string[]): string to packages/cli/script/generate-skill-markdown.ts. It returns an empty string for no examples; otherwise it emits an **Examples:** heading and a fenced bash block with examples separated by blank lines.packages/cli/script/generate-command-docs.ts and packages/cli/script/generate-skill.ts use the shared formatCommandExamples() helper rather than independently formatting examples.packages/cli/script/check-fragments.ts so commands with cmd.examples.length > 0 are skipped when checking for missing fragment examples.packages/cli/src/commands/agent-conversation/list.ts: it defines reusable POSITIONAL metadata with optional org, computes USAGE_HINT via getPositionalString(POSITIONAL), and now reports sentry agent-conversation list [<org>] in organization-resolution errors.agent-conversation list examples into structured command metadata, preserving this order: 1. “List recent agent conversations” — sentry agent-conversation list; 2. “Explicit organization” — sentry agent-conversation list my-org; 3. “Show more, last 24 hours” — sentry agent-conversation list --limit 50 --period 24h; 4. “Filter conversations” — sentry agent-conversation list -q "has:errors"; 5. “Paginate through results” — sentry agent-conversation list my-org -c next.packages/cli/src/commands/agent-conversation/view.ts to use canonical usage USAGE = "[<org>/]<conversation-id>", USAGE_HINT = "sentry agent-conversation view [<org>/]<conversation-id>", and customUsage: [USAGE].agent-conversation view examples into structured command metadata, preserving this order: 1. “View full transcript (organization auto-detected)” — sentry agent-conversation view conv-123; 2. “Explicit organization” — sentry agent-conversation view my-org/conv-123; 3. “JSON output” — sentry agent-conversation view my-org/conv-123 --json.parseConversationTarget() in packages/cli/src/commands/agent-conversation/view.ts: targets with multiple / characters now throw validationError("Conversation target must contain at most one '/'.", [USAGE_HINT], "conversation-id"); targets with an empty organization or conversation-ID segment throw validationError("Conversation target must include both an organization and conversation ID when using '/'.", [USAGE_HINT], "conversation-id").packages/cli/src/lib/errors.ts: always pass field when constructing the error; unfielded validation errors collapse into one Sentry fingerprint.${ORG}/${CONVERSATION_ID}/extra, ${ORG}//${CONVERSATION_ID}, ${ORG}/${CONVERSATION_ID}/, /${CONVERSATION_ID}, and ${ORG}/ must fail before organization resolution or API access, with a ValidationError, field: "conversation-id", and a message containing sentry agent-conversation view [<org>/]<conversation-id>.agent-conversation list organization-resolution errors use canonical command text sentry agent-conversation list [<org>].buildCommand() retains structured examples in __examples, getPositionalString() produces <required> [<optional>], and the property-based test checks optional/required tuple rendering with DEFAULT_NUM_RUNS.[<org>]; view positional syntax is [<org>/]<conversation-id>; list examples include # Explicit organization\nsentry agent-conversation list my-org; and view examples render through formatCommandExamples() as a Markdown **Examples:** section with a fenced bash block./; therefore [<org>/]<conversation-id> contains at most one slash, text before it is the organization, and text after it is the conversation ID. Without a slash, the full value is the conversation ID and the organization is auto-detected.packages/cli/src/commands/agent-conversation/view.ts showed the execution sequence: applyFreshFlag(flags); reject a missing/blank target with new ContextError("Conversation ID", USAGE_HINT, []); parse the target; await resolveOrg({ org: orgArg, cwd }); reject unresolved organization with new ContextError("Organization", USAGE_HINT); fetch via withProgress({ message: "Fetching conversation spans...", json: flags.json }, () => getConversationSpans(org, conversationId)); build via buildTranscriptResult(conversationId, org, spans, title); set result.truncated = truncated; and yield new CommandOutput<TranscriptResult>(result).sentry help --json behavior from packages/cli/src/commands/help.ts: JSON mode always gets structured output, and it never triggers the human-only formatHelpHuman path.formatCommandExamples, CommandDocumentation, and __examples across packages/cli/script/generate-skill.ts, packages/cli/script/generate-skill-markdown.ts, packages/cli/script/generate-command-docs.ts, packages/cli/src/lib/command.ts, packages/cli/src/lib/introspect.ts, packages/cli/src/lib/list-command.ts, packages/cli/src/lib/mutate-command.ts, and associated tests.listConversations and getConversationSpans in packages/cli/src/lib/api/conversations.ts, re-exported from packages/cli/src/lib/api-client.ts, and consumed by packages/cli/src/commands/agent-conversation/list.ts and packages/cli/src/commands/agent-conversation/view.ts.