DashboardcliSession 1UT0KX8W4zH7

Session 1UT0KX8W4zH7

Full ID: 1UT0KX8W4zH7hqVRY
Messages: 113
Distillations: 14
Time range: 2026-09-08 20:04:27 — 2026-09-08 20:33:15

Conversation (113 messages)

In /home/byk/Code/getsentry/cli-pr-1558, perform a medium-thorough read-only exploration of how CLI usage headings and examples are generated from Stricli command definitions. Focus on PR #1558's agent-conversation list/view changes. Identify every source of truth for customUsage, positional parameters, usage examples, ContextError hints, generated command docs, generated skill references, and skill index entries. Determine the likely root cause that forced the PR to patch generated Markdown/examples. Return exact file paths and symbols, explain the data flow, and propose the smallest architectural fix that makes Stricli definitions the ground truth. Do not edit files or run mutating VCS commands.

gateway · 2026-09-08 20:04:27
result
/home/byk/Code/getsentry/cli-pr-1558/AGENTS.md
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/AGENTS.md
gateway · 2026-09-08 20:04:56
result
/home/byk/Code/getsentry/cli-pr-1558/.lore.md
gateway · 2026-09-08 20:05:02
result
<path>/home/byk/Code/getsentry/cli-pr-1558/AGENTS.md</path>
<type>file</type>
<content>
1: # Jared (Outpost agent)
2: 
3: Autonomous GitHub coding agent. Work in `/workspace/repo`.
4: 
5: ## Model tiers
6: 
7: The primary model is chosen per event (see `src/agents/models.ts`): heavy for
8: code-producing situations, cheaper for lightweight ones.
9: 
10: | Role | Subagent | Model |
11: | --- | --- | --- |
12: | Triage / plan / review (heavy) | (primary Jared) | Claude Opus 4.8 |
13: | Triage / plan / review (light) | (primary Jared) | xAI Grok 4.3 |
14: | Explore | `explore` | OpenAI gpt-5-mini |
15: | Implement | `implement` | Moonshot kimi-k2.7-code |
16: | Ship (commit/push/PR) | `ship` | xAI Grok (`grok-build-0.1`) |
17: 
18: Pipeline: triage → explore → plan → implement → review → ship.
19: (`worker` is a deprecated alias of `implement`.)
20: 
21: Operators also talk to Jared directly from the Outpost dashboard. ...
gateway · 2026-09-08 20:05:06
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/AGENTS.md</path>
<type>file</type>
<content>
1: # AGENTS.md
2: 
3: Guidelines for AI agents working in this codebase.
4: 
5: ## Project Overview
6: 
7: **Sentry CLI** is a command-line interface for [Sentry](https://sentry.io), built with Node.js, [pnpm](https://pnpm.io), and [Stricli](https://bloomberg.github.io/stricli/). It lives in `packages/cli` of a pnpm workspace; the docs site lives in `apps/cli-docs`.
8: 
9: ### Goals
10: 
11: - **Zero-config experience** - Auto-detect project context from DSNs in source code and env files
12: - **AI-powered debugging** - Integrate Seer AI for root cause analysis and fix plans
13: - **Developer-friendly** - Follow `gh` CLI conventions for intuitive UX
14: - **Agent-friendly** - JSON output and predictable behavior for AI coding agents
15: - **Fast** - Native binaries via Node SEA (fossilize), SQLite caching for API responses
16: 
17: ### Key Features
18: 
19: - **DSN Auto-Detection** - ...
gateway · 2026-09-08 20:06:05
result
<path>/home/byk/Code/getsentry/cli-pr-1558</path>
<type>directory</type>
<entries>
.craft.yml
.git
.github/
.gitignore
.lore.md
.nojekyll
.npmrc
AGENTS.md
apps/
CHANGELOG.md
codemods/
LICENSE.md
package.json
packages/
pnpm-lock.yaml
pnpm-workspace.yaml
README.md

(17 entries)
</entries>
gateway · 2026-09-08 20:06:14
result
## fix/agent-conversation-reference-root-cause...origin/pr-1558
bbaa7b3b7 (HEAD -> fix/agent-conversation-reference-root-cause, origin/pr-1558) fix(docs): correct agent conversation argument syntax
9d0901b10 feat(local): Add agent debugging stream (#1538)
72c307f47 fix(cli): log UID resolution failures in sentry cli fix (#1541)
e710ce905 fix(telemetry): log process-tree walk failures in agent detection (#1542)
6e3e7e13a feat(config): follow XDG Base Directory spec for config location (#1503)
17e110300 fix(init): stop recording skipped verification as an error (#1544)
c0c9c8274 fix(docs): Explain regional model unavailability (#1537)
2d2fbffb6 fix(init): gate unsupported --features and tag dry-run runs (#1535)
02f6e8d1d fix(lint): force-ignore output.ts from Biome type analysis (200k limit) (#1536)
66a527596 feat(init): track completion-screen actions in run telemetry (#1534)
dc5b79c2f fix(telemetry): Silence CliError for process exit code 1 (#1449)
657a19450 fix(dashboards): Remove ...
gateway · 2026-09-08 20:06:20
result
M	apps/cli-docs/src/fragments/commands/agent-conversation.md
M	packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md
M	packages/cli/plugins/sentry-cli/skills/sentry-cli/references/agent-conversation.md
M	packages/cli/src/commands/agent-conversation/list.ts
M	packages/cli/src/commands/agent-conversation/view.ts
M	packages/cli/test/script/generate-skill-markdown.test.ts
 .../src/fragments/commands/agent-conversation.md   |  9 +++++---
 .../plugins/sentry-cli/skills/sentry-cli/SKILL.md  |  4 ++--
 .../sentry-cli/references/agent-conversation.md    | 13 +++++++----
 .../cli/src/commands/agent-conversation/list.ts    |  1 +
 .../cli/src/commands/agent-conversation/view.ts    |  1 +
 .../test/script/generate-skill-markdown.test.ts    | 27 ++++++++++++++++++++++
 6 files changed, 45 insertions(+), 10 deletions(-)
gateway · 2026-09-08 20:06:30
result
{"baseRefName":"main","baseRefOid":"9d0901b10a154ae79220a9f99f463a024908ceb5","body":"The agent-conversation reference currently shows `sentry agent-conversation view my-org conv-123`, but `view` accepts one `[<org>/]<conversation-id>` positional argument. The list and view headings also make the organization appear mandatory even though both support detection.\n\nCorrect the authoritative examples to use `my-org/conv-123`, include the detected-organization form, and add command-specific usage metadata. Regenerate the skill index/reference with the existing generator. Command execution and argument parsing are unchanged.\n\nValidation:\n\n- Both new documentation regressions fail against current main before the correction.\n- Generated API schema, SDK, command docs and skills through the existing scripts.\n- 101 focused command, API, formatter and documentation tests passed across five files.\n- Biome checked the three TypeScript files with no fixes or ...
gateway · 2026-09-08 20:06:41
result
diff --git a/apps/cli-docs/src/fragments/commands/agent-conversation.md b/apps/cli-docs/src/fragments/commands/agent-conversation.md
index ca9b2b2e3..3fa952c15 100644
--- a/apps/cli-docs/src/fragments/commands/agent-conversation.md
+++ b/apps/cli-docs/src/fragments/commands/agent-conversation.md
@@ -25,9 +25,12 @@ sentry agent-conversation list my-org -c next
 ### View a conversation transcript
 
 ```bash
-# View full transcript
-sentry agent-conversation view my-org conv-123
+# View full transcript (organization auto-detected)
+sentry agent-conversation view conv-123
+
+# Explicit organization
+sentry agent-conversation view my-org/conv-123
 
 # JSON output
-sentry agent-conversation view my-org conv-123 --json
+sentry agent-conversation view my-org/conv-123 --json
 ```
diff --git a/packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md b/packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md
index 4b8b785ba..8422018c2 100644
--- ...
gateway · 2026-09-08 20:06:54
result
Found 7 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/command.test.ts:
  Line 186:         customUsage: ["<name>:<kind>..."],


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts:
  Line 98:  * Native Stricli documentation. When `customUsage` is present, its first line

  Line 841:   // Stricli uses customUsage for native help but does not expose it on the

  Line 843:   const primaryUsage = enrichedDocs.customUsage?.[0];


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation/view.ts:
  Line 62:     customUsage: ["[<org>/]<conversation-id>"],


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation/list.ts:
  Line 101:     customUsage: ["[<org>]"],


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/project/create.ts:
  Line 609:     customUsage: ["[<org>/]<name>:<platform>..."],
gateway · 2026-09-08 20:07:00
result
Found 51 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/script/generate-skill-markdown.test.ts:
  Line 1: /** Tests for generated command-heading and example association parsing. */

  Line 8: } from "../../script/generate-skill-markdown.js";


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/e2e/skill-eval.test.ts:
  Line 19: import { generatePlan } from "../skill-eval/helpers/planner.js";


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/generate-skill.ts:
  Line 14:  *   tsx script/generate-skill.ts

  Line 29: } from "./generate-skill-markdown.js";

  Line 32: // Bootstrap: ensure the generated skill-content module exists before

  Line 39: const SKILL_CONTENT_PATH = "src/generated/skill-content.ts";

  Line 778:  * strategy used by generate-command-docs.ts. This eliminates the

  Line 932: // Generate src/generated/skill-content.ts with inlined file contents.

  Line 948:  * Auto-generated by script/generate-skill.ts — do not edit manually. ...
gateway · 2026-09-08 20:07:05
result
No files found
gateway · 2026-09-08 20:07:12
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation</path>
<type>directory</type>
<entries>
index.ts
list.ts
view.ts

(3 entries)
</entries>
gateway · 2026-09-08 20:07:20
result
Found 100 matches (more matches available)
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trial/start.ts:
  Line 23: import { ContextError, ValidationError } from "../../lib/errors.js";

  Line 85:       "Examples:\n" +

  Line 139:       throw new ContextError("Organization", "sentry trial start <name> <org>");


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trial/list.ts:
  Line 12: import { ContextError } from "../../lib/errors.js";

  Line 205:       "Examples:\n" +

  Line 236:       throw new ContextError("Organization", "sentry trial list <org>");


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trace/view.ts:
  Line 25:   ContextError,

  Line 61: /** Usage hint for ContextError messages */

  Line 62: const USAGE_HINT = "sentry trace view [<org>/<project>/]<trace-id>";

  Line 407:     throw new ContextError("Organization", `sentry issue view ${issueShortId}`);

  Line 529:         USAGE_HINT

  Line 535:         ...
gateway · 2026-09-08 20:07:26
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation/list.ts</path>
<type>file</type>
<content>
1: /**
2:  * sentry agent-conversation list
3:  *
4:  * List recent agent conversations from Sentry projects.
5:  */
6: 
7: import type { SentryContext } from "../../context.js";
8: import { listConversations } from "../../lib/api-client.js";
9: import { validateLimit } from "../../lib/arg-parsing.js";
10: import {
11:   advancePaginationState,
12:   buildPaginationContextKey,
13:   hasPreviousPage,
14:   resolveCursor,
15: } from "../../lib/db/pagination.js";
16: import { ContextError } from "../../lib/errors.js";
17: import { formatConversationTable } from "../../lib/formatters/conversation.js";
18: import { filterFields } from "../../lib/formatters/json.js";
19: import { CommandOutput } from "../../lib/formatters/output.js";
20: import {
21:   buildListCommand,
22:   LIST_DEFAULT_LIMIT,
23:   LIST_MAX_LIMIT,
24:   LIST_MIN_LIMIT,
25:   ...
gateway · 2026-09-08 20:07:39
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation/view.ts</path>
<type>file</type>
<content>
1: /**
2:  * sentry agent-conversation view
3:  *
4:  * View the transcript of a specific agent conversation.
5:  */
6: 
7: import type { SentryContext } from "../../context.js";
8: import { getConversationSpans } from "../../lib/api-client.js";
9: import { buildCommand } from "../../lib/command.js";
10: import { ContextError } from "../../lib/errors.js";
11: import {
12:   buildTranscriptResult,
13:   formatTranscriptResult,
14:   type TranscriptResult,
15: } from "../../lib/formatters/conversation.js";
16: import { CommandOutput } from "../../lib/formatters/output.js";
17: import {
18:   applyFreshFlag,
19:   FRESH_ALIASES,
20:   FRESH_FLAG,
21: } from "../../lib/list-command.js";
22: import { withProgress } from "../../lib/polling.js";
23: import { resolveOrg } from "../../lib/resolve-target.js";
24: 
25: type ViewFlags = {
26:   readonly json: ...
gateway · 2026-09-08 20:07:48
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation/index.ts</path>
<type>file</type>
<content>
1: /**
2:  * sentry agent-conversation
3:  *
4:  * List and view agent conversations from Sentry Explore.
5:  */
6: 
7: import { buildRouteMap } from "../../lib/route-map.js";
8: import { listCommand } from "./list.js";
9: import { viewCommand } from "./view.js";
10: 
11: export const conversationRoute = buildRouteMap({
12:   routes: {
13:     list: listCommand,
14:     view: viewCommand,
15:   },
16:   defaultCommand: "list",
17:   docs: {
18:     brief: "List and view agent conversations",
19:     fullDescription:
20:       "List and view agent conversations from Sentry Explore.\n\n" +
21:       "Commands:\n" +
22:       "  list     List recent agent conversations\n" +
23:       "  view     View a conversation transcript\n",
24:     hideRoute: {},
25:   },
26: });

(End of file - total 26 lines)
</content>
gateway · 2026-09-08 20:07:58
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts</path>
<type>file</type>
<content>
1: /**
2:  * Command builder with telemetry, global flag injection, and output modes.
3:  *
4:  * Provides `buildCommand` — the standard command builder for all Sentry CLI
5:  * commands. It wraps Stricli's `buildCommand` with:
6:  *
7:  * 1. **Automatic flag/arg telemetry** — captures flag values and positional
8:  *    arguments as Sentry span context for observability.
9:  *
10:  * 2. **Hidden global logging flags** — injects `--log-level` and `--verbose`
11:  *    into every command's parameters. These are intercepted before the original
12:  *    `func` runs: the logger level is set, and the injected flags are stripped
13:  *    so the original function never sees them. If a command already defines its
14:  *    own `--verbose` flag (e.g. `api` uses it for HTTP output), the injected
15:  *    one is skipped and the command's own value is used for both purposes. ...
gateway · 2026-09-08 20:08:04
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts</path>
<type>file</type>
<content>
760:     // before the help-recovery path could show the command's help text.
761:     try {
762:       if (requiresAuth && !getAuthConfig()) {
763:         throw new AuthError("not_authenticated");
764:       }
765: 
766:       // Validate rc-sourced URL against the active token's host. Deferred
767:       // to here (instead of boot) so commands can opt out via skipRcUrlCheck.
768:       if (!skipRcUrlCheck && "cwd" in this) {
769:         const { assertRcUrlTrusted } = await import("./sentryclirc.js");
770:         await assertRcUrlTrusted(this.cwd as string);
771:       }
772: 
773:       // Execution phase: core command logic, API calls, org/project resolution
774:       const returned = await withTracing(
775:         "exec",
776:         "cli.command.exec",
777:         async () => {
778:           const generator = originalFunc.call(
779:             this,
780:         ...
gateway · 2026-09-08 20:08:17
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/introspect.ts</path>
<type>file</type>
<content>
1: /**
2:  * Route Tree Introspection
3:  *
4:  * Shared module for extracting structured metadata from Stricli's route tree.
5:  * Used at runtime by `sentry help --json` and at build time by `generate-skill.ts`.
6:  *
7:  * While @stricli/core exports RouteMap and Command types, they require complex
8:  * generic parameters (CommandContext) and don't export internal types like
9:  * RouteMapEntry or FlagParameter. These simplified types are purpose-built
10:  * for introspection and documentation generation.
11:  */
12: 
13: import {
14:   extractSchemaFields,
15:   type SchemaFieldInfo,
16: } from "./formatters/output.js";
17: import { fuzzyMatch } from "./fuzzy.js";
18: 
19: // ---------------------------------------------------------------------------
20: // Stricli Runtime Types (simplified for introspection)
21: // ...
gateway · 2026-09-08 20:08:27
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/generate-skill-markdown.ts</path>
<type>file</type>
<content>
1: /**
2:  * Markdown parsing helpers shared by the skill generator and its tests.
3:  */
4: 
5: /** Matches a generated command heading and stops before positional usage. */
6: const COMMAND_HEADING_RE =
7:   /^`sentry\s+([^<[`\s]+(?:\s+[^<[`\s]+)*)(?:\s*(?:<|\[)[^`]*)?`$/;
8: 
9: /** Extract the literal command path from a generated command heading. */
10: export function extractCommandPathFromHeading(
11:   heading: string
12: ): string | undefined {
13:   const match = COMMAND_HEADING_RE.exec(heading);
14:   return match?.[1] ? `sentry ${match[1]}` : undefined;
15: }
16: 
17: /** Find the command whose literal path appears in a loose example block. */
18: export function matchExampleToCommand(
19:   code: string,
20:   commandPaths: readonly string[],
21:   groupFallback: string,
22:   defaultCommandPath?: string
23: ): string | undefined {
24:   // Prefer ...
gateway · 2026-09-08 20:08:35
result
Found 100 matches (more matches available)
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/text-import-plugin.ts:
  Line 49: const TEXT_IMPORT_NS = "text-import";

  Line 50: const FILE_PATH_NS = "file-path-import";

  Line 51: const ANY_FILTER = /.*/;

  Line 54: const TS_EXTENSIONS = new Set([".ts", ".tsx", ".jsx"]);

  Line 63: const REQUIRE_BANNER =

  Line 73: async function prebundleTs(sourcePath: string, outPath: string): Promise<void> {

  Line 90: function resolveOutdir(build: {

  Line 98: const GREP_WORKER_SOURCE_RE = /grep-worker-source\.(js|ts)$/;


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/sdk-declarations.ts:
  Line 11: const SENTRY_OPTIONS_START = /export type SentryOptions = \{/m;

  Line 12: const SENTRY_OPTIONS_END = /^\}\s*;/;

  Line 21: export function extractSentryOptions(sdkTypesSource: string): string {

  Line 53: export function buildCoreDeclarations(sdkTypesSource: string): string ...
gateway · 2026-09-08 20:08:41
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/generate-skill.ts</path>
<type>file</type>
<content>
1: #!/usr/bin/env tsx
2: /**
3:  * Generate Skill Files from Stricli Command Metadata and Docs
4:  *
5:  * Introspects the CLI's route tree and merges with documentation
6:  * to generate structured documentation for AI agents.
7:  *
8:  * Produces:
9:  *   - SKILL.md: compact index with agent guidance + command summaries
10:  *   - references/*.md: full per-route command documentation
11:  *   - index.json: skill discovery manifest for .well-known
12:  *
13:  * Usage:
14:  *   tsx script/generate-skill.ts
15:  *
16:  * Output:
17:  *   plugins/sentry-cli/skills/sentry-cli/SKILL.md
18:  *   plugins/sentry-cli/skills/sentry-cli/references/*.md
19:  *   docs/public/.well-known/skills/index.json
20:  */
21: 
22: import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
23: import { access, readFile, writeFile } from "node:fs/promises";
24: import type { Token ...
gateway · 2026-09-08 20:08:49
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/generate-skill.ts</path>
<type>file</type>
<content>
130:   "json",
131:   "fields",
132:   "help",
133:   "helpAll",
134:   "log-level",
135: ]);
136: 
137: // ---------------------------------------------------------------------------
138: // Markdown Parsing Utilities
139: // ---------------------------------------------------------------------------
140: 
141: /** Strip YAML frontmatter from markdown content */
142: function stripFrontmatter(markdown: string): string {
143:   const match = markdown.match(FRONTMATTER_REGEX);
144:   return match ? markdown.slice(match[0].length) : markdown;
145: }
146: 
147: /** Strip MDX/Astro import statements and JSX components */
148: function stripMdxComponents(markdown: string): string {
149:   let result = markdown.replace(/^import\s+.*?;\s*$/gm, "");
150:   result = result.replace(/^export\s+.*?;\s*$/gm, "");
151:   result = result.replace(/<[A-Z][a-zA-Z]*[^>]*\/>/g, "");
152:   ...
gateway · 2026-09-08 20:08:56
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/generate-skill.ts</path>
<type>file</type>
<content>
476: async function extractRoutes(routeMap: RouteMap): Promise<RouteInfo[]> {
477:   const result: RouteInfo[] = [];
478:   for (const entry of routeMap.getAllEntries()) {
479:     if (entry.hidden) {
480:       continue;
481:     }
482:     const routeName = entry.name.original;
483:     const target = entry.target;
484:     const defaultCommandName = isRouteMap(target)
485:       ? findDefaultCommandName(target)
486:       : undefined;
487:     const docExamples = await loadCommandExamples(
488:       routeName,
489:       defaultCommandName
490:     );
491:     if (isRouteMap(target)) {
492:       result.push({
493:         name: routeName,
494:         brief: target.brief,
495:         commands: extractRouteGroupCommands(target, routeName, docExamples),
496:       });
497:     } else if (isCommand(target)) {
498:       const path = `sentry ${routeName}`;
499:       ...
gateway · 2026-09-08 20:09:05
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/generate-skill.ts</path>
<type>file</type>
<content>
770: 
771: /** Result of generating all skill files */
772: type GeneratedFiles = Map<string, string>;
773: 
774: /**
775:  * Map each route to its own reference file (1:1 mapping).
776:  *
777:  * Every visible route produces its own reference file, matching the
778:  * strategy used by generate-command-docs.ts. This eliminates the
779:  * need for manual route-to-reference mappings that can go stale.
780:  */
781: function groupRoutesByReference(
782:   routeInfos: RouteInfo[]
783: ): Map<string, RouteInfo[]> {
784:   const groups = new Map<string, RouteInfo[]>();
785:   for (const route of routeInfos) {
786:     if (route.name === "help") {
787:       continue;
788:     }
789:     groups.set(route.name, [route]);
790:   }
791:   return groups;
792: }
793: 
794: /**
795:  * Generate all skill files: SKILL.md index + per-route reference files. ...
gateway · 2026-09-08 20:09:15
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/generate-command-docs.ts</path>
<type>file</type>
<content>
1: #!/usr/bin/env tsx
2: /**
3:  * Generate Command Reference & Configuration Documentation
4:  *
5:  * Introspects the CLI's route tree and env var registry to generate
6:  * accurate reference pages for the documentation website. Flags, arguments,
7:  * aliases, and environment variables are extracted directly from source code,
8:  * preventing documentation drift.
9:  *
10:  * Each generated page combines:
11:  *   1. Auto-generated reference — from CLI metadata or env registry
12:  *   2. Hand-written fragment — examples, guides, tips (from docs/src/fragments/)
13:  *
14:  * The generated output is gitignored. Fragment files are the committed
15:  * source of truth for custom content.
16:  *
17:  * Usage:
18:  *   tsx script/generate-command-docs.ts
19:  *
20:  * Output:
21:  *   docs/src/content/docs/commands/{route}.md  (one per visible route)
22:  *   ...
gateway · 2026-09-08 20:09:22
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/generate-command-docs.ts</path>
<type>file</type>
<content>
268: /** Known acronyms that should be fully uppercased in titles */
269: const ACRONYMS = new Set(["api", "cli"]);
270: 
271: function capitalize(s: string): string {
272:   if (ACRONYMS.has(s)) {
273:     return s.toUpperCase();
274:   }
275:   return s.charAt(0).toUpperCase() + s.slice(1);
276: }
277: 
278: // ---------------------------------------------------------------------------
279: // Index Table Generation
280: // ---------------------------------------------------------------------------
281: 
282: /**
283:  * Generate the commands table for index.md.
284:  * Uses the route order from extractAllRoutes() (which preserves the
285:  * insertion order from app.ts's buildRouteMap) — no manual constant needed.
286:  */
287: function generateCommandsTable(allRoutes: RouteInfo[]): string {
288:   const lines: string[] = [];
289:   lines.push("| Command | ...
gateway · 2026-09-08 20:09:28
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/paths.ts</path>
<type>file</type>
<content>
1: /**
2:  * Shared path constants for build/generate/check scripts.
3:  *
4:  * These scripts run with the CWD set to this package root (`packages/cli/`).
5:  * The documentation site lives in a sibling workspace package
6:  * (`apps/cli-docs/`), so cross-package paths are resolved relative to this
7:  * package root. Centralizing the docs root here keeps the monorepo layout in
8:  * one place instead of scattering `../../apps/cli-docs` literals across scripts.
9:  */
10: 
11: /** Docs site package root, relative to this package (`packages/cli/`). */
12: export const DOCS_ROOT = "../../apps/cli-docs";
13: 
14: /** Docs content/source directories, relative to this package. ...
gateway · 2026-09-08 20:09:36
result
No files found
gateway · 2026-09-08 20:10:16
result
Found 69 matches
/home/byk/Code/getsentry/cli-pr-1558/CHANGELOG.md:
  Line 48: - Rename AI conversations to agent conversations by @ArthurKnaus in [#1485](https://github.com/getsentry/cli/pull/1485)


/home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/fragments/commands/agent-conversation.md:
  Line 9: # List recent agent conversations

  Line 10: sentry agent-conversation list

  Line 13: sentry agent-conversation list my-org

  Line 16: sentry agent-conversation list --limit 50 --period 24h

  Line 19: sentry agent-conversation list -q "has:errors"

  Line 22: sentry agent-conversation list my-org -c next

  Line 29: sentry agent-conversation view conv-123

  Line 32: sentry agent-conversation view my-org/conv-123

  Line 35: sentry agent-conversation view my-org/conv-123 --json


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/script/generate-skill-markdown.test.ts:
  Line 34:     expect(reference).toContain("### `sentry agent-conversation list [<org>]`");

  Line 36:    ...
gateway · 2026-09-08 20:10:24
result
<path>/home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/fragments/commands/agent-conversation.md</path>
<type>file</type>
<content>
1: 
2: 
3: 
4: ## Examples
5: 
6: ### List conversations
7: 
8: ```bash
9: # List recent agent conversations
10: sentry agent-conversation list
11: 
12: # Explicit organization
13: sentry agent-conversation list my-org
14: 
15: # Show more, last 24 hours
16: sentry agent-conversation list --limit 50 --period 24h
17: 
18: # Filter conversations
19: sentry agent-conversation list -q "has:errors"
20: 
21: # Paginate through results
22: sentry agent-conversation list my-org -c next
23: ```
24: 
25: ### View a conversation transcript
26: 
27: ```bash
28: # View full transcript (organization auto-detected)
29: sentry agent-conversation view conv-123
30: 
31: # Explicit organization
32: sentry agent-conversation view my-org/conv-123
33: 
34: # JSON output
35: sentry agent-conversation view my-org/conv-123 --json
36: ```

(End of file - total 36 ...
gateway · 2026-09-08 20:10:34
result
Found 100 matches (more matches available)
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/which.ts:
  Line 28:   command: string,


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/upgrade.ts:
  Line 199:   command: string,


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/db/sqlite.ts:
  Line 434:   constructor(path: string) {


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command-suggestions.ts:
  Line 15:   command: string;

  Line 31:       command: "sentry issue view <issue-id>",

  Line 37:   ["issue/get", { command: "sentry issue view <issue-id>" }],

  Line 38:   ["issue/details", { command: "sentry issue view <issue-id>" }],

  Line 39:   ["issue/detail", { command: "sentry issue view <issue-id>" }],

  Line 40:   ["issue/info", { command: "sentry issue view <issue-id>" }],

  Line 46:       command:

  Line 54:       command:

  Line 62:       command:

  Line 70:       command:

  Line 78:       command:

  Line 86:       ...
gateway · 2026-09-08 20:10:40
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/errors.ts</path>
<type>file</type>
<content>
300: }
301: 
302: const DEFAULT_CONTEXT_ALTERNATIVES = [
303:   "Run from a directory with a Sentry DSN in source code or .env files",
304:   "Set SENTRY_ORG and SENTRY_PROJECT (or SENTRY_DSN) environment variables",
305:   "Run 'sentry org list' to find your organization slug",
306:   "Run 'sentry project list <org>/' to find project slugs",
307: ] as const;
308: 
309: /**
310:  * Build the formatted context error message with usage hints.
311:  *
312:  * @param resource - What is required (e.g., "Organization", "Trace ID and span ID")
313:  * @param command - Single-line CLI usage example (e.g., "sentry org view <org-slug>")
314:  * @param alternatives - Alternative ways to provide the context
315:  * @param note - Optional informational context (e.g., "Found 2 DSN(s) that could not be resolved").
316:  *   Rendered as a separate "Note:" section after alternatives. ...
gateway · 2026-09-08 20:10:52
result
Found 100 matches (more matches available)
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/which.ts:
  Line 50:       // Pass command as a positional arg ($1) so it's never interpolated


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/version-check.ts:
  Line 128:  * Find the first positional (non-global-flag) token after the `cli` group at


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/trace-target.ts:
  Line 44:  * Parsed result from trace-related positional arguments.

  Line 96:  * Parse trace-related positional arguments into a {@link ParsedTraceTarget}. ...
gateway · 2026-09-08 20:11:00
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/help.ts</path>
<type>file</type>
<content>
1: /**
2:  * Custom Help Output
3:  *
4:  * Provides a branded, styled help output for the CLI.
5:  * Shows custom formatting when running `sentry` with no arguments.
6:  * Commands are auto-generated from Stricli's route structure.
7:  */
8: 
9: import { routes } from "../app.js";
10: import { formatBanner } from "./banner.js";
11: import { isAuthenticated } from "./db/auth.js";
12: import { TOP_LEVEL_ENV_VARS } from "./env-registry.js";
13: import { cyan, magenta, muted } from "./formatters/colors.js";
14: import {
15:   filterFields,
16:   formatJson,
17:   parseFieldsList,
18: } from "./formatters/json.js";
19: import { GLOBAL_FLAGS } from "./global-flags.js";
20: import {
21:   type CommandInfo,
22:   extractAllRoutes,
23:   getPositionalString,
24:   isCommand,
25:   isRouteMap,
26:   type RouteInfo,
27:   type RouteMap,
28:   type RouteMapEntry,
29:   ...
gateway · 2026-09-08 20:11:07
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/help.ts</path>
<type>file</type>
<content>
310: 
311: /**
312:  * Build the top-level env-var list for JSON output.
313:  *
314:  * Exposes exactly the entries marked `topLevel` in the registry so that
315:  * consumers (AI agents, docs tooling) can surface them without having to
316:  * re-parse the CLI's branded help.
317:  */
318: function buildTopLevelEnvVars(): HelpEnvVarInfo[] {
319:   return TOP_LEVEL_ENV_VARS.map((v) => ({
320:     name: v.name,
321:     brief: v.briefDescription ?? v.description.split("\n")[0] ?? "",
322:     description: v.description,
323:     example: v.example,
324:     defaultValue: v.defaultValue,
325:   }));
326: }
327: 
328: /**
329:  * Build the common flags list for JSON output.
330:  *
331:  * Exposes the same entries shown in the branded help so that consumers
332:  * (AI agents, docs tooling) can discover them programmatically. ...
gateway · 2026-09-08 20:11:12
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/help.ts</path>
<type>file</type>
<content>
650:   if (items.length === 2) {
651:     return `${items[0]} or ${items[1]}`;
652:   }
653:   return `${items.slice(0, -1).join(", ")}, or ${items.at(-1)}`;
654: }
655: 
656: // ---------------------------------------------------------------------------
657: // Human Rendering of Introspection Data
658: // ---------------------------------------------------------------------------
659: 
660: /**
661:  * Format a single flag for human display.
662:  *
663:  * @param flag - The flag info to format
664:  * @param aliases - Command alias map for short flag lookup
665:  * @returns Formatted flag string like "-l, --limit <value> - Max items"
666:  */
667: function formatFlagHuman(
668:   flag: import("./introspect.js").FlagInfo,
669:   aliases: Record<string, string>
670: ): string {
671:   const alias = Object.entries(aliases).find(([, v]) => v === flag.name)?.[0];
672:   let syntax ...
gateway · 2026-09-08 20:11:22
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/command.test.ts</path>
<type>file</type>
<content>
150: });
151: 
152: describe("buildCommand", () => {
153:   test("builds a valid command object", () => {
154:     const command = buildCommand({
155:       auth: false,
156:       docs: { brief: "Test command" },
157:       parameters: {
158:         flags: {
159:           verbose: { kind: "boolean", brief: "Verbose", default: false },
160:         },
161:       },
162:       async *func(_flags: { verbose: boolean }) {
163:         // no-op
164:       },
165:     });
166:     expect(command).toBeDefined();
167:   });
168: 
169:   test("handles commands with empty parameters", () => {
170:     const command = buildCommand({
171:       auth: false,
172:       docs: { brief: "Simple command" },
173:       parameters: {},
174:       async *func() {
175:         // no-op
176:       },
177:     });
178:     expect(command).toBeDefined();
179:   });
180: 
181:   test("retains ...
gateway · 2026-09-08 20:11:29
result
Found 100 matches (more matches available)
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/arg-parsing.test.ts:
  Line 57:   // Representative examples for documentation (invariants covered by property tests)

  Line 325:   // Representative examples for documentation (invariants covered by property tests)

  Line 326:   describe("representative examples", () => {


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/api/preprod-artifacts.test.ts:
  Line 305:   test("omits optional metadata fields when unset", async () => {

  Line 431:     // app_id + optional branch/project go through as query params.


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/detect-agent.test.ts:
  Line 287:   test("agent names are lowercase with optional hyphens", () => {

  Line 305:   test("agent names are lowercase with optional hyphens", () => {

  Line 529:   test("all values are lowercase with optional hyphens", () => ...
gateway · 2026-09-08 20:11:36
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/introspect.test.ts</path>
<type>file</type>
<content>
1: /**
2:  * Unit Tests for Route Tree Introspection
3:  *
4:  * Tests the shared introspection module used by `sentry help --json`
5:  * and `script/generate-skill.ts`.
6:  */
7: 
8: import { describe, expect, test } from "vitest";
9: import type {
10:   Command,
11:   FlagDef,
12:   RouteMap,
13:   RouteMapEntry,
14: } from "../../src/lib/introspect.js";
15: import {
16:   buildCommandInfo,
17:   extractAllRoutes,
18:   extractFlags,
19:   extractRouteGroupCommands,
20:   getPositionalString,
21:   isCommand,
22:   isRouteMap,
23:   resolveCommandPath,
24: } from "../../src/lib/introspect.js";
25: 
26: // ---------------------------------------------------------------------------
27: // Test fixtures
28: // ---------------------------------------------------------------------------
29: 
30: function makeCommand(overrides: Partial<Command> = {}): Command {
31:   ...
gateway · 2026-09-08 20:11:47
result
b421031dd feat(project): create multiple projects in one command (#1191)
dec974abc feat(project): create multiple projects in one command
96390e5f6 chore: pre-shape repo into pnpm-workspace monorepo layout (#1254)
cf165f5ba chore: pre-shape repo into pnpm-workspace monorepo layout
e11da2e85 chore: pre-shape repo into pnpm-workspace monorepo layout
gateway · 2026-09-08 20:11:59
result
b421031dd feat(project): create multiple projects in one command (#1191)
 apps/cli-docs/src/fragments/commands/project.md    |  10 +-
 packages/cli/AGENTS.md                             |  17 +
 .../plugins/sentry-cli/skills/sentry-cli/SKILL.md  |   2 +-
 .../skills/sentry-cli/references/project.md        |  14 +-
 packages/cli/script/generate-skill-markdown.ts     |  27 +
 packages/cli/script/generate-skill.ts              |  33 +-
 packages/cli/src/commands/project/create.ts        | 637 +++++++++++++--------
 packages/cli/src/lib/command.ts                    |  24 +-
 packages/cli/src/lib/complete.ts                   |  54 +-
 packages/cli/src/lib/completions.ts                |   6 +-
 packages/cli/src/lib/formatters/human.ts           |   9 +
 packages/cli/src/lib/help.ts                       |   8 +-
 packages/cli/src/lib/introspect.ts                 |   8 +-
 packages/cli/src/lib/resolve-team.ts               |   2 +-
 packages/cli/test/commands/project/create.test.ts  | ...
gateway · 2026-09-08 20:12:15
result
Found 2 matches
/home/byk/Code/getsentry/cli-pr-1558/.gitignore:
  Line 73: apps/cli-docs/src/content/docs/commands/

  Line 77: apps/cli-docs/public/.well-known/skills/index.json
gateway · 2026-09-08 20:12:23
result
<path>/home/byk/Code/getsentry/cli-pr-1558/.gitignore</path>
<type>file</type>
<content>
62: 
63: # Generated files (rebuilt at build time)
64: packages/cli/src/generated/
65: packages/cli/src/sdk.generated.ts
66: packages/cli/src/sdk.generated.d.cts
67: # ...except the sixel banner: it's small, deterministic (baked from the committed
68: # assets/banner-mask.png), and statically imported by src/lib/sixel.ts, so it must
69: # exist on a fresh checkout before any build step regenerates it.
70: !packages/cli/src/generated/banner-sixel.ts
71: 
72: # Generated docs pages (rebuilt from fragments + CLI introspection / env registry)
73: apps/cli-docs/src/content/docs/commands/
74: apps/cli-docs/src/content/docs/configuration.md
75: 
76: # Generated discovery manifest (rebuilt by generate:skill, served via symlinked skill files)
77: apps/cli-docs/public/.well-known/skills/index.json
78: 
79: # OpenCode
80: .opencode/
81: opencode.json*
82: 
83: # Throwaway documentation audit reports ...
gateway · 2026-09-08 20:12:32
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/package.json</path>
<type>file</type>
<content>
1: {
2:   "name": "sentry",
3:   "version": "0.45.0-dev.0",
4:   "description": "Sentry CLI - A command-line interface for using Sentry built by robots and humans for robots and humans",
5:   "repository": {
6:     "type": "git",
7:     "url": "git+https://github.com/getsentry/cli.git"
8:   },
9:   "main": "./dist/index.cjs",
10:   "type": "module",
11:   "types": "./dist/index.d.cts",
12:   "exports": {
13:     ".": {
14:       "import": {
15:         "types": "./dist/index.d.mts",
16:         "default": "./dist/index.mjs"
17:       },
18:       "require": {
19:         "types": "./dist/index.d.cts",
20:         "default": "./dist/index.cjs"
21:       }
22:     }
23:   },
24:   "bin": {
25:     "sentry": "./dist/bin.cjs"
26:   },
27:   "files": [
28:     "dist/bin.cjs",
29:     "dist/index.cjs",
30:     "dist/index.mjs",
31:     "dist/index.d.cts",
32:     "dist/index.d.mts",
33:   ...
gateway · 2026-09-08 20:12:39
result
Found 27 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/complete.ts:
  Line 132:   "agent-conversation list",

  Line 133:   "agent-conversation view",


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation/view.ts:
  Line 2:  * sentry agent-conversation view

  Line 30: const USAGE_HINT = "sentry agent-conversation view [<org>/]<conversation-id>";

  Line 68:       "  sentry agent-conversation view conv-123\n" +

  Line 69:       "  sentry agent-conversation view my-org/conv-123\n" +

  Line 70:       "  sentry agent-conversation view my-org/conv-123 --json\n",


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation/list.ts:
  Line 2:  * sentry agent-conversation list

  Line 60: const COMMAND_NAME = "agent-conversation list";

  Line 61: const PAGINATION_KEY = "agent-conversation-list";

  Line 98: export const listCommand = buildListCommand("agent-conversation", {

  Line 105:       "  sentry ...
gateway · 2026-09-08 20:12:46
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/app.ts</path>
<type>file</type>
<content>
1: import {
2:   type ApplicationText,
3:   buildApplication,
4:   text_en,
5:   UnexpectedPositionalError,
6:   UnsatisfiedPositionalError,
7: } from "@stricli/core";
8: import { conversationRoute } from "./commands/agent-conversation/index.js";
9: import { listCommand as conversationListCommand } from "./commands/agent-conversation/list.js";
10: import { alertRoute } from "./commands/alert/index.js";
11: import { apiCommand } from "./commands/api.js";
12: import { authRoute } from "./commands/auth/index.js";
13: import { whoamiCommand } from "./commands/auth/whoami.js";
14: import { bashHookCommand } from "./commands/bash-hook.js";
15: import { buildRoute } from "./commands/build/index.js";
16: import { cliRoute } from "./commands/cli/index.js";
17: import { codeMappingsRoute } from "./commands/code-mappings/index.js";
18: import { dartSymbolMapRoute } from ...
gateway · 2026-09-08 20:12:53
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/list-command.ts</path>
<type>file</type>
<content>
630: export type OrgListCommandDocs = {
631:   /** One-line description shown in `--help` summaries. */
632:   readonly brief: string;
633:   /** Multi-line description shown in the command's own `--help` output. */
634:   readonly fullDescription?: string;
635: };
636: 
637: /**
638:  * Format a {@link ListResult} as human-readable output using the config's
639:  * `displayTable` function. Handles empty results, headers, table body, and hints.
640:  *
641:  * @param result - The list result from a dispatch handler
642:  * @param config - The OrgListConfig providing the `displayTable` renderer
643:  * @returns Formatted string for terminal output
644:  */
645: function formatListHuman<TEntity, TWithOrg>(
646:   result: ListResult<TWithOrg>,
647:   config: OrgListConfig<TEntity, TWithOrg>
648: ): string {
649:   const parts: string[] = [];
650: 
651:   if ...
gateway · 2026-09-08 20:13:00
result
Found 7 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/org-list.ts:
  Line 238: export type ListCommandMeta = {


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/list-command.ts:
  Line 9:  *   LIST_TARGET_POSITIONAL, LIST_JSON_FLAG, LIST_CURSOR_FLAG,

  Line 69: export const LIST_TARGET_POSITIONAL = {

  Line 498: type ListCommandFunction<

  Line 515: export type ListCommandOptions = {

  Line 540: export function buildListCommand<

  Line 704:       positional: LIST_TARGET_POSITIONAL,
gateway · 2026-09-08 20:13:09
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/list-command.ts</path>
<type>file</type>
<content>
50:  * Absolute maximum items a list command will return.
51:  *
52:  * The Sentry API silently caps `per_page` at 100; commands auto-paginate
53:  * to fill larger limits but stop at this ceiling for practical CLI use.
54:  */
55: export const LIST_MAX_LIMIT = 1000;
56: 
57: /** Minimum allowed value for `--limit` across all list commands. */
58: export const LIST_MIN_LIMIT = 1;
59: 
60: /** Default number of items returned by list commands when `--limit` is omitted. */
61: export const LIST_DEFAULT_LIMIT = 25;
62: 
63: /**
64:  * Positional `org/project` parameter shared by all list commands.
65:  *
66:  * Accepts `<org>/`, `<org>/<project>`, or bare `<project>` (search).
67:  * Marked optional so the command falls back to auto-detection when omitted. ...
gateway · 2026-09-08 20:13:17
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/list-command.ts</path>
<type>file</type>
<content>
470:   const trimmed = target.trim();
471:   if (trimmed && getSubcommandsForRoute(routeName).has(trimmed)) {
472:     stderr.write(
473:       warning(
474:         `Tip: "${trimmed}" is a subcommand. Running: sentry ${routeName} ${trimmed}\n`
475:       )
476:     );
477:     return;
478:   }
479:   return target;
480: }
481: 
482: // ---------------------------------------------------------------------------
483: // Level C: list command builder with automatic subcommand interception
484: // ---------------------------------------------------------------------------
485: 
486: /** Base flags type (mirrors command.ts) */
487: type BaseFlags = Readonly<Partial<Record<string, unknown>>>;
488: 
489: /** Base args type (mirrors command.ts) */
490: type BaseArgs = readonly unknown[];
491: 
492: /**
493:  * Command function type that returns an async generator. ...
gateway · 2026-09-08 20:13:28
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/list-command.ts</path>
<type>file</type>
<content>
615:   } as typeof originalFunc;
616: 
617:   return buildCommand({
618:     ...builderArgs,
619:     parameters: mergedParams,
620:     func: wrappedFunc,
621:     output: builderArgs.output,
622:   });
623: }
624: 
625: // ---------------------------------------------------------------------------
626: // Level D: full command builder for dispatchOrgScopedList-based commands
627: // ---------------------------------------------------------------------------
628: 
629: /** Documentation strings for a list command built with `buildOrgListCommand`. */
630: export type OrgListCommandDocs = {
631:   /** One-line description shown in `--help` summaries. */
632:   readonly brief: string;
633:   /** Multi-line description shown in the command's own `--help` output. */
634:   readonly fullDescription?: string;
635: };
636: 
637: /**
638:  * Format a {@link ListResult} as ...
gateway · 2026-09-08 20:13:47
result
Vercel	fail	0	https://vercel.com/git/authorize?team=Sentry&slug=sentry&teamId=team_X2wL9ydOZqI86I3fHzJ6dmXs&type=github&job=%7B%22headInfo%22%3A%7B%22sha%22%3A%22bbaa7b3b722b87f1bccfe84063269cbbcabe2741%22%7D%2C%22id%22%3A%22QmcrwFJXoDF7Mpfu7y3MfXJgvx4jQutAavJezhT5qyyZqL%22%2C%22org%22%3A%22getsentry%22%2C%22prId%22%3A1558%2C%22repo%22%3A%22cli%22%7D	Authorization required to deploy.
Cursor Bugbot	pass	2m25s	https://cursor.com/docs/bugbot	
Seer Code Review	pass	2m20s	https://sentry.io	
Socket Security: Project Report	pass	13s	https://socket.dev/dashboard/org/sentry/sbom/f36469b9-ed5c-4c63-aa79-e82b0370d66f	
Socket Security: Pull Request Alerts	pass	2s	https://socket.dev	
semgrep-cloud-platform/scan	pass	1m52s	https://semgrep.dev/orgs/sentry/projects/4829728/scans/223842479	
gateway · 2026-09-08 20:14:02
result
[{"url":"https://api.github.com/repos/getsentry/cli/pulls/comments/3959093438","pull_request_review_id":5143168998,"id":3959093438,"node_id":"PRRC_kwDOQm6jAs7r-vi-","diff_hunk":"@@ -98,6 +98,7 @@ function jsonTransform(\n export const listCommand = buildListCommand(\"agent-conversation\", {\n   docs: {\n     brief: \"List recent agent conversations\",\n+    customUsage: [\"[<org>]\"],\n     fullDescription:\n       \"List recent agent conversations from a Sentry organization.\\n\\n\" +","path":"packages/cli/src/commands/agent-conversation/list.ts","commit_id":"bbaa7b3b722b87f1bccfe84063269cbbcabe2741","original_commit_id":"bbaa7b3b722b87f1bccfe84063269cbbcabe2741","user":{"login":"Copilot","id":175728472,"node_id":"BOT_kgDOCnlnWA","avatar_url":"https://avatars.githubusercontent.com/in/946600?v=4","gravatar_id":"","url":"https://api.github.com/users/Copilot","html_url":"https://github.com/apps/copilot-pull-request-reviewer","followers_url":"https://api.github.com/users/Copilot/followers...
gateway · 2026-09-08 20:14:09
result
[{"id":5143168998,"node_id":"PRR_kwDOQm6jAs8AAAABMo6H5g","user":{"login":"copilot-pull-request-reviewer[bot]","id":175728472,"node_id":"BOT_kgDOCnlnWA","avatar_url":"https://avatars.githubusercontent.com/in/946600?v=4","gravatar_id":"","url":"https://api.github.com/users/copilot-pull-request-reviewer%5Bbot%5D","html_url":"https://github.com/apps/copilot-pull-request-reviewer","followers_url":"https://api.github.com/users/copilot-pull-request-reviewer%5Bbot%5D/followers","following_url":"https://api.github.com/users/copilot-pull-request-reviewer%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/copilot-pull-request-reviewer%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/copilot-pull-request-reviewer%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/copilot-pull-request-reviewer%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/copilot-pull-request-reviewer%5Bbot%5D/orgs","repos_url":...
gateway · 2026-09-08 20:14:26
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/agent-skills.ts</path>
<type>file</type>
<content>
1: /**
2:  * Agent skill installation for AI coding assistants.
3:  *
4:  * Detects supported AI coding agents (currently Claude Code and agents that
5:  * use the shared `~/.agents` root) and installs the Sentry CLI skill files
6:  * so the agent can use CLI commands effectively.
7:  *
8:  * Skill file contents are embedded at build time (via a generated module
9:  * produced by script/generate-skill.ts), so no network fetch is needed.
10:  */
11: 
12: import { accessSync, constants, existsSync, mkdirSync } from "node:fs";
13: import { rename, rm, writeFile } from "node:fs/promises";
14: import { basename, dirname, join } from "node:path";
15: import { captureException } from "@sentry/node-core/light";
16: import { SKILL_FILES } from "../generated/skill-content.js";
17: 
18: /** Where skills are installed */
19: export type AgentSkillLocation = {
20:   /** Path where the ...
gateway · 2026-09-08 20:14:35
result
<path>/home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/public/.well-known</path>
<type>directory</type>
<entries>
skills/

(1 entries)
</entries>
gateway · 2026-09-08 20:14:40
result
<path>/home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/public/.well-known/skills</path>
<type>directory</type>
<entries>
index.json
sentry-cli/

(2 entries)
</entries>
gateway · 2026-09-08 20:14:47
result
<path>/home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/public/.well-known/skills/index.json</path>
<type>file</type>
<content>
1: {
2:   "skills": [
3:     {
4:       "name": "sentry-cli",
5:       "description": "Guide for using the Sentry CLI to interact with Sentry from the command line. Use when the user asks about viewing issues, events, projects, organizations, making API calls, or authenticating with Sentry via CLI.",
6:       "files": [
7:         "SKILL.md",
8:         "references/agent-conversation.md",
9:         "references/alert.md",
10:         "references/api.md",
11:         "references/auth.md",
12:         "references/build.md",
13:         "references/cli.md",
14:         "references/code-mappings.md",
15:         "references/dart-symbol-map.md",
16:         "references/dashboard.md",
17:         "references/debug-files.md",
18:         "references/docs.md",
19:         "references/event.md",
20:         "references/explore.md",
21:         ...
gateway · 2026-09-08 20:14:58
result
<path>/home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/public/.well-known/skills/sentry-cli</path>
<type>directory</type>
<entries>
references/
SKILL.md

(2 entries)
</entries>
gateway · 2026-09-08 20:15:08
result
directory 'apps/cli-docs/public/.well-known/skills/sentry-cli'
regular file 'apps/cli-docs/public/.well-known/skills/index.json'
gateway · 2026-09-08 20:15:17
result
apps/cli-docs/public/.well-known/skills/sentry-cli/SKILL.md
apps/cli-docs/public/.well-known/skills/sentry-cli/references
packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md
packages/cli/plugins/sentry-cli/skills/sentry-cli/references/agent-conversation.md
packages/cli/plugins/sentry-cli/skills/sentry-cli/references/alert.md
packages/cli/plugins/sentry-cli/skills/sentry-cli/references/api.md
packages/cli/plugins/sentry-cli/skills/sentry-cli/references/auth.md
packages/cli/plugins/sentry-cli/skills/sentry-cli/references/build.md
packages/cli/plugins/sentry-cli/skills/sentry-cli/references/cli.md
packages/cli/plugins/sentry-cli/skills/sentry-cli/references/code-mappings.md
packages/cli/plugins/sentry-cli/skills/sentry-cli/references/dart-symbol-map.md
packages/cli/plugins/sentry-cli/skills/sentry-cli/references/dashboard.md
packages/cli/plugins/sentry-cli/skills/sentry-cli/references/debug-files.md
packages/cli/plugins/sentry-cli/skills/sentry-cli/references/docs.md
packages/cli/p...
gateway · 2026-09-08 20:15:29
result
symbolic link 'apps/cli-docs/public/.well-known/skills/sentry-cli/SKILL.md' -> '../../../../../../packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md'
symbolic link 'apps/cli-docs/public/.well-known/skills/sentry-cli/references' -> '../../../../../../packages/cli/plugins/sentry-cli/skills/sentry-cli/references'
../../../../../../packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md
../../../../../../packages/cli/plugins/sentry-cli/skills/sentry-cli/references
gateway · 2026-09-08 20:15:38
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/plugins/README.md</path>
<type>file</type>
<content>
50: ```
51: cli/                              # Repository root
52: ├── .claude-plugin/
53: │   └── marketplace.json          # Marketplace manifest
54: ├── .cursor/
55: │   └── skills/
56: │       └── sentry-cli/
57: │           └── SKILL.md          # Symlink to plugins location
58: ├── plugins/
59: │   ├── README.md                 # This file
60: │   └── sentry-cli/
61: │       ├── .claude-plugin/
62: │       │   └── plugin.json       # Plugin manifest
63: │       └── skills/
64: │           └── sentry-cli/
65: │               └── SKILL.md      # CLI usage skill (auto-generated)
66: └── script/
67:     └── generate-skill.ts         # Generates SKILL.md from CLI commands
68: ```
69: 
70: ## Updating SKILL.md
71: 
72: The SKILL.md file is **auto-generated** from the CLI's command definitions. Do not edit it manually. ...
gateway · 2026-09-08 20:15:51
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/agent-conversation.md</path>
<type>file</type>
<content>
1: ---
2: name: sentry-cli-agent-conversation
3: version: 0.45.0-dev.0
4: description: List and view agent conversations
5: requires:
6:   bins: ["sentry"]
7:   auth: true
8: ---
9: 
10: # Agent-conversation Commands
11: 
12: List and view agent conversations
13: 
14: ### `sentry agent-conversation list [<org>]`
15: 
16: List recent agent conversations
17: 
18: **Flags:**
19: - `-n, --limit <value> - Number of conversations (1-1000) - (default: "25")`
20: - `-q, --query <value> - Search query`
21: - `-t, --period <value> - Time range: "7d", "2026-08-01..2026-09-01", ">=2026-08-01" - (default: "7d")`
22: - `-f, --fresh - Bypass cache, re-detect projects, and fetch fresh data`
23: - `-c, --cursor <value> - Navigate pages: "next", "prev", "first" (or raw cursor string)`
24: 
25: **JSON Fields** (use `--json --fields` to select ...
gateway · 2026-09-08 20:15:59
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md</path>
<type>file</type>
<content>
445: → Full flags and examples: `references/cli.md`
446: 
447: ### Code-mappings
448: 
449: Manage code mappings for stack trace linking
450: 
451: - `sentry code-mappings upload <path>` — Upload code mappings for stack trace linking
452: 
453: → Full flags and examples: `references/code-mappings.md`
454: 
455: ### Agent-conversation
456: 
457: List and view agent conversations
458: 
459: - `sentry agent-conversation list [<org>]` — List recent agent conversations
460: - `sentry agent-conversation view [<org>/]<conversation-id>` — View an agent conversation transcript
461: 
462: → Full flags and examples: `references/agent-conversation.md`
463: 
464: ### Dart-symbol-map
465: 
466: Work with Dart/Flutter symbol maps
467: 
468: - `sentry dart-symbol-map upload <path>` — Upload a Dart/Flutter symbol map to Sentry
469: 
470: → Full flags and examples: ...
gateway · 2026-09-08 20:16:07
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/script/generate-skill-markdown.test.ts</path>
<type>file</type>
<content>
1: /** Tests for generated command-heading and example association parsing. */
2: 
3: import { readFile } from "node:fs/promises";
4: import { describe, expect, test } from "vitest";
5: import {
6:   extractCommandPathFromHeading,
7:   matchExampleToCommand,
8: } from "../../script/generate-skill-markdown.js";
9: 
10: describe("extractCommandPathFromHeading", () => {
11:   test.each([
12:     ["`sentry issue view <issue-id>`", "sentry issue view"],
13:     [
14:       "`sentry project create [<org>/]<name>:<platform>...`",
15:       "sentry project create",
16:     ],
17:     ["`sentry auth status`", "sentry auth status"],
18:   ])("extracts the command path from %s", (heading, expected) => {
19:     expect(extractCommandPathFromHeading(heading)).toBe(expected);
20:   });
21: 
22:   test("ignores descriptive headings", () => {
23:     ...
gateway · 2026-09-08 20:16:16
result
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/tsconfig.json
gateway · 2026-09-08 20:16:23
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/tsconfig.json</path>
<type>file</type>
<content>
1: {
2:   "compilerOptions": {
3:     "lib": ["ESNext"],
4:     "target": "ESNext",
5:     "module": "ESNext",
6:     "jsx": "react-jsx",
7:     "moduleDetection": "force",
8:     "allowJs": true,
9:     "moduleResolution": "bundler",
10:     "allowImportingTsExtensions": true,
11:     "verbatimModuleSyntax": true,
12:     "noEmit": true,
13:     "resolveJsonModule": true,
14:     "strict": true,
15:     "skipLibCheck": true,
16:     "noFallthroughCasesInSwitch": true,
17:     "noUncheckedIndexedAccess": true,
18:     "noImplicitOverride": true,
19:     "esModuleInterop": true,
20:     "forceConsistentCasingInFileNames": true,
21:     "noUnusedLocals": false,
22:     "noUnusedParameters": false,
23:     "noPropertyAccessFromIndexSignature": false,
24:     "strictNullChecks": true
25:   },
26:   "include": ["src/**/*.ts", "src/**/*.tsx"],
27:   "exclude": ["node_modules", ...
gateway · 2026-09-08 20:16:41
result
src/commands/agent-conversation/list.ts(101,5): error TS2353: Object literal may only specify known properties, and 'customUsage' does not exist in type '{ readonly brief: string; readonly fullDescription?: string | undefined; }'.
src/index.ts(26,34): error TS2307: Cannot find module './sdk.generated.js' or its corresponding type declarations.
src/index.ts(34,32): error TS2307: Cannot find module './sdk.generated.js' or its corresponding type declarations.
gateway · 2026-09-08 20:17:13
result
bbaa7b3b7 fix(docs): correct agent conversation argument syntax
f1966f6e1 fix(cli): rename AI conversations to agent conversations (#1485)
bbaa7b3b7 fix(docs): correct agent conversation argument syntax
f1966f6e1 fix(cli): rename AI conversations to agent conversations (#1485)
b0f75c135 fix(conversation): Parse details envelope instead of bare span array (#1365)
7cf6483be feat: add `sentry conversation` command group for inspecting AI agent transcripts (#1020)
gateway · 2026-09-08 20:17:24
result
commit 7cf6483be5ee458c66d3ab2c40362b63b0f5ed8f
Author:     Sergiy Dybskiy <sergiy.dybskiy@sentry.io>
AuthorDate: Mon Aug 3 15:06:36 2026 -0400
Commit:     GitHub <noreply@github.com>
CommitDate: Mon Aug 3 19:06:36 2026 +0000

    feat: add `sentry conversation` command group for inspecting AI agent transcripts (#1020)
    
    ## Goal
    
    Give Sentry users a first-class, terminal-native way to inspect **AI
    agent
    conversations** — the same LLM/tool-call transcripts you can see in the
    Sentry
    UI's AI monitoring views — without leaving the shell or hand-rolling API
    calls.
    This is aimed squarely at the CLI's agent-friendly audience: people
    debugging
    agents want to pull a conversation's full transcript (and a scannable
    list of
    recent ones) into their own tooling. ...
gateway · 2026-09-08 20:17:36
result
     1	/**
     2	 * sentry conversation list
     3	 *
     4	 * List recent AI conversations from Sentry projects.
     5	 */
     6	
     7	import type { SentryContext } from "../../context.js";
     8	import { listConversations } from "../../lib/api-client.js";
     9	import { validateLimit } from "../../lib/arg-parsing.js";
    10	import {
    11	  advancePaginationState,
    12	  buildPaginationContextKey,
    13	  hasPreviousPage,
    14	  resolveCursor,
    15	} from "../../lib/db/pagination.js";
    16	import { ContextError } from "../../lib/errors.js";
    17	import { formatConversationTable } from "../../lib/formatters/conversation.js";
    18	import { filterFields } from "../../lib/formatters/json.js";
    19	import { CommandOutput } from "../../lib/formatters/output.js";
    20	import {
    21	  buildListCommand,
    22	  LIST_DEFAULT_LIMIT,
    23	  LIST_MAX_LIMIT,
    24	  LIST_MIN_LIMIT,
    25	  LIST_PERIOD_FLAG,
    26	  PERIOD_ALIASES,
    27	  paginationHint,
    ...
gateway · 2026-09-08 20:17:49
result
96390e5f6 chore: pre-shape repo into pnpm-workspace monorepo layout (#1254)
2a62159fe refactor: replace bun run with tsx/pnpm across scripts and CI (#999)
ff574c983 chore: regenerate docs
e367b4d60 feat(skill): steer agents away from manual org/project discovery (#1479)
196b219d9 feat(auth): Make bare sentry auth run login (#1380)
b421031dd feat(project): create multiple projects in one command (#1191)
96390e5f6 chore: pre-shape repo into pnpm-workspace monorepo layout (#1254)
ac37f70fd docs(getting-started): remove redundant Installation heading, fix platform support table (#1195)
2a62159fe refactor: replace bun run with tsx/pnpm across scripts and CI (#999)
ff574c983 chore: regenerate docs
gateway · 2026-09-08 20:18:08
result
ff574c983 chore: regenerate docs
 .claude-plugin/marketplace.json                    |   13 +
 .craft.yml                                         |   78 +
 .cursor/hooks.json                                 |   10 +
 .cursor/rules/bun-cli.mdc                          |  304 +++
 .cursor/rules/ultracite.mdc                        |  101 +
 .cursor/skills/sentry-cli/SKILL.md                 |    1 +
 .cursor/skills/sentry-cli/references               |    1 +
 .env.example                                       |    8 +
 .github/assets/banner.png                          |  Bin 0 -> 657870 bytes
 .github/workflows/changelog-preview.yml            |   14 +
 .github/workflows/ci.yml                           |  802 +++++++
 .github/workflows/cleanup-nightlies.yml            |   64 +
 .github/workflows/docs-preview.yml                 |  135 ++
 .github/workflows/eval-skill-fork.yml              |  100 +
 .github/workflows/release.yml                      |   44 +
 ...
gateway · 2026-09-08 20:18:15
result
Found 12 matches
/home/byk/Code/getsentry/cli-pr-1558/.github/workflows/ci.yml:
  Line 165:           # the auto-commit step can push regenerated docs back. Fork PRs leave

  Line 185:       - name: Generate docs and skill files

  Line 186:         run: pnpm run generate:docs

  Line 189:       - name: Check skill files

  Line 192:           if git diff --quiet packages/cli/plugins/sentry-cli/skills/sentry-cli/; then

  Line 217:           echo "::error::Generated files are out of date. Run 'pnpm run generate:docs' locally and commit the result."

  Line 637:       - name: Generate docs and skill files

  Line 638:         run: pnpm run generate:schema && pnpm run generate:docs

  Line 774:         run: pnpm run generate:schema && pnpm run generate:docs

  Line 830:           # and when skill files didn't change — a "skipped" result is fine, we


/home/byk/Code/getsentry/cli-pr-1558/.github/workflows/eval-skill-fork.yml:
  Line 65:       - name: Generate docs and skill files

  Line ...
gateway · 2026-09-08 20:18:22
result
<path>/home/byk/Code/getsentry/cli-pr-1558/.github/workflows/ci.yml</path>
<type>file</type>
<content>
150:     if: needs.changes.outputs.skill == 'true'
151:     runs-on: ubuntu-latest
152:     steps:
153:       - name: Get auth token
154:         id: token
155:         # Fork PRs don't have access to secrets, so this step is skipped
156:         if: github.event.pull_request.head.repo.full_name == github.repository || github.event_name != 'pull_request'
157:         uses: actions/create-github-app-token@v3
158:         with:
159:           app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }}
160:           private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }}
161:       - uses: actions/checkout@v6
162:         with:
163:           token: ${{ steps.token.outputs.token || github.token }}
164:           # Same-repo PRs (token step succeeded): check out the branch head so
165:           # the auto-commit step can push regenerated docs back. ...
gateway · 2026-09-08 20:18:29
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/check-fragments.ts</path>
<type>file</type>
<content>
1: #!/usr/bin/env tsx
2: /**
3:  * Validate doc fragment files.
4:  *
5:  * Ensures fragment files stay consistent with the CLI route tree:
6:  *   1. Every route has a corresponding fragment file (+ index.md)
7:  *   2. Every fragment file corresponds to an existing route (or is index.md)
8:  *   3. Fragment files don't accidentally contain frontmatter or the generated marker
9:  *   4. Top-level fragments (e.g., configuration.md) exist
10:  *   5. Fragment content covers all subcommands in a route (warnings only)
11:  *
12:  * Usage:
13:  *   tsx script/check-fragments.ts            # Warnings for missing subcommands
14:  *   tsx script/check-fragments.ts --strict   # Errors for missing subcommands
15:  */
16: 
17: import { mkdirSync, readdirSync } from "node:fs";
18: import { access, readFile, writeFile } from "node:fs/promises";
19: import type { RouteInfo, RouteMap ...
gateway · 2026-09-08 20:18:43
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/check-fragments.ts</path>
<type>file</type>
<content>
250: const multiCommandRoutes = getMultiCommandRoutes();
251: 
252: for (const [routeName, route] of multiCommandRoutes) {
253:   const fragmentPath = `${FRAGMENTS_DIR}/${routeName}.md`;
254:   let content: string;
255:   try {
256:     content = await readFile(fragmentPath, "utf-8");
257:   } catch {
258:     // Fragment doesn't exist — already caught by Check 1
259:     continue;
260:   }
261: 
262:   const defaultCmd = getDefaultCommandName(routeName);
263: 
264:   const missing: string[] = [];
265:   for (const cmd of route.commands) {
266:     const sub = cmd.path.slice(`sentry ${routeName} `.length);
267:     const leaf = sub.split(" ").at(-1) ?? sub;
268:     const isDefault = leaf === defaultCmd;
269:     if (!fragmentMentionsSubcommand(content, routeName, cmd, isDefault)) {
270:       missing.push(sub);
271:     }
272:   }
273: 
274:   if (missing.length > 0) ...
gateway · 2026-09-08 20:19:25
result
No files found
gateway · 2026-09-08 20:19:41
result
<path>/home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs</path>
<type>directory</type>
<entries>
agent-guidance.md
agentic-usage.md
commands/
configuration.md
contributing.md
exit-codes.md
features.md
getting-started.mdx
index.mdx
library-usage.md
migrating-from-v3.md
self-hosted.md

(12 entries)
</entries>
gateway · 2026-09-08 20:19:49
result
<path>/home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/agent-conversation.md</path>
<type>file</type>
<content>
1: ---
2: title: agent-conversation
3: description: Agent-conversation commands for the Sentry CLI
4: ---
5: 
6: List and view agent conversations
7: 
8: ## Commands
9: 
10: ### `sentry agent-conversation list [<org>]`
11: 
12: List recent agent conversations
13: 
14: **Arguments:**
15: 
16: | Argument | Description |
17: |----------|-------------|
18: | `<org>` | Organization slug |
19: 
20: **Options:**
21: 
22: | Option | Description |
23: |--------|-------------|
24: | `-n, --limit <limit>` | Number of conversations (1-1000) (default: "25") |
25: | `-q, --query <query>` | Search query |
26: | `-t, --period <period>` | Time range: "7d", "2026-08-01..2026-09-01", ">=2026-08-01" (default: "7d") |
27: | `-f, --fresh` | Bypass cache, re-detect projects, and fetch fresh data |
28: | `-c, --cursor <cursor>` | Navigate pages: "next", "prev", "first" ...
gateway · 2026-09-08 20:20:00
result
Found 4 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/generated/skill-content.ts:
  Line 21: ### \`sentry agent-conversation list [<org>]\`

  Line 73: ### \`sentry agent-conversation view [<org>/]<conversation-id>\`

  Line 3949: - \`sentry agent-conversation list [<org>]\` — List recent agent conversations

  Line 3950: - \`sentry agent-conversation view [<org>/]<conversation-id>\` — View an agent conversation transcript
gateway · 2026-09-08 20:20:11
result
Found 14 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/mutate-command.ts:
  Line 337:       readonly fullDescription?: string;


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/list-command.ts:
  Line 550:       readonly fullDescription?: string;

  Line 634:   readonly fullDescription?: string;


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/introspect.ts:
  Line 36:   fullDescription?: string;

  Line 45:   fullDescription?: string;

  Line 102:   fullDescription?: string;

  Line 292:     fullDescription: cmd.fullDescription,


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts:
  Line 405:  * Appends available field names and types to `fullDescription` so they appear

  Line 421:   const baseFull = docs.fullDescription ?? docs.brief;

  Line 424:     fullDescription: `${baseFull}\n\n${jsonFieldsDoc}`,

  Line 515:   // Enrich fullDescription with JSON fields when schema is registered. ...
gateway · 2026-09-08 20:20:18
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts</path>
<type>file</type>
<content>
390:     return FIELDS_FLAG;
391:   }
392:   const schemaFields = extractSchemaFields(outputConfig.schema);
393:   if (schemaFields.length === 0) {
394:     return FIELDS_FLAG;
395:   }
396:   const fieldNames = schemaFields.map((f) => f.name).join(", ");
397:   return {
398:     ...FIELDS_FLAG,
399:     brief: `${FIELDS_FLAG.brief}. Available: ${fieldNames}`,
400:   };
401: }
402: 
403: /**
404:  * Enrich command docs with a JSON fields section when a schema is registered.
405:  * Appends available field names and types to `fullDescription` so they appear
406:  * in Stricli's `--help` output.
407:  */
408: function enrichDocsWithSchema(
409:   docs: CommandDocumentation,
410:   // biome-ignore lint/suspicious/noExplicitAny: OutputConfig type is erased at the builder level
411:   outputConfig?: OutputConfig<any>
412: ): CommandDocumentation {
413:   if (!outputConfig?.schema) ...
gateway · 2026-09-08 20:20:27
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/mutate-command.ts</path>
<type>file</type>
<content>
295:  *    stdin is not a TTY and neither `--yes`/`--force` was passed (dry-run
296:  *    bypasses the guard since it makes no changes)
297:  *
298:  * Commands still handle their own confirmation prompts using
299:  * {@link confirmByTyping} + {@link isConfirmationBypassed} inside `func()`,
300:  * since the prompt depends on data resolved during execution.
301:  *
302:  * Mirrors {@link import("./list-command.js").buildListCommand} for list commands.
303:  *
304:  * @param builderArgs - Same arguments as `buildCommand` from `lib/command.js`
305:  * @param options - Control which flags are auto-injected
306:  *
307:  * @example
308:  * ```ts
309:  * export const deleteCommand = buildDeleteCommand({
310:  *   docs: { brief: "Delete a widget" },
311:  *   output: { human: formatWidgetDeleted },
312:  *   parameters: {
313:  *     positional: { ... ...
gateway · 2026-09-08 20:20:44
result
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200  1) 
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200  2) 
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200  3) 
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200  4) ## Examples
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200  5) 
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200  6) ### List conversations
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200  7) 
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200  8) ```bash
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200  9) # List recent agent conversations
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200 10) sentry agent-conversation list
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200 11) 
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200 12) # Explicit organization
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200 13) sentry agent-conversation list my-org
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200 14) 
f1966f6e1f (ArthurKnaus 2026-08-26 13:33:14 +0200 15) # Show more, ...
gateway · 2026-09-08 20:20:56
result
No files found
gateway · 2026-09-08 20:21:06
result
Found 100 matches (more matches available)
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/which.ts:
  Line 50:       // Pass command as a positional arg ($1) so it's never interpolated


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/version-check.ts:
  Line 128:  * Find the first positional (non-global-flag) token after the `cli` group at


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/trace-target.ts:
  Line 44:  * Parsed result from trace-related positional arguments.

  Line 96:  * Parse trace-related positional arguments into a {@link ParsedTraceTarget}. ...
gateway · 2026-09-08 20:21:13
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/app.ts</path>
<type>file</type>
<content>
205: /**
206:  * Route group names that have `defaultCommand` set.
207:  *
208:  * Derived from the route map at module load time — no manual list to maintain.
209:  * Used to detect the no-args case (`sentry issue` with no subcommand)
210:  * so we can show a usage hint instead of a confusing parse error.
211:  */
212: const routesWithDefaultCommand: ReadonlySet<string> = new Set(
213:   routes
214:     .getAllEntries()
215:     .filter(
216:       (e) =>
217:         isRouteMap(e.target as unknown) &&
218:         (e.target as unknown as RouteMap).getDefaultCommand?.()
219:     )
220:     .map((e) => e.name.original)
221: );
222: 
223: /**
224:  * Detect when the user typed a bare route group with no subcommand (e.g., `sentry issue`). ...
gateway · 2026-09-08 20:21:29
result
(no output)
gateway · 2026-09-08 20:21:39
result
Found 68 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/generate-skill.ts:
  Line 51:   CommandInfo,

  Line 57:   buildCommandInfo,

  Line 503:         commands: [buildCommandInfo(target, path, examples)],

  Line 556: function getVisibleFlags(cmd: CommandInfo): FlagInfo[] {

  Line 565: function generateFullCommandDoc(cmd: CommandInfo): string {

  Line 567:   const signature = cmd.positional ? `${cmd.path} ${cmd.positional}` : cmd.path;

  Line 681: function generateCompactCommandLine(cmd: CommandInfo): string {

  Line 682:   const signature = cmd.positional ? `${cmd.path} ${cmd.positional}` : cmd.path;


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/check-fragments.ts:
  Line 37: const { extractAllRoutes } = await import("../src/lib/introspect.js");

  Line 50: const allRoutes = extractAllRoutes(routeMap).filter(


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/generate-skill-markdown.ts:
  Line 5: /** Matches a generated command heading ...
gateway · 2026-09-08 20:21:51
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/generate-sdk.ts</path>
<type>file</type>
<content>
150:     if (INTERNAL_FLAGS.has(name)) {
151:       continue;
152:     }
153:     if (def.hidden) {
154:       continue;
155:     }
156: 
157:     const { tsType, kind, values } = inferFlagType(def);
158:     const optional = def.optional === true || def.default !== undefined;
159: 
160:     flags.push({
161:       name,
162:       kind,
163:       tsType,
164:       optional,
165:       default: def.default,
166:       brief: def.brief,
167:       values,
168:     });
169:   }
170: 
171:   return flags;
172: }
173: 
174: // ---------------------------------------------------------------------------
175: // Positional Handling
176: // ---------------------------------------------------------------------------
177: 
178: /**
179:  * Derive positional parameter info from the command's positional placeholder. ...
gateway · 2026-09-08 20:21:59
result
No files found
gateway · 2026-09-08 20:22:08
result
Found 100 matches (more matches available)
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/api-client.multiregion.test.ts:
  Line 373:                   "https://custom.sentry.io/organizations/org-with-links/",

  Line 374:                 regionUrl: "https://custom.sentry.io",

  Line 396:       "https://custom.sentry.io"


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/api-client.coverage.test.ts:
  Line 1289:     test("passes custom query and limit", async () => {

  Line 1910:     test("passes custom statsPeriod and limit", async () => {

  Line 1930:     test("passes custom query", async () => {

  Line 2092:     test("includes custom headers", async () => {


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/help-positional.test.ts:
  Line 182:   test("sentry help project create shows the public positional syntax", async () => {

  Line 186:       "sentry project create [<org>/]<name>:<platform>..."

  Line 191:   test("project create --help shows ...
gateway · 2026-09-08 20:22:18
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/help-positional.test.ts</path>
<type>file</type>
<content>
150:     const { stdout, stderr } = await runCommand(["trace", "view", "help"]);
151: 
152:     expect(stdout).toContain("sentry trace view");
153:     expect(stderr).toContain("--help");
154:   });
155: 
156:   test("sentry log view help → shows help for log view", async () => {
157:     const { stdout, stderr } = await runCommand(["log", "view", "help"]);
158: 
159:     expect(stdout).toContain("sentry log view");
160:     expect(stderr).toContain("--help");
161:   });
162: });
163: 
164: describe("help command unchanged", () => {
165:   test("sentry help still shows branded help", async () => {
166:     const { stdout, stderr } = await runCommand(["help"]);
167: 
168:     // Custom help command shows branded output — no recovery needed
169:     expect(stdout).toContain("sentry");
170:     // Should NOT have the recovery tip
171:     ...
gateway · 2026-09-08 20:22:36
result
Found 9 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/script/generate-skill-markdown.test.ts:
  Line 36:       "### `sentry agent-conversation view [<org>/]<conversation-id>`"

  Line 47:       "sentry agent-conversation view my-org conv-123"


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation/view.ts:
  Line 30: const USAGE_HINT = "sentry agent-conversation view [<org>/]<conversation-id>";

  Line 33:  * Split a `[<org>/]<conversation-id>` positional into its parts.

  Line 62:     customUsage: ["[<org>/]<conversation-id>"],

  Line 80:           placeholder: "org/conversation-id",

  Line 82:             "[<org>/]<conversation-id> - Org (optional) and conversation ID",


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/agent-conversation.md:
  Line 66: ### `sentry agent-conversation view ...
gateway · 2026-09-08 20:24:02
result
Found 16 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/project/view.ts:
  Line 46: const USAGE_HINT = "sentry project view <org>/<project>";

  Line 55:       USAGE_HINT,

  Line 61:   return new ContextError("Organization and project", USAGE_HINT);

  Line 70:     throw new ContextError("Single project", `${USAGE_HINT} -w`, [

  Line 323:           USAGE_HINT,

  Line 360:         throw new ContextError("Organization and project", USAGE_HINT);


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/project/create.ts:
  Line 65: const USAGE_HINT = "sentry project create [<org>/]<name>:<platform>...";

  Line 189:     return await buildOrgNotFoundError(orgSlug, USAGE_HINT, detectedFrom);

  Line 223:       usageHint: USAGE_HINT,

  Line 411:       throw new ContextError("Project name", USAGE_HINT, [

  Line 417:       throw new ContextError("Project name", USAGE_HINT, []);

  Line 470:     throw new ContextError("Project specification", USAGE_HINT, ...
gateway · 2026-09-08 20:24:44
result
Found 24 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/commands/agent-conversation/view.test.ts:
  Line 8:  * - Throwing ContextError when org cannot be resolved

  Line 60: vi.mock("../../../src/lib/resolve-target.js", async (importOriginal) => {

  Line 62:     await importOriginal<typeof import("../../../src/lib/resolve-target.js")>();

  Line 71: import { ContextError } from "../../../src/lib/errors.js";

  Line 73: import * as resolveTarget from "../../../src/lib/resolve-target.js";

  Line 179:     // Default: org resolves to ORG. Individual tests override for auto-detect

  Line 193:   test("resolves org + conversationId from a slash-separated arg", async () => {

  Line 245:     ).rejects.toThrow(ContextError);

  Line 256:       expect(error).toBeInstanceOf(ContextError);

  Line 257:       expect((error as ContextError).message).toContain("Conversation ID");

  Line 261:   test("throws ContextError when org cannot be resolved", async () => {

  Line 269:     ...
gateway · 2026-09-08 20:24:53
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/commands/agent-conversation/view.test.ts</path>
<type>file</type>
<content>
180:     // or resolution-failure scenarios.
181:     resolveOrgSpy.mockResolvedValue({ org: ORG });
182:     withProgressSpy = vi
183:       .spyOn(polling, "withProgress")
184:       .mockImplementation(mockWithProgress);
185:   });
186: 
187:   afterEach(() => {
188:     getConversationSpansSpy.mockRestore();
189:     resolveOrgSpy.mockRestore();
190:     withProgressSpy.mockRestore();
191:   });
192: 
193:   test("resolves org + conversationId from a slash-separated arg", async () => {
194:     resolveOrgSpy.mockResolvedValue({ org: ORG });
195:     getConversationSpansSpy.mockResolvedValue({
196:       spans: sampleSpans,
197:       truncated: false,
198:       title: null,
199:     });
200: 
201:     const { context, stdoutWrite } = createMockContext();
202:     const func = await viewCommand.loader();
203:     await func.call(context, ...
gateway · 2026-09-08 20:25:07
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/commands/agent-conversation/list.test.ts</path>
<type>file</type>
<content>
220:     hasPreviousPageSpy = vi
221:       .spyOn(paginationDb, "hasPreviousPage")
222:       .mockReturnValue(false);
223:   });
224: 
225:   afterEach(() => {
226:     listConversationsSpy.mockRestore();
227:     resolveOrgSpy.mockRestore();
228:     withProgressSpy.mockRestore();
229:     resolveCursorSpy.mockRestore();
230:     advancePaginationStateSpy.mockRestore();
231:     hasPreviousPageSpy.mockRestore();
232:   });
233: 
234:   test("resolves org from positional arg", async () => {
235:     listConversationsSpy.mockResolvedValue({
236:       data: sampleConversations,
237:       nextCursor: undefined,
238:     });
239: 
240:     const { context } = createMockContext();
241:     const func = await listCommand.loader();
242:     await func.call(context, JSON_FLAGS, ORG);
243: 
244:     // resolveOrg receives the positional org directly
245:  ...
gateway · 2026-09-08 20:25:17
result
Found 4 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/script/generate-skill-markdown.test.ts:
  Line 36:       "### `sentry agent-conversation view [<org>/]<conversation-id>`"

  Line 47:       "sentry agent-conversation view my-org conv-123"

  Line 50:       "sentry agent-conversation view my-org/conv-123"

  Line 52:     expect(reference).toContain("sentry agent-conversation view conv-123");
gateway · 2026-09-08 20:25:28
result
Found 57 matches
/home/byk/Code/getsentry/cli-pr-1558/CHANGELOG.md:
  Line 119: - (log) Handle org/log-id shorthand to prevent ContextError by @sentry in [#1445](https://github.com/getsentry/cli/pull/1445)

  Line 259: - Move --version/--help into the Stricli scanner, delete argv-glue by @jared-outpost in [#1348](https://github.com/getsentry/cli/pull/1348)

  Line 260: - Replace argv-hoist preprocessor with a Stricli top-level-flags patch by @jared-outpost in [#1340](https://github.com/getsentry/cli/pull/1340)

  Line 377: - Silence ContextError to stop crash reports (CLI-3B) by @BYK in [#1149](https://github.com/getsentry/cli/pull/1149)

  Line 661: - (sdk) Apply Stricli flag defaults in SDK invoke path by @BYK in [#1027](https://github.com/getsentry/cli/pull/1027)

  Line 1001: - (telemetry) Reduce Sentry issue fragmentation with stable fingerprinting by @BYK in [#769](https://github.com/getsentry/cli/pull/769)

  Line 1072: - (errors) Improve ContextError wording for auto-detect ...
gateway · 2026-09-08 20:26:13
result
Found 6 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation/view.ts:
  Line 62:     customUsage: ["[<org>/]<conversation-id>"],


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation/list.ts:
  Line 101:     customUsage: ["[<org>]"],


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/project/create.ts:
  Line 609:     customUsage: ["[<org>/]<name>:<platform>..."],


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts:
  Line 98:  * Native Stricli documentation. When `customUsage` is present, its first line

  Line 841:   // Stricli uses customUsage for native help but does not expose it on the

  Line 843:   const primaryUsage = enrichedDocs.customUsage?.[0];
gateway · 2026-09-08 20:26:30
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/AGENTS.md</path>
<type>file</type>
<content>
418: 
419: All normalize to lowercase. Throw `ValidationError` on invalid input.
420: 
421: ### Sort Convention
422: 
423: Use `"date"` for timestamp-based sort (not `"time"`). Export sort types from the API layer (e.g., `SpanSortValue` from `api/traces.ts`), import in commands. This matches `issue list`, `trace list`, and `span list`.
424: 
425: ### Generated Docs & Skills
426: 
427: All command docs and skill files are generated via `pnpm run generate:docs` (which runs `generate:command-docs` then `generate:skill`). This runs automatically as part of `dev`, `build`, `typecheck`, and `test` scripts.
428: 
429: - **Command docs** (`docs/src/content/docs/commands/*.md`) are **gitignored** and generated from CLI metadata + hand-written fragments in `docs/src/fragments/commands/`. ...
gateway · 2026-09-08 20:26:47
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/route-map.ts</path>
<type>file</type>
<content>
1: /**
2:  * Drop-in replacement for `@stricli/core`'s `buildRouteMap`.
3:  *
4:  * Analogous to how `buildCommand` in `./command.ts` wraps Stricli's version,
5:  * this is the **only** place that should import `buildRouteMap` from
6:  * `@stricli/core`. All other files import from here.
7:  */
8: 
9: import {
10:   type CommandContext,
11:   type RouteMap,
12:   type RouteMapBuilderArguments,
13:   buildRouteMap as stricliRouteMap,
14: } from "@stricli/core";
15: 
16: /**
17:  * Standard subcommand aliases, auto-injected when the matching route key
18:  * exists. Each entry maps a canonical route name to the set of short-form
19:  * aliases that should resolve to it. ...
gateway · 2026-09-08 20:27:57
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/plugins/sentry-cli</path>
<type>directory</type>
<entries>
.claude-plugin/
skills/

(2 entries)
</entries>
gateway · 2026-09-08 20:29:01
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/help.ts</path>
<type>file</type>
<content>
1: /**
2:  * Help Command
3:  *
4:  * Provides help information for the CLI.
5:  * - `sentry help` or `sentry` (no args): Shows branded help with banner
6:  * - `sentry help <command>`: Shows detailed help for that command
7:  * - `sentry help --json`: Emits full command tree as structured JSON
8:  * - `sentry help --json <command>`: Emits specific command/group metadata as JSON
9:  */
10: 
11: import type { SentryContext } from "../context.js";
12: import { buildCommand } from "../lib/command.js";
13: import { OutputError } from "../lib/errors.js";
14: import { CommandOutput } from "../lib/formatters/output.js";
15: import {
16:   formatHelpHuman,
17:   introspectAllCommands,
18:   introspectCommand,
19: } from "../lib/help.js";
20: 
21: export const helpCommand = buildCommand({
22:   auth: false,
23:   docs: {
24:     brief: "Display help for a command",
25:     ...
gateway · 2026-09-08 20:30:31
result
Found 100 matches (more matches available)
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/check-stale-references.ts:
  Line 10:  * a different PM's commands (e.g., `bun run`, `yarn remove`).

  Line 36: /** All known JS package managers whose dev commands should not appear when another PM is active. */

  Line 59:     // "bun run", "yarn remove", "bun add -d", etc. (dev commands)

  Line 61:     reason: `Use '${currentPM}' commands instead`,


/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/check-patches.ts:
  Line 25:  *   for `--help-all`) so the `api` command can use `-H` for `--header`,

  Line 189:  * once patched. Its absence means global flags before a subcommand will crash.

  Line 234:       "@stricli/core ESM: top-level-flags scanner allow-list missing (global flags before a subcommand, e.g. ...
gateway · 2026-09-08 20:31:12
result
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/introspect.property.test.ts</path>
<type>file</type>
<content>
130:             expect(flag.optional).toBe(true);
131:           }
132:         }
133:       }),
134:       { numRuns: DEFAULT_NUM_RUNS }
135:     );
136:   });
137: });
138: 
139: describe("property: getPositionalString", () => {
140:   test("tuple always produces angle-bracket placeholders", () => {
141:     fcAssert(
142:       property(
143:         array(
144:           record({ placeholder: oneof(string(), constantFrom(undefined)) })
145:         ),
146:         (params) => {
147:           const result = getPositionalString({
148:             kind: "tuple",
149:             parameters: params,
150:           });
151:           if (params.length > 0) {
152:             expect(result).toContain("<");
153:             expect(result).toContain(">");
154:           }
155:         }
156:       ),
157:       { numRuns: DEFAULT_NUM_RUNS }
158:     );
159:   ...
gateway · 2026-09-08 20:33:15

Summary

The CLI has no single usage source today:

  • Runtime parsing: Stricli parameters.positional
  • Displayed signatures: docs.customUsage, with a fallback synthesized from positional placeholders
  • Native help examples: docs.fullDescription
  • Website and skill examples: hand-written Markdown fragments
  • Runtime error hints: independent ContextError strings

PR #1558 fixes the generated headings through customUsage, but it must also edit the fragment because the skill generator never reads examples from the command’s fullDescription. It reverse-parses the generated website page instead.

Agent-conversation sources

Route names and descriptions

  • /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/app.ts:111routes
    • Registers "agent-conversation": conversationRoute.
    • The hidden legacy "agent-conversations" alias points directly to conversationListCommand and is excluded from generated docs.
  • /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation/index.ts:11conversationRoute
    • Registers listCommand and viewCommand.
    • docs.brief supplies the group description used in the website page, skill reference frontmatter, and SKILL.md.

list runtime and usage metadata

/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/agent-conversation/list.ts

  • listCommand at line 98
  • docs.customUsage at line 101: "[<org>]"
  • docs.fullDescription examples at lines 102–109
  • parameters.positional at lines 116–127:
    • One tuple item
    • Placeholder "org"
    • optional: true
  • Runtime resolution at lines 149–155 accepts no argument and calls resolveOrg.
  • The ContextError hint at line 154 remains independent:
    • sentry agent-conversation list <org>
    • This is defensible as an explicit recovery command after auto-detection fails, but it is not derived from the canonical heading and Copilot flagged the difference. ...
gpt-5.6-sol · 2026-09-08 20:33:15 · ~2.4K tokens

Distillations (14)

Gen 0 2026-09-08 20:37:22 · 3806 tokens

Date: Sep 8, 2026 * 🟡 (20:25) `packages/cli/test/script/generate-skill-markdown.test.ts:50-52` additionally expects the valid slash-separated example `sentry agent-conversation view my-org/conv-123` and the organization-less example `sentry agent-conversation view conv-123`. * 🟡 (20:26) `CHANGELOG.md` records Stricli-related changes: line 259 moved `--version`/`--help` into the Stricli scanner …

Gen 0 2026-09-08 20:30:12 · 1098 tokens

Date: Sep 8, 2026 * 🟡 (20:24) Repository search found 9 references to the `agent-conversation view` positional syntax. `packages/cli/src/commands/agent-conversation/view.ts` defines `USAGE_HINT = "sentry agent-conversation view [<org>/]<conversation-id>"` at line 30, documents splitting `[<org>/]<conversation-id>` at line 33, sets `customUsage: ["[<org>/]<conversation-id>"]` at line 62, and uses…

Gen 0 2026-09-08 20:29:33 · 307 tokens

Date: Sep 8, 2026 * 🔴 (20:22) User established the security directive in `packages/cli/test/lib/token-claims.test.ts:205`: “must NEVER use the claim as a primary security signal — see”. * 🟡 (20:22) `packages/cli/test/lib/help-positional.test.ts:182-202` verifies both `sentry help project create` and generated `project create --help` expose the public positional syntax exactly as `sentry project…

Gen 0 2026-09-08 20:29:16 · 1386 tokens

Date: Sep 8, 2026 * 🔴 (20:20) User established that flags in `ALWAYS_STRIP` are “always stripped (command never sees them).” In `packages/cli/src/lib/command.ts`, `ALWAYS_STRIP` currently contains `LOG_LEVEL_KEY`. * 🔴 (20:20) User established the `buildDeleteCommand()` rule: “Always inject `--yes` unless the command already defines it.” `packages/cli/src/lib/mutate-command.ts` also injects `--f…

Gen 0 2026-09-08 20:28:18 · 1227 tokens

Date: Sep 8, 2026 * 🔴 (20:18) User established that for fork pull requests, checkout should default to `GITHUB_REF`, whose pull-request merge SHA is always fetchable from the base repository using `github.token`. * 🟡 (20:18) Commit `ff574c983076aab38f1e657d9623bdee0c85ec65` (`chore: regenerate docs`), authored and committed by `github-actions[bot] <github-actions[bot]@users.noreply.github.com>`…

Gen 0 2026-09-08 20:26:09 · 969 tokens

Date: Sep 8, 2026 * 🟡 (20:15) Public skill files are symlinked to the canonical package sources: `apps/cli-docs/public/.well-known/skills/sentry-cli/SKILL.md` → `../../../../../../packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md`, and `apps/cli-docs/public/.well-known/skills/sentry-cli/references` → `../../../../../../packages/cli/plugins/sentry-cli/skills/sentry-cli/references`. * 🟡 …

Gen 0 2026-09-08 20:25:10 · 1756 tokens

Date: Sep 8, 2026 * 🔴 (20:13) User established that `buildListCommand()` in `packages/cli/src/lib/list-command.ts` must always inject `--fresh` unless the command already defines a `fresh` flag. * 🔴 (20:13) User established that the first positional argument handled by `buildListCommand()` is always the target using the org/project pattern. * 🟡 (20:13) `buildListCommand()` automatically interc…

Gen 0 2026-09-08 20:23:59 · 1643 tokens

Date: Sep 8, 2026 * 🔴 (20:12) User established the canonical `sentry project create` input shape as one or more `[<org>/]<name>:<platform>` pairs; the platform is always attached with `:`, there is no space-separated form, and no `--platform` / `-p` flag is supported. * 🔴 (20:12) User established that platform is always part of each project pair; trailing-platform batches such as `web api node`…

Gen 0 2026-09-08 20:20:18 · 1716 tokens

Date: Sep 8, 2026 * 🟡 (20:10) `apps/cli-docs/src/fragments/commands/agent-conversation.md` contains 2 example sections: “List conversations” and “View a conversation transcript.” List examples are `sentry agent-conversation list`, `sentry agent-conversation list my-org`, `sentry agent-conversation list --limit 50 --period 24h`, `sentry agent-conversation list -q "has:errors"`, and `sentry agent-…

Gen 0 2026-09-08 20:19:11 · 2183 tokens

Date: Sep 8, 2026 * 🟡 (20:09) `packages/cli/script/generate-skill.ts` `extractRoutes(routeMap)` skips hidden entries, derives each route’s `defaultCommandName` with `findDefaultCommandName()` when the target is a `RouteMap`, loads examples through `loadCommandExamples(routeName, defaultCommandName)`, expands route groups with `extractRouteGroupCommands()`, and wraps standalone commands with `bui…

Gen 0 2026-09-08 20:17:55 · 1486 tokens

Date: Sep 8, 2026 * 🔴 (20:07) User stated agent-conversation IDs are organization-scoped and never contain `/`; `[<org>/]<conversation-id>` therefore has at most one slash, with the prefix treated as the organization and the remainder as the conversation ID. * 🟡 (20:07) Inspection of `packages/cli/src/commands/agent-conversation/view.ts` found `USAGE_HINT = "sentry agent-conversation view [<org…

Gen 0 2026-09-08 20:15:06 · 1978 tokens

Date: Sep 8, 2026 * 🔴 (20:07) User reiterated always to check `package.json` for the latest scripts; commands run from `packages/cli` or via `pnpm --filter sentry run <script>` from the repository root. * 🔴 (20:07) User reiterated that all packages must be added to `devDependencies`, never `dependencies`, because esbuild bundles everything at build time and CI enforces the rule with `pnpm run c…

Gen 0 2026-09-08 20:10:10 · 1930 tokens

Date: Sep 8, 2026 * 🔴 (20:06) User instructed always to check `package.json` for the latest scripts. * 🔴 (20:06) User stated all packages must be added to `devDependencies`, never `dependencies`, because everything is bundled at build time via esbuild; CI enforces this with `pnpm run check:deps`. * 🔴 (20:06) User instructed always to add packages with `pnpm add -D <package>` using the `-D` fla…

Gen 0 2026-09-08 20:08:00 · 459 tokens

Date: Sep 8, 2026 * 🟡 (20:04) User requested a medium-thorough, read-only exploration in `/home/byk/Code/getsentry/cli-pr-1558` of how CLI usage headings and examples are generated from Stricli command definitions, focused on PR #1558’s agent-conversation list/view changes. * 🟡 (20:04) User asked to identify every source of truth for `customUsage`, positional parameters, usage examples, `Contex…