Dashboard › cli › Session 18gCUlS8n9yT
18gCUlS8n9yTLhMpOPerform an independent, read-only adversarial correctness review of getsentry/cli PR #1558 in /home/byk/Code/getsentry/cli-pr-1558. Do not edit files, commit, change branches, fetch, or mutate VCS state. Review the exact immutable pair: base bd065083c3b82677747b97a6cc7f5cf57532d3bc, head fc5d50e2324e2b6bb2067976bf1515dab45224fb, expected git diff bd065083c3b82677747b97a6cc7f5cf57532d3bc...fc5d50e2324e2b6bb2067976bf1515dab45224fb | sha256sum = 03c5772e78b393b3979c44754709d7f401bb37a71e5679b34c50a9cc8334c2d0. Verify HEAD, base, worktree cleanliness, and hash both before and after review; BLOCK if any differ. Inspect every changed file and relevant surrounding implementation/tests. Review behavior and compatibility, with special focus on: Stricli command metadata as canonical usage/example source; optional tuple positional rendering in native/JSON/website/skill docs; preservation of public CommandInfo.examples string[] and legacy fallback; native-help ordering with JSON schema; list/delete wrapper types; fragment coverage exemption scope; generated artifact integrity; agent-conversation list hints; exact target grammar (zero or one slash, conversation IDs never contain slash), omitted vs malformed error-class contracts, fielded ValidationError, and no API call for malformed input; workflow pr-risk fork guard correctness, expression/input typing, security boundaries, same-repo behavior, and whether artifacts still upload for fork PRs. Validate only with safe read-only commands if needed. Existing full validation already passed on this exact head: focused 6 files/155 tests; full 453 files with 9,495 passed and 16 skipped; typecheck/generation with 112 commands; Biome 1,030 files; deps; fragments with one pre-existing ProGuard warning; property test 10/10 runs. Do not repeat the full suite. ...
<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/ docs/ LICENSE.md node_modules/ package.json packages/ pnpm-lock.yaml pnpm-workspace.yaml README.md (19 entries) </entries>
fc5d50e2324e2b6bb2067976bf1515dab45224fb bd065083c3b82677747b97a6cc7f5cf57532d3bc fc5d50e2324e2b6bb2067976bf1515dab45224fb bd065083c3b82677747b97a6cc7f5cf57532d3bc
(no output)
03c5772e78b393b3979c44754709d7f401bb37a71e5679b34c50a9cc8334c2d0 -
<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. ...
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/AGENTS.md /home/byk/Code/getsentry/cli-pr-1558/AGENTS.md
<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** - ...
Found 33 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/AGENTS.md:
Line 106: domain API modules — is generated from the route tree and lives in
Line 127: - **`../../apps/cli-docs/`** — documentation site (Astro + Starlight);
Line 201: Manually specified aliases in `aliases` are merged with (and take precedence over) auto-generated ones. Do NOT manually add aliases that are already in the standard set above.
Line 284: if (flags["dry-run"]) { yield preview; return; }
Line 419: All normalize to lowercase. Throw `ValidationError` on invalid input.
Line 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.
Line 429: - **Command docs** (`docs/src/content/docs/commands/*.md`) are **gitignored** and generated from CLI metadata + hand-written fragments in `docs/src/fragments/commands/`. ...
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/AGENTS.md</path> <type>file</type> <content> 405: ``` 406: 407: Never pass a `per_page` value larger than `API_MAX_PER_PAGE` to the API — the 408: server silently caps it, causing the command to return fewer items than requested. 409: 410: Reference template: `trace/list.ts`, `span/list.ts`, `dashboard/list.ts` 411: 412: ### ID Validation 413: 414: Use shared validators from `src/lib/hex-id.ts`: 415: - `validateHexId(value, label)` — 32-char hex IDs (trace IDs, log IDs). Auto-strips UUID dashes. 416: - `validateSpanId(value)` — 16-char hex span IDs. Auto-strips dashes. 417: - `validateTraceId(value)` — thin wrapper around `validateHexId` in `src/lib/trace-id.ts`. 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 ...
M .github/workflows/pr-risk.yml 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/plugins/sentry-cli/skills/sentry-cli/references/alert.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/cli.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/explore.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/feedback.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/init.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/issue.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/monitor.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/org.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/project.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/release.md M packages/cli/plugins/sentry-cli/s...
...output truncated...
Full output saved to: /home/byk/.local/share/opencode/tool-output/tool_086f5ead3001G6uZT3CDXLW8jb
* Forces the operation without confirmation — alias for `--yes` with a
* different mental model ("force it through" vs "yes I confirm").
*/
export const FORCE_FLAG = {
kind: "boolean" as const,
brief: "Force the operation without confirmation",
default: false,
} as const;
/**
* Spreadable flag bundle for destructive commands: `--yes`, `--force`, `--dry-run`.
*
* Spread into a command's `flags` alongside command-specific flags:
* ```ts
* flags: { ...DESTRUCTIVE_FLAGS, index: { ... } },
* ```
*
* Prefer using `buildDeleteCommand()` which auto-injects these with a
* non-interactive safety guard.
*/
export const DESTRUCTIVE_FLAGS = {
yes: YES_FLAG,
force: FORCE_FLAG,
"dry-run": DRY_RUN_FLAG,
} as const;
/**
* Standard aliases for destructive commands: `-y` → `--yes`, `-f` → `--force`,
* `-n` → `--dry-run`. ...
diff --git a/.github/workflows/pr-risk.yml b/.github/workflows/pr-risk.yml
index 2a1bd3c76..dc8359b2d 100644
--- a/.github/workflows/pr-risk.yml
+++ b/.github/workflows/pr-risk.yml
@@ -1,36 +1,36 @@
name: PR Risk Experiment
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
permissions:
contents: read
pull-requests: write
issues: write
concurrency:
group: pr-risk-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
risk:
name: Score PR risk
runs-on: ubuntu-latest
if: github.event.pull_request.draft == false
steps:
- name: Score current PR
uses: getsentry/pr-risk-action@v0
with:
repo: ${{ github.repository }}
pr-number: ${{ github.event.pull_request.number }}
result-path: risk-pr-result.json
skip-reviews: "true"
- apply-label: "true"
+ apply-label: ${{ github.event.pull_request.head.repo.full_name ...
...output truncated...
Full output saved to: /home/byk/.local/share/opencode/tool-output/tool_086f695180017i4EQQbgC2WmRA
};
}
/**
* Enrich command docs with a JSON fields section when a schema is registered.
* Appends available field names and types to `fullDescription` so they appear
* in Stricli's `--help` output.
*/
function enrichDocsWithSchema(
docs: CommandDocumentation,
// biome-ignore lint/suspicious/noExplicitAny: OutputConfig type is erased at the builder level
outputConfig?: OutputConfig<any>
): CommandDocumentation {
if (!outputConfig?.schema) {
return docs;
}
const schemaFields = extractSchemaFields(outputConfig.schema);
if (schemaFields.length === 0) {
return docs;
}
const jsonFieldsDoc = formatSchemaForHelp(schemaFields);
const baseFull = docs.fullDescription ?? docs.brief;
return {
...docs,
fullDescription: `${baseFull}\n\n${jsonFieldsDoc}`,
};
}
+/** Convert extended command docs into native ...
diff --git a/packages/cli/src/lib/command.ts b/packages/cli/src/lib/command.ts
index 16f6e8cc6..248319cc7 100644
--- a/packages/cli/src/lib/command.ts
+++ b/packages/cli/src/lib/command.ts
@@ -47,106 +47,118 @@ import {
ClearScreen,
CommandOutput,
type CommandReturn,
extractSchemaFields,
formatSchemaForHelp,
type HumanRenderer,
type OutputConfig,
renderCommandOutput,
resolveRenderer,
writeFooter,
} from "./formatters/output.js";
import { isPlainOutput } from "./formatters/plain-detect.js";
import { GLOBAL_FLAGS } from "./global-flags.js";
import { setInteractivePromptsAllowed } from "./interactive-prompts.js";
import {
LOG_LEVEL_NAMES,
type LogLevelName,
logger,
parseLogLevel,
setLogLevel,
} from "./logger.js";
import { setArgsContext, setFlagContext, withTracing } from "./telemetry.js";
/**
* Parse a string input as a number.
* Re-exported from Stricli for convenience. ...
diff --git a/apps/cli-docs/src/fragments/commands/agent-conversation.md b/apps/cli-docs/src/fragments/commands/agent-conversation.md index ca9b2b2e3..e69de29bb 100644 --- a/apps/cli-docs/src/fragments/commands/agent-conversation.md +++ b/apps/cli-docs/src/fragments/commands/agent-conversation.md @@ -1,33 +0,0 @@ - - - -## Examples - -### List conversations - -```bash -# List recent agent conversations -sentry agent-conversation list - -# Explicit organization -sentry agent-conversation list my-org - -# Show more, last 24 hours -sentry agent-conversation list --limit 50 --period 24h - -# Filter conversations -sentry agent-conversation list -q "has:errors" - -# Paginate through results -sentry agent-conversation list my-org -c next -``` - -### View a conversation transcript - -```bash -# View full transcript -sentry agent-conversation view my-org conv-123 - -# JSON output -sentry agent-conversation view my-org conv-123 --json -``` diff --git a/packages/cli/script/check-fragments.ts ...
<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 ...
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 f1a71fb6a..85a58de78 100644 --- a/packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md +++ b/packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md @@ -357,9 +357,9 @@ Authenticate with Sentry Work with Sentry organizations - `sentry org list` — List organizations -- `sentry org view <org>` — View details of an organization +- `sentry org view [<org>]` — View details of an organization → Full flags and examples: `references/org.md` ### Project @@ -367,18 +367,18 @@ Work with Sentry organizations Work with Sentry projects - `sentry project create [<org>/]<name>:<platform>...` — Create one or more projects - `sentry project delete <org/project>` — Delete a project -- `sentry project list <org/project>` — List projects -- `sentry project view <org/project>` — View details of a project +- `sentry project list [<org/project>]` ...
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trial/start.ts /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trial/list.ts /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trial/index.ts /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trace/view.ts /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trace/logs.ts /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trace/list.ts /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trace/index.ts /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/team/list.ts /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/team/index.ts /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/repo/list.ts /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/repo/index.ts /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/replay/view.ts /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/replay/list...
Found 100 matches (more matches available) /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trial/start.ts: Line 106: optional: true as const, /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/project/view.ts: Line 283: optional: true, /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/schema.ts: Line 319: optional: true, /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trial/list.ts: Line 224: optional: true as const, /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/project/list.ts: Line 727: optional: true, /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/project/create.ts: Line 649: optional: true, /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/log/list.ts: Line 750: optional: true, Line 756: optional: true, Line 763: optional: ...
No files found
<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. ...
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/script/generate-skill.ts</path> <type>file</type> <content> 120: /** 121: * Preferred display order for routes in the SKILL.md index. 122: * Routes not listed here appear after these in alphabetical order. 123: */ 124: const ROUTE_ORDER = ["help", "auth", "org", "project", "issue", "event", "api"]; 125: 126: /** 127: * Flags that are globally injected and should be omitted from compact index 128: * and only mentioned once in the Global Options section. ...
diff --git a/packages/cli/test/commands/agent-conversation/list.test.ts b/packages/cli/test/commands/agent-conversation/list.test.ts
index 21a26bd6c..e080697cc 100644
--- a/packages/cli/test/commands/agent-conversation/list.test.ts
+++ b/packages/cli/test/commands/agent-conversation/list.test.ts
@@ -223,120 +223,133 @@ describe("listCommand.func", () => {
});
afterEach(() => {
listConversationsSpy.mockRestore();
resolveOrgSpy.mockRestore();
withProgressSpy.mockRestore();
resolveCursorSpy.mockRestore();
advancePaginationStateSpy.mockRestore();
hasPreviousPageSpy.mockRestore();
});
test("resolves org from positional arg", async () => {
listConversationsSpy.mockResolvedValue({
data: sampleConversations,
nextCursor: undefined,
});
const { context } = createMockContext();
const func = await listCommand.loader();
await func.call(context, JSON_FLAGS, ORG);
// resolveOrg receives the positional org ...
Found 6 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/introspect.test.ts:
Line 212: fullDescription: "List all the things.",
Line 234: expect(info.fullDescription).toBe("List all the things.");
Line 274: const cmd = makeCommand({ __examples: examples });
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/script/generate-skill-markdown.test.ts:
Line 57: "**Examples:**",
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/command.test.ts:
Line 186: customUsage: ["<name>:<kind>..."],
Line 222: expect((command as unknown as { __examples?: unknown }).__examples).toEqual(
diff --git a/packages/cli/test/lib/introspect.property.test.ts b/packages/cli/test/lib/introspect.property.test.ts
index 9c46a8bb2..79aac6243 100644
--- a/packages/cli/test/lib/introspect.property.test.ts
+++ b/packages/cli/test/lib/introspect.property.test.ts
@@ -94,111 +94,121 @@ const routeMapArb = tuple(
// Properties
// ---------------------------------------------------------------------------
describe("property: extractFlags", () => {
test("always returns one FlagInfo per input entry", () => {
fcAssert(
property(flagsMapArb, (flags) => {
const result = extractFlags(flags);
expect(result).toHaveLength(Object.keys(flags).length);
}),
{ numRuns: DEFAULT_NUM_RUNS }
);
});
test("preserves flag names", () => {
fcAssert(
property(flagsMapArb, (flags) => {
const result = extractFlags(flags);
const resultNames = new Set(result.map((f) => f.name));
for (const name of ...
Found 2 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/errors.ts:
Line 540: export function validationError(
Line 558: export class ValidationError extends CliError {
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/errors.ts</path>
<type>file</type>
<content>
510: * agent consumers get actionable recovery commands plus diagnostic context in a
511: * predictable shape. Always pass `field` when constructing the error — unfielded
512: * validation errors collapse into one Sentry fingerprint.
513: *
514: * @param headline - What failed validation
515: * @param examples - CLI commands or steps shown under "Try:"
516: * @param note - Optional diagnostic context rendered as "Note:" (not actionable)
517: */
518: export function buildValidationMessage(
519: headline: string,
520: examples: string[],
521: note?: string
522: ): string {
523: const lines = [headline];
524: if (examples.length > 0) {
525: lines.push("", "Try:");
526: for (const example of examples) {
527: lines.push(` ${example}`);
528: }
529: }
530: if (note) {
531: lines.push("", `Note: ${note}`);
532: }
533: return ...
fc5d50e23 (HEAD -> fix/agent-conversation-reference-root-cause) fix(ci): skip risk labels for fork PRs
285a589de fix(docs): derive command references from metadata
92dc1dab2 fix(docs): correct agent conversation argument syntax
commit fc5d50e2324e2b6bb2067976bf1515dab45224fb
Author: Burak Yigit Kaya <byk@sentry.io>
AuthorDate: Wed Sep 9 15:47:06 2026 +0000
Commit: Burak Yigit Kaya <byk@sentry.io>
CommitDate: Wed Sep 9 15:47:44 2026 +0000
fix(ci): skip risk labels for fork PRs
Found 74 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/log/view.ts:
Line 123: throw new ContextError("Log ID", USAGE_HINT, []);
Line 128: throw new ContextError("Log ID", USAGE_HINT, []);
Line 145: throw new ContextError("Log ID", USAGE_HINT, []);
Line 158: throw new ContextError("Log ID", USAGE_HINT, []);
Line 173: throw new ContextError("Log ID", USAGE_HINT, []);
Line 201: throw new ContextError("Log ID", USAGE_HINT, []);
Line 285: throw new ContextError("Specific project", USAGE_HINT, []);
Line 546: throw new ContextError("Organization and project", USAGE_HINT);
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/debug-files/upload.ts:
Line 666: throw new ContextError("Debug file path(s)", USAGE_HINT, []);
Line 695: throw new ContextError("Organization and project", USAGE_HINT);
Line 739: throw new ContextError("Organization and project", ...
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/org/view.ts</path>
<type>file</type>
<content>
1: /**
2: * sentry org view
3: *
4: * View detailed information about a Sentry organization.
5: */
6:
7: import type { SentryContext } from "../../context.js";
8: import { getOrganization } from "../../lib/api-client.js";
9: import { openInBrowser } from "../../lib/browser.js";
10: import { buildCommand } from "../../lib/command.js";
11: import { ContextError } from "../../lib/errors.js";
12: import { formatOrgDetails } from "../../lib/formatters/index.js";
13: import { CommandOutput } from "../../lib/formatters/output.js";
14: import {
15: applyFreshFlag,
16: FRESH_ALIASES,
17: FRESH_FLAG,
18: } from "../../lib/list-command.js";
19: import { resolveOrg } from "../../lib/resolve-target.js";
20: import { buildOrgUrl } from "../../lib/sentry-urls.js";
21:
22: type ViewFlags = {
23: readonly json: boolean;
24: readonly web: boolean;
25: readonly fresh: ...
Found 11 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/mutate-command.ts:
Line 22: import { buildCommand, type CommandDocumentation } from "./command.js";
Line 335: readonly docs: CommandDocumentation;
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/list-command.ts:
Line 25: type CommandDocumentation,
Line 552: readonly docs: CommandDocumentation;
Line 631: export type OrgListCommandDocs = CommandDocumentation;
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts:
Line 110: export type CommandDocumentation =
Line 154: readonly docs: CommandDocumentation;
Line 421: docs: CommandDocumentation,
Line 424: ): CommandDocumentation {
Line 442: docs: CommandDocumentation
Line 461: docs: CommandDocumentation
Found 21 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/introspect.ts:
Line 55: * reads it to populate {@link CommandInfo.jsonFields}.
Line 102: export type CommandInfo = {
Line 131: commands: CommandInfo[];
Line 139: | { kind: "command"; info: CommandInfo }
Line 280: * Build a {@link CommandInfo} from a Stricli Command.
Line 286: export function buildCommandInfo(
Line 290: ): CommandInfo {
Line 324: ): CommandInfo[] {
Line 325: const commands: CommandInfo[] = [];
Line 336: commands.push(buildCommandInfo(subTarget, path, examples));
Line 378: commands: [buildCommandInfo(target, path)],
Line 453: info: buildCommandInfo(target, `sentry ${entry.name.original}`),
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts:
Line 893: // introspect.ts reads this to populate CommandInfo.jsonFields for help
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/help.ts:
Line 21: type ...
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/help.ts</path>
<type>file</type>
<content>
640: *
641: * Matches Stricli's "did you mean" style:
642: * - 1 item: `"issue"`
643: * - 2 items: `"issue or trace"`
644: * - 3 items: `"issue, trace, or auth"`
645: */
646: function formatSuggestionList(items: string[]): string {
647: if (items.length <= 1) {
648: return items.join("");
649: }
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. ...
No files found
<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: ...
Found 38 matches
/home/byk/Code/getsentry/cli-pr-1558/.github/workflows/pr-risk.yml:
Line 13: group: pr-risk-${{ github.event.pull_request.number }}
Line 24: uses: getsentry/pr-risk-action@v0
Line 28: result-path: risk-pr-result.json
Line 33: uses: actions/upload-artifact@v4
Line 35: name: risk-pr-result
Line 36: path: risk-pr-result.json
/home/byk/Code/getsentry/cli-pr-1558/.github/workflows/eval-skill-fork.yml:
Line 41: && github.event.pull_request.head.repo.fork == true
Line 90: -f context="eval-skill/fork" \
/home/byk/Code/getsentry/cli-pr-1558/.lore.md:
Line 338: * **CI Node version pinning: centralized env block per workflow file, ternary for matrix jobs**: Node CVE-2026-48931 fix: \`NODE\_VERSION\_22="22.23.1"\`, \`NODE\_VERSION\_24="24.18.0"\` (22.23.0 had the vulnerability; fix landed in 22.23.1 via nodejs/node#64004). Pattern: add top-level \`env:\` block to each workflow file ...
<path>/home/byk/Code/getsentry/cli-pr-1558/.github/workflows/pr-risk.yml</path>
<type>file</type>
<content>
1: name: PR Risk Experiment
2:
3: on:
4: pull_request:
5: types: [opened, synchronize, reopened, ready_for_review]
6:
7: permissions:
8: contents: read
9: pull-requests: write
10: issues: write
11:
12: concurrency:
13: group: pr-risk-${{ github.event.pull_request.number }}
14: cancel-in-progress: true
15:
16: jobs:
17: risk:
18: name: Score PR risk
19: runs-on: ubuntu-latest
20: if: github.event.pull_request.draft == false
21:
22: steps:
23: - name: Score current PR
24: uses: getsentry/pr-risk-action@v0
25: with:
26: repo: ${{ github.repository }}
27: pr-number: ${{ github.event.pull_request.number }}
28: result-path: risk-pr-result.json
29: skip-reviews: "true"
30: apply-label: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
31:
32: - ...
GitHub - getsentry/pr-risk-action at v0 · GitHub
[Skip to content](#start-of-content)
## Navigation Menu
[](/)
[Sign in](/login?return_to=https%3A%2F%2Fgithub.com%2Fgetsentry%2Fpr-risk-action%2Ftree%2Fv0)
Appearance settings
- Platform
- AI CODE CREATION
- [GitHub CopilotWrite better code with AI](https://github.com/features/copilot)
- [GitHub Copilot appDirect agents from issue to merge](https://github.com/features/ai/github-app)
- [MCP RegistryIntegrate external tools](https://github.com/mcp)
- DEVELOPER WORKFLOWS
- [ActionsAutomate any workflow](https://github.com/features/actions)
- [CodespacesInstant dev environments](https://github.com/features/codespaces)
- [IssuesPlan and track ...
name: PR Risk Action
description: Score a pull request as low, medium, or high risk.
inputs:
repo:
description: GitHub repository as owner/name.
required: true
pr-number:
description: Pull request number.
required: true
profile:
description: Profile directory under profiles/. Defaults to owner__repo.
required: false
default: ""
history:
description: Optional raw historical PR JSONL or JSONL.GZ path. Defaults to the selected profile history.
required: false
default: ""
model:
description: Optional saved model JSON path. Defaults to the selected profile model.
required: false
default: ""
result-path:
description: JSON result output path.
required: false
default: risk-pr-result.json
skip-reviews:
description: Skip fetching current PR reviews.
required: false
default: "true"
apply-label:
description: "Apply risk labels to the pull request. Requires issues: write in the caller workflow."
...
"""Command line interface for the PR risk MVP."""
from __future__ import annotations
import argparse
import json
import os
import sys
from datetime import datetime, timedelta, timezone
from pathlib import Path
from typing import Any, Dict, List, Optional, Sequence
from .features import build_feature_rows, load_raw_dataset, write_feature_csv
from .git_history import build_git_pr_rows, collect_git_reverts_by_pr, survey_git_history
from .github import (
GitHubError,
GitHubClient,
RepoRef,
normalize_file,
normalize_pr,
normalize_review,
parse_github_time,
utc_now_iso,
write_jsonl,
)
from .modeling import (
DEFAULT_FEATURE_SET,
apply_serialized_logistic_model,
canonical_feature_set,
logistic_markdown_report,
train_logistic_baseline,
)
from .scoring import evaluate_predictions, markdown_report, score_feature_rows, write_json
DEFAULT_OUTCOMES = ["strong_outcome", "medium_outcome"]
RISK_LABELS = {
"low": {
"name": "risk: ...
.gitignore:73:apps/cli-docs/src/content/docs/commands/ apps/cli-docs/src/content/docs/commands/agent-conversation.md packages/cli/.gitignore:38:src/generated/ packages/cli/src/generated/skill-content.ts .gitignore:77:apps/cli-docs/public/.well-known/skills/index.json apps/cli-docs/public/.well-known/skills/index.json
<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 ...
<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 type { CommandExample } from "./command.js";
14: import {
15: extractSchemaFields,
16: type SchemaFieldInfo,
17: } from "./formatters/output.js";
18: import { fuzzyMatch } from "./fuzzy.js";
19:
20: // ---------------------------------------------------------------------------
21: // Stricli Runtime Types (simplified for introspection)
22: ...
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/help.ts</path>
<type>file</type>
<content>
280: defaultValue?: string;
281: };
282:
283: /**
284: * Metadata for a common flag as exposed to JSON callers of `sentry help --json`.
285: */
286: export type HelpFlagInfo = {
287: /** Long flag name including `--` prefix (e.g. `"--json"`). */
288: long: string;
289: /** Short alias including `-` prefix (e.g. `"-f"`), or undefined if none. */
290: short?: string;
291: /** One-line description. */
292: description: string;
293: };
294:
295: /**
296: * Result of introspecting the CLI.
297: * Yielded as CommandOutput — JSON mode serializes directly, human mode
298: * passes through {@link formatHelpHuman}, which renders the branded banner for
299: * the full tree. ...
Found 2 matches /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/commands/agent-conversation/view.ts: Line 75: customUsage: [USAGE],
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/project/create.ts</path>
<type>file</type>
<content>
580: }
581: log.debug("403 on team-based flow — falling back to org-scoped endpoint");
582: const fallback = await createProjectWithAutoTeamFallback({
583: orgSlug,
584: name,
585: platform,
586: });
587: teamSlug = fallback.teamSlug;
588: teamSource = fallback.teamSource;
589: projectDetails = fallback;
590: }
591:
592: const { project, dsn, url } = projectDetails;
593: return {
594: project,
595: orgSlug,
596: teamSlug,
597: teamSource,
598: requestedPlatform: platform,
599: dsn,
600: url,
601: slugDiverged: project.slug !== expectedSlug,
602: expectedSlug,
603: };
604: }
605:
606: export const createCommand = buildCommand({
607: docs: {
608: brief: "Create one or more projects",
609: customUsage: ["[<org>/]<name>:<platform>..."],
610: fullDescription:
611: ...
ripgrep execution failed
No files found
<path>/home/byk/Code/getsentry/cli-pr-1558/node_modules</path> <type>directory</type> <entries> .modules.yaml .pnpm-workspace-state.json .pnpm/ (3 entries) </entries>
No files found
<path>/home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm</path> <type>directory</type> <entries> @a2a-js+sdk@0.3.14_express@5.2.1/ @ai-sdk+provider-utils@2.2.8_zod@4.4.3/ @ai-sdk+provider-utils@3.0.30_zod@4.4.3/ @ai-sdk+provider-utils@4.0.40_zod@4.4.3/ @ai-sdk+provider-utils@5.0.13_zod@4.4.3/ @ai-sdk+provider@1.1.3/ @ai-sdk+provider@2.0.3/ @ai-sdk+provider@3.0.14/ @ai-sdk+provider@4.0.4/ @ai-sdk+ui-utils@1.2.11_zod@4.4.3/ @alcalzone+ansi-tokenize@0.3.0/ @anthropic-ai+sdk@0.39.0/ @apm-js-collab+code-transformer-bundler-plugins@0.5.0/ @apm-js-collab+code-transformer-bundler-plugins@0.7.3/ @apm-js-collab+code-transformer@0.15.0/ @apm-js-collab+code-transformer@0.18.1/ @apm-js-collab+tracing-hooks@0.10.1/ @apm-js-collab+tracing-hooks@0.13.0/ @astrojs+compiler-binding-linux-x64-gnu@0.3.2/ @astrojs+compiler-binding-linux-x64-musl@0.3.2/ @astrojs+compiler-binding@0.3.2_@emnapi+core@1.10.0_@emnapi+runtime@1.10.0/ @astrojs+compiler-rs@0.3.2_@emnapi+core@1.10.0_@emnapi+runtime@1.10.0/ @astr...
/home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/README.md /home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/package.json /home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/dist/index.d.ts /home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/dist/index.js /home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/dist/index.d.cts /home/byk/Code/getsentry/cli-pr-155...
Found 22 matches
/home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/dist/index.js:
Line 1070: usage: "USAGE",
Line 1823: }).map(([flag, usage]) => {
Line 1826: return wrapVariadicFlag(wrapOptionalFlag(usage));
Line 1828: return wrapVariadicFlag(wrapRequiredFlag(usage));
Line 1831: return wrapOptionalFlag(usage);
Line 1833: return wrapRequiredFlag(usage);
Line 2001: const { brief, fullDescription, customUsage } = docs;
Line 2004: yield args.ansiColor ? `\x1B[4m${headers.usage}\x1B[24m` : headers.usage;
Line 2005: if (customUsage) {
Line 2006: for (const usage of customUsage) {
Line 2007: if (typeof usage === "string") {
Line 2008: yield ` ${prefix} ${usage}`;
Line 2010: const brief2 = args.ansiColor ? `\x1B[3m${usage.brief}\x1B[23m` : usage.brief;
Line 2011: ...
<path>/home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/dist/index.js</path>
<type>file</type>
<content>
1980: if (def.optional) {
1981: name = `[${name}]`;
1982: } else if (atLeastOneOptional) {
1983: name = ` ${name}`;
1984: }
1985: if (def.default) {
1986: const defaultKeyword = args.ansiColor ? `\x1B[2m${keywords.default}\x1B[22m` : keywords.default;
1987: suffix = `[${defaultKeyword} ${def.default}]`;
1988: }
1989: return [
1990: args.ansiColor ? `\x1B[1m${name}\x1B[22m` : name,
1991: args.ansiColor ? `\x1B[3m${def.brief}\x1B[23m` : def.brief,
1992: suffix ?? ""
1993: ];
1994: }),
1995: [" ", " "]
1996: );
1997: }
1998:
1999: // src/routing/command/documentation.ts
2000: function* generateCommandHelpLines(parameters, docs, args) {
2001: const ...
<path>/home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/dist/index.js</path>
<type>file</type>
<content>
1870: }
1871: if (isOptionalAtRuntime(flag)) {
1872: flagName = `[${flagName}]`;
1873: } else if (atLeastOneOptional) {
1874: flagName = ` ${flagName}`;
1875: }
1876: if (flag.kind === "parsed" && flag.variadic) {
1877: flagName = `${flagName}...`;
1878: }
1879: const suffixParts = [];
1880: if (flag.kind === "enum") {
1881: const choices = flag.values.join("|");
1882: suffixParts.push(choices);
1883: }
1884: if (hasDefault(flag)) {
1885: const defaultKeyword = args.ansiColor ? `\x1B[2m${keywords.default}\x1B[22m` : keywords.default;
1886: let defaultValue;
1887: if (Array.isArray(flag.default)) {
1888: if (flag.default.length === 0) {
1889: ...
Found 3 matches
/home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/dist/index.js:
Line 1798: function formatUsageLineForParameters(parameters, args) {
Line 2016: yield ` ${formatUsageLineForParameters(parameters, args)}`;
Line 2117: return formatUsageLineForParameters(builderArgs.parameters, args);
<path>/home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/dist/index.js</path>
<type>file</type>
<content>
1770:
1771: // src/parameter/flag/types.ts
1772: function hasDefault(flag) {
1773: return "default" in flag && typeof flag.default !== "undefined";
1774: }
1775: function isOptionalAtRuntime(flag) {
1776: return flag.optional ?? hasDefault(flag);
1777: }
1778:
1779: // src/parameter/formatting.ts
1780: function wrapRequiredFlag(text) {
1781: return `(${text})`;
1782: }
1783: function wrapOptionalFlag(text) {
1784: return `[${text}]`;
1785: }
1786: function wrapVariadicFlag(text) {
1787: return `${text}...`;
1788: }
1789: function wrapRequiredParameter(text) {
1790: return `<${text}>`;
1791: }
1792: function wrapOptionalParameter(text) {
1793: return `[<${text}>]`;
1794: }
1795: function wrapVariadicParameter(text) {
1796: return ...
Found 3 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts:
Line 903: (cmd as unknown as Record<string, unknown>).__rawFunc = originalFunc;
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/auth/default.ts:
Line 74: const raw = (command as unknown as { __rawFunc?: RawCommandFunc }).__rawFunc;
Line 77: "Command is missing __rawFunc; expected buildCommand output"
Found 100 matches (more matches available) /home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/commands/trial/list.test.ts: Line 145: const func = await listCommand.loader(); Line 166: const func = await listCommand.loader(); Line 183: const func = await listCommand.loader(); Line 206: const func = await listCommand.loader(); Line 220: const func = await listCommand.loader(); Line 234: const func = await listCommand.loader(); Line 247: const func = await listCommand.loader(); Line 261: const func = await listCommand.loader(); Line 283: const func = await listCommand.loader(); Line 305: const func = await listCommand.loader(); Line 325: const func = await listCommand.loader(); Line 348: const func = await listCommand.loader(); Line 369: const func = await listCommand.loader(); Line 387: const func = await listCommand.loader(); Line 408: const func = await listCommand.loader(); ...
No files found
Found 6 matches
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/mutate-command.test.ts:
Line 5: * guardNonInteractive, requireExplicitTarget), and Level C buildDeleteCommand
Line 12: DESTRUCTIVE_FLAGS,
Line 45: test("DESTRUCTIVE_FLAGS bundles all three flags", () => {
Line 46: expect(DESTRUCTIVE_FLAGS.yes).toBe(YES_FLAG);
Line 47: expect(DESTRUCTIVE_FLAGS.force).toBe(FORCE_FLAG);
Line 48: expect(DESTRUCTIVE_FLAGS["dry-run"]).toBe(DRY_RUN_FLAG);
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/mutate-command.test.ts</path>
<type>file</type>
<content>
1: /**
2: * Tests for the shared mutate-command building blocks.
3: *
4: * Tests Level A flag constants, Level B utilities (isConfirmationBypassed,
5: * guardNonInteractive, requireExplicitTarget), and Level C buildDeleteCommand
6: * flag/alias injection.
7: */
8:
9: import { describe, expect, test } from "vitest";
10: import {
11: DESTRUCTIVE_ALIASES,
12: DESTRUCTIVE_FLAGS,
13: DRY_RUN_ALIASES,
14: DRY_RUN_FLAG,
15: FORCE_FLAG,
16: guardNonInteractive,
17: isConfirmationBypassed,
18: requireExplicitTarget,
19: YES_FLAG,
20: } from "../../src/lib/mutate-command.js";
21:
22: // ---------------------------------------------------------------------------
23: // Level A: flag constant shapes
24: // ---------------------------------------------------------------------------
25:
26: describe("flag constants", () => {
27: test("DRY_RUN_FLAG ...
Your prior result was empty and cannot satisfy the correctness merge gate. Resume the same read-only review now and return a substantive evidence-based report. The repository remains unchanged: base bd065083c3b82677747b97a6cc7f5cf57532d3bc, head fc5d50e2324e2b6bb2067976bf1515dab45224fb, triple-dot patch SHA-256 03c5772e78b393b3979c44754709d7f401bb37a71e5679b34c50a9cc8334c2d0, clean worktree. Re-verify these values before and after. Inspect every changed file and all correctness/compatibility areas in the original prompt. You must return either: (1) findings with PASS/FAIL/CONCERN/MUST-FIX, exact file:line evidence, impact, concrete fix, and deterministic regression; (2) explicit PASS statements with exact file:line evidence and residual risks/testing gaps if no defects; or (3) BLOCKED with the exact tool/error that prevents review. Never return empty output. End exactly MERGE or DO-NOT-MERGE. Do not modify anything.
fc5d50e2324e2b6bb2067976bf1515dab45224fb bd065083c3b82677747b97a6cc7f5cf57532d3bc bd065083c3b82677747b97a6cc7f5cf57532d3bc 03c5772e78b393b3979c44754709d7f401bb37a71e5679b34c50a9cc8334c2d0 -
M .github/workflows/pr-risk.yml 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/plugins/sentry-cli/skills/sentry-cli/references/alert.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/cli.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/explore.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/feedback.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/init.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/issue.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/monitor.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/org.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/project.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/release.md M packages/cli/plugins/sentry-cli/s...
...output truncated...
Full output saved to: /home/byk/.local/share/opencode/tool-output/tool_0873b2396001J1r0zeXS3jx0bY
readonly output?: OutputConfig<any>;
/**
* Whether the command requires authentication. Defaults to `true`.
*
* When `true` (the default), the command throws `AuthError("not_authenticated")`
* before executing if no credentials exist at all (no token or refresh token
* in the DB or env vars). Expired tokens with a valid refresh token pass the
* guard — the API client handles silent refresh. The auto-auth middleware in
* `cli.ts` catches the error and triggers the login flow.
*
* Set to `false` for commands that intentionally work without a token
* (e.g. `auth login`, `auth logout`, `auth status`, `help`, `cli upgrade`).
*
* Set to `"dsn"` for commands that authenticate via a Sentry DSN instead of
* a Bearer token (e.g. `event send`). These commands skip
* the token guard and the `.sentryclirc` URL trust ...
diff --git a/packages/cli/src/commands/agent-conversation/list.ts b/packages/cli/src/commands/agent-conversation/list.ts
index 009809093..806842e71 100644
--- a/packages/cli/src/commands/agent-conversation/list.ts
+++ b/packages/cli/src/commands/agent-conversation/list.ts
@@ -1,211 +1,231 @@
/**
* sentry agent-conversation list
*
* List recent agent conversations from Sentry projects.
*/
import type { SentryContext } from "../../context.js";
import { listConversations } from "../../lib/api-client.js";
import { validateLimit } from "../../lib/arg-parsing.js";
import {
advancePaginationState,
buildPaginationContextKey,
hasPreviousPage,
resolveCursor,
} from "../../lib/db/pagination.js";
import { ContextError } from "../../lib/errors.js";
import { formatConversationTable } from "../../lib/formatters/conversation.js";
import { filterFields } from "../../lib/formatters/json.js";
import { CommandOutput } from "../../lib/formatters/output.js";
+import { ...
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts</path>
<type>file</type>
<content>
80: type BaseArgs = readonly unknown[];
81:
82: /**
83: * Type-erased Stricli builder arguments.
84: *
85: * At the `stricliCommand()` call site we've modified both `parameters`
86: * (injected hidden flags) and `func` (wrapped with telemetry/output
87: * logic), which breaks the original `FLAGS`/`ARGS` generic alignment
88: * that Stricli's `CommandBuilderArguments` enforces via `NoInfer`.
89: *
90: * Rather than silencing with `as any`, we cast through `unknown` to
91: * this type that matches Stricli's structural expectations while
92: * erasing the generic constraints we can no longer satisfy.
93: */
94: type StricliBuilderArgs<CONTEXT extends CommandContext> =
95: import("@stricli/core").CommandBuilderArguments<BaseFlags, BaseArgs, CONTEXT>;
96:
97: /** A runnable example stored with a command definition for generated docs. ...
diff --git a/apps/cli-docs/src/fragments/commands/agent-conversation.md b/apps/cli-docs/src/fragments/commands/agent-conversation.md index ca9b2b2e3..e69de29bb 100644 --- a/apps/cli-docs/src/fragments/commands/agent-conversation.md +++ b/apps/cli-docs/src/fragments/commands/agent-conversation.md @@ -1,33 +0,0 @@ - - - -## Examples - -### List conversations - -```bash -# List recent agent conversations -sentry agent-conversation list - -# Explicit organization -sentry agent-conversation list my-org - -# Show more, last 24 hours -sentry agent-conversation list --limit 50 --period 24h - -# Filter conversations -sentry agent-conversation list -q "has:errors" - -# Paginate through results -sentry agent-conversation list my-org -c next -``` - -### View a conversation transcript - -```bash -# View full transcript -sentry agent-conversation view my-org conv-123 - -# JSON output -sentry agent-conversation view my-org conv-123 --json -``` diff --git a/packages/cli/script/check-fragments.ts ...
/home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/index.md /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/schema.md /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/api.md /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/local.md /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/info.md /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/init.md /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/trial.md /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/trace.md /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/status.md /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/span.md /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/sourcemap.md /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/sr...
<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" ...
/home/byk/Code/getsentry/cli-pr-1558/packages/cli/patches/@stricli%2Fcore@1.2.8.patch
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/patches/@stricli%2Fcore@1.2.8.patch</path>
<type>file</type>
<content>
1: diff --git a/dist/index.cjs b/dist/index.cjs
2: index a9afbc1ab78cad7ba97d53882a80236af62854df..141532779be923b8f3b421b0afc031b5ea209e29 100644
3: --- a/dist/index.cjs
4: +++ b/dist/index.cjs
5: @@ -1277,6 +1277,35 @@ var RouteMapSymbol = Symbol("RouteMap");
6: var CommandSymbol = Symbol("Command");
7:
8: // src/routing/scanner.ts
9: +// PATCH(getsentry/cli): pluggable top-level (global) flags allow-list.
10: +// Stricli only parses flags at the leaf command, so a flag placed before the
11: +// subcommand (e.g. `mycli --verbose sub cmd`) is treated as an unknown route
12: +// segment and fails route resolution. When the host application declares a
13: +// `scanner.topLevelFlags` allow-list, `buildRouteScanner` recognizes those
14: +// flags at any route depth and forwards them (and, for value-taking flags,
15: +// their value) to the leaf command via ...
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 f1a71fb6a..85a58de78 100644 --- a/packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md +++ b/packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md @@ -341,144 +341,144 @@ sentry auth logout ## Command Reference ### Auth Authenticate with Sentry - `sentry auth login` — Authenticate with Sentry - `sentry auth logout` — Log out of Sentry - `sentry auth refresh` — Refresh your OAuth access token - `sentry auth status` — View authentication status - `sentry auth token` — Print the stored authentication token - `sentry auth whoami` — Show the currently authenticated identity → Full flags and examples: `references/auth.md` ### Org Work with Sentry organizations - `sentry org list` — List organizations -- `sentry org view <org>` — View details of an organization +- `sentry org view [<org>]` — View details of an ...
Found 31 matches /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/event.md: Line 18: | `[<org/project/event-id...>]` | [<org>/<project>] <event-id> [<event-id>...] - Target (optional) and one or more event IDs | Line 57: | `[<args...>]` | Path(s) to JSON event file(s) to send | /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/replay.md: Line 40: | `[<replay-id-or-url...>]` | [<org>/<project>] <replay-id> or <replay-url> | /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/react-native.md: Line 33: | `[<script-arg...>]` | Extra arguments passed to the build script | /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/proguard.md: Line 18: | `[<path...>]` | Paths to ProGuard/R8 mapping files | /home/byk/Code/getsentry/cli-pr-1558/apps/cli-docs/src/content/docs/commands/project.md: Line 18: | `[<name:platform...>]` ...
Found 67 matches
/home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/dist/index.js:
Line 341: * External name of flag or placeholder for positional argument that was parsing this input.
Line 382: let message = `Expected "${input}" to be one of (${values.join("|")})`;
Line 410: let message = `Expected input for flag --${externalFlagName}`;
Line 421: * Expected (maximum) count of positional arguments.
Line 436: * Placeholder for positional argument that was active when this error was thrown. ...
<path>/home/byk/Code/getsentry/cli-pr-1558/node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/dist/index.js</path>
<type>file</type>
<content>
790: } else if (nextFlags.length > 1) {
791: const nextFlagExpectingArg = nextFlags.find((nextFlag) => !isNiladic(nextFlag));
792: const externalFlagName = asExternal(nextFlagExpectingArg.namedFlag[0], config.caseStyle);
793: throw new UnsatisfiedFlagError(externalFlagName);
794: } else {
795: activeFlag = nextFlags[0].namedFlag;
796: }
797: return;
798: }
799: }
800: if (activeFlag) {
801: storeInput(flagInputs, config.caseStyle, activeFlag, input);
802: activeFlag = void 0;
803: } else {
804: if (positional.kind === "tuple") {
805: if (positionalIndex >= positional.parameters.length) {
806: throw ...
No files found
Found 100 matches (more matches available) /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trace/view.ts: Line 496: default: false, Line 501: default: false, /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trace/logs.ts: Line 142: default: false, Line 148: default: DEFAULT_PERIOD, Line 154: default: "100", // Logs are high-volume; 25 is too stingy for debugging Line 167: default: "newest", /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/trace/list.ts: Line 238: default: String(LIST_DEFAULT_LIMIT), Line 250: default: "date" as const, /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/status/show.ts: Line 43: default: SENTRY_STATUS_PAGE_URL, /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/span/list.ts: Line 587: default: String(LIST_DEFAULT_LIMIT), Line 600: default: ...
Found 50 matches /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/issue/utils.ts: Line 59: kind: "tuple", /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/init.ts: Line 314: kind: "tuple", /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/feedback/utils.ts: Line 21: kind: "tuple", /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/feedback/list.ts: Line 156: kind: "tuple", /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/explore.ts: Line 659: kind: "tuple" as const, /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/debug-files/print-sources.ts: Line 123: kind: "tuple", /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/debug-files/check.ts: Line 134: kind: "tuple", /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/debug-files/bundle-sources.ts: Line 92: kind: ...
<path>/tmp/opencode</path> <type>directory</type> <entries> all-help-fields.err all-help-fields.json all-help.err all-help.json check-fragments-base.ts create-token-index.js list-help-command.err list-help-command.json list-help.err list-help.json lore-v2-runtime-final/ lore-v2-runtime-min/ lore-v2-runtime/ loreai-core-0.40.0.tgz loreai-gateway-0.40.0.tgz loreai-opencode-0.40.0.tgz proguard-fragment-base.md proguard-reference-base.md (18 entries) </entries>
DEPRECATED `test.poolOptions` was removed in Vitest 4. All previous `poolOptions` are now top-level options. Please, refer to the migration guide: https://vitest.dev/guide/migration#pool-rework RUN v4.1.10 /home/byk/Code/getsentry/cli-pr-1558/packages/cli [debug] [compat-flags] --org flag → SENTRY_ORG=my-org [debug] [compat-flags] --project flag → SENTRY_PROJECT=my-proj [debug] [compat-flags] --org flag → SENTRY_ORG=my-org [debug] [compat-flags] --project flag → SENTRY_PROJECT=my-proj [debug] [compat-flags] --org flag → SENTRY_ORG=new [debug] [compat-flags] --org flag → SENTRY_ORG=my-org [debug] [compat-flags] --project flag → SENTRY_PROJECT=my-proj [debug] [compat-flags] --org flag → SENTRY_ORG=my-org [debug] [compat-flags] --project flag → SENTRY_PROJECT=my-project [debug] [compat-flags] --org flag → SENTRY_ORG=new-org [debug] [compat-flags] --org flag → SENTRY_ORG=sentry [debug] [compat-flags] --project flag → SENTRY_PROJECT=cli [debug] [compat-flags] --org flag → ...
Found 100 matches (more matches available) /home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/e2e/trace.test.ts: Line 58: expect(result.exitCode).toBe(EXIT.AUTH_NOT_AUTHENTICATED); Line 71: expect(result.exitCode).toBe(0); Line 84: expect(result.exitCode).toBe(0); Line 102: expect(result.exitCode).toBe(0); Line 117: expect(result.exitCode).not.toBe(0); Line 126: expect(result.exitCode).toBe(0); Line 139: expect(result.exitCode).toBe(EXIT.AUTH_NOT_AUTHENTICATED); Line 148: expect(result.exitCode).toBe(EXIT.CONTEXT_MISSING); Line 162: expect(result.exitCode).toBe(0); Line 177: expect(result.exitCode).toBe(0); Line 194: expect(result.exitCode).toBe(EXIT.RESOLUTION); /home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/e2e/feedback.test.ts: Line 62: expect(routeHelp.exitCode, routeHelp.stderr).toBe(0); Line 65: expect(listHelp.exitCode, listHelp.stderr).toBe(0); Line 68: ...
No files found
File not found: /home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/e2e/helpers.ts
No files found
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/e2e/trace.test.ts</path>
<type>file</type>
<content>
1: /**
2: * Trace Command E2E Tests
3: *
4: * Tests for sentry trace list and sentry trace view commands.
5: */
6:
7: import {
8: afterAll,
9: afterEach,
10: beforeAll,
11: beforeEach,
12: describe,
13: expect,
14: test,
15: } from "vitest";
16: import { EXIT } from "../../src/lib/errors.js";
17: import { createE2EContext, type E2EContext } from "../fixture.js";
18: import { cleanupTestDir, createTestConfigDir } from "../helpers.js";
19: import {
20: createSentryMockServer,
21: TEST_ORG,
22: TEST_PROJECT,
23: TEST_TOKEN,
24: TEST_TRACE_ID,
25: } from "../mocks/routes.js";
26: import type { MockServer } from "../mocks/server.js";
27:
28: let testConfigDir: string;
29: let mockServer: MockServer;
30: let ctx: E2EContext;
31:
32: beforeAll(async () => {
33: mockServer = createSentryMockServer();
34: await mockServer.start();
35: });
36:
37: ...
...output truncated...
Full output saved to: /home/byk/.local/share/opencode/tool-output/tool_0876f739f001gr2tOLwrpH13nG
+ command: unknown,
+ docs: CommandDocumentation
+): void {
+ const metadata = command as Record<string, unknown>;
+ const primaryUsage = docs.customUsage?.[0];
+ if (primaryUsage) {
+ metadata.__primaryUsage =
+ typeof primaryUsage === "string" ? primaryUsage : primaryUsage.input;
+ }
+ if (docs.examples?.length) {
+ metadata.__examples = docs.examples;
+ }
+}
+
/**
* Global flag defaults keyed by flag name.
* Used by {@link mergeGlobalFlags} to inject flags when the command
* doesn't define its own.
*/
const GLOBAL_FLAG_DEFAULTS: Record<string, unknown> = {
[LOG_LEVEL_KEY]: LOG_LEVEL_FLAG,
verbose: VERBOSE_FLAG,
org: ORG_FLAG,
project: PROJECT_FLAG,
};
/** Flags that are always stripped (command never sees them). ...
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/init.ts</path>
<type>file</type>
<content>
300: "install the SDK, and configure Sentry.\n\n" +
301: "Supports org/project syntax and a directory positional. Path-like\n" +
302: "arguments (starting with . / ~) are treated as the directory;\n" +
303: "everything else is treated as the target.\n\n" +
304: "Examples:\n" +
305: " sentry init\n" +
306: " sentry init acme/\n" +
307: " sentry init acme/my-app\n" +
308: " sentry init my-app\n" +
309: " sentry init acme/my-app ./my-project\n" +
310: " sentry init ./my-project",
311: },
312: parameters: {
313: positional: {
314: kind: "tuple",
315: parameters: [
316: {
317: placeholder: "target",
318: brief: "<org>/<project>, <org>/, <project>, or a directory path",
319: parse: String,
320: optional: true,
321: },
322: ...
No files found
<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: ...
<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: ...
No files found
M .github/workflows/pr-risk.yml 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/plugins/sentry-cli/skills/sentry-cli/references/alert.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/cli.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/explore.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/feedback.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/init.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/issue.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/monitor.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/org.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/project.md M packages/cli/plugins/sentry-cli/skills/sentry-cli/references/release.md M packages/cli/plugins/sentry-cli/s...
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts</path>
<type>file</type>
<content>
540: const ARGS extends BaseArgs = [],
541: const CONTEXT extends CommandContext = CommandContext,
542: >(
543: builderArgs: LocalCommandBuilderArguments<FLAGS, ARGS, CONTEXT>
544: ): Command<CONTEXT> {
545: const originalFunc = builderArgs.func;
546: const outputConfig = builderArgs.output;
547: const requiresAuth = builderArgs.auth !== false && builderArgs.auth !== "dsn";
548: const skipRcUrlCheck =
549: builderArgs.skipRcUrlCheck === true || builderArgs.auth === "dsn";
550:
551: // Merge global flags into the command's flag definitions.
552: const existingParams = (builderArgs.parameters ?? {}) as Record<
553: string,
554: unknown
555: >;
556: const existingFlags = (existingParams.flags ?? ...
Found 4 matches /home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts: Line 441: function prepareNativeDocs( Line 459: function attachDocumentationMetadata( Line 564: prepareNativeDocs(builderArgs.docs), Line 890: attachDocumentationMetadata(cmd, builderArgs.docs);
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/lib/command.ts</path>
<type>file</type>
<content>
410: ...FIELDS_FLAG,
411: brief: `${FIELDS_FLAG.brief}. Available: ${fieldNames}`,
412: };
413: }
414:
415: /**
416: * Enrich command docs with a JSON fields section when a schema is registered.
417: * Appends available field names and types to `fullDescription` so they appear
418: * in Stricli's `--help` output.
419: */
420: function enrichDocsWithSchema(
421: docs: CommandDocumentation,
422: // biome-ignore lint/suspicious/noExplicitAny: OutputConfig type is erased at the builder level
423: outputConfig?: OutputConfig<any>
424: ): CommandDocumentation {
425: if (!outputConfig?.schema) {
426: return docs;
427: }
428: const schemaFields = extractSchemaFields(outputConfig.schema);
429: if (schemaFields.length === 0) {
430: return docs;
431: }
432: const jsonFieldsDoc = formatSchemaForHelp(schemaFields);
433: const baseFull = ...
<path>/home/byk/Code/getsentry/cli-pr-1558/packages/cli/src/commands/project/create.ts</path>
<type>file</type>
<content>
380: * Project names cannot contain whitespace in either supported syntax.
381: */
382: function parseProjectName(
383: rawName: string,
384: platform: string
385: ): ParsedProjectSpec {
386: if (rawName.trim() === "") {
387: throw new ValidationError("Project name cannot be empty.", "name");
388: }
389: if (WHITESPACE_RE.test(rawName)) {
390: throw new ValidationError(
391: `Project name '${rawName}' cannot contain whitespace.`,
392: "name"
393: );
394: }
395:
396: const parsedName = parseOrgProjectArg(rawName);
397: switch (parsedName.type) {
398: case "explicit":
399: return {
400: org: parsedName.org,
401: name: parsedName.project,
402: platform,
403: };
404: case "project-search":
405: return {
406: org: parsedName.org,
407: name: ...
No files found
The orchestration server restarted. Resume and complete the exact-head correctness review now. The immutable target has just been reverified: clean worktree; base bd065083c3b82677747b97a6cc7f5cf57532d3bc; head fc5d50e2324e2b6bb2067976bf1515dab45224fb; triple-dot patch SHA-256 03c5772e78b393b3979c44754709d7f401bb37a71e5679b34c50a9cc8334c2d0. Preserve all prior review instructions. Return a substantive evidence-or-blocker report, never empty output. Reverify the immutable target after inspection. End exactly MERGE or DO-NOT-MERGE.
### Current State - On Sep 9, 2026, the active task is an independent, adversarial, read-only correctness and compatibility review of getsentry/cli PR #1558 in `/home/byk/Code/getsentry/cli-pr-1558`. - Repository branch: `fix/agent-conversation-reference-root-cause`. - Immutable review pair: - Base/merge base: `bd065083c3b82677747b97a6cc7f5cf57532d3bc` - Head: `fc5d50e2324e2b6bb2067976bf1515d…
Date: Sep 9, 2026 * 🔴 (23:05) User stated the orchestration server restarted. * 🔴 (23:05) User stated the immutable review target was reverified with a clean worktree, base `bd065083c3b82677747b97a6cc7f5cf57532d3bc`, head `fc5d50e2324e2b6bb2067976bf1515dab45224fb`, and triple-dot patch SHA-256 `03c5772e78b393b3979c44754709d7f401bb37a71e5679b34c50a9cc8334c2d0`. * 🔴 [requested-review] (23:05) Us…
Date: Sep 9, 2026 * 🔴 (18:34) `packages/cli/src/commands/init.ts` defines 2 optional tuple positionals: 1. `target` — brief `"<org>/<project>, <org>/, <project>, or a directory path"`; 2. `directory` — brief `"Project directory (default: current directory)"`. * 🔴 (18:34) `sentry init` documentation says path-like arguments beginning with `.`, `/`, or `~` are treated as the directory and everyth…
* 🔴 (18:23) Vitest 4.1.10 run in `/home/byk/Code/getsentry/cli-pr-1558/packages/cli` passed exactly 155 tests across 6 test files; duration was 15.36s, with transform 19.30s, setup 883ms, import 29.17s, tests 8.60s, and environment 1ms. * 🔴 (18:23) Vitest emitted deprecation warning: `test.poolOptions` was removed in Vitest 4, and all previous `poolOptions` are now top-level options; migration …
* 🟡 (18:02) Documentation audit found exactly 31 variadic positional signatures across generated command docs under `apps/cli-docs/src/content/docs/commands/`: `event.md` (`[<org/project/event-id...>]`, `[<args...>]`), `replay.md` (`[<replay-id-or-url...>]`), `react-native.md` (`[<script-arg...>]`), `proguard.md` (`[<path...>]`), `project.md` (`[<name:platform...>]`), `issue.md` (`[<issue...>]`)…
Date: Sep 9, 2026 * 🟡 (18:00) Generated CLI skill documentation was synchronized with optional positional metadata across 17 files: `packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md` plus 16 references: `references/agent-conversation.md`, `references/alert.md`, `references/cli.md`, `references/explore.md`, `references/feedback.md`, `references/init.md`, `references/issue.md`, `referenc…
Date: Sep 9, 2026 * 🔴 [enforced-output-contract] (17:51) User stated command hints live exclusively on the async generator return value (`CommandReturn`) and never on individual yields. * 🟡 (17:51) `packages/cli/src/lib/command.ts` defines every `SentryCommandFunction<FLAGS, ARGS, CONTEXT>` as an `AsyncGenerator<unknown, CommandReturn | void, undefined>`: non-streaming commands yield one `Comma…
* 🔴 (17:47) User stated agent conversation IDs are organization-scoped rather than organization/project-scoped and never contain `/`; therefore a view target may contain at most one slash, using `[<org>/]<conversation-id>`. * 🟡 (17:47) `packages/cli/src/commands/agent-conversation/list.ts` now defines reusable `POSITIONAL` metadata for one optional `org` tuple parameter and derives `USAGE_HINT`…
* 🔴 (17:24) User stated the repository review baseline remains base `bd065083c3b82677747b97a6cc7f5cf57532d3bc`, head `fc5d50e2324e2b6bb2067976bf1515dab45224fb`, triple-dot patch SHA-256 `03c5772e78b393b3979c44754709d7f401bb37a71e5679b34c50a9cc8334c2d0`, with a clean worktree. * 🔴 [requested-review] (17:24) User requested resumption of the same read-only correctness/compatibility review, inspect…
* 🟡 (17:07) Search found exactly 6 matches in `/home/byk/Code/getsentry/cli-pr-1558/packages/cli/test/lib/mutate-command.test.ts`: line 5 comment references `guardNonInteractive`, `requireExplicitTarget`, and Level C `buildDeleteCommand`; line 12 imports/references `DESTRUCTIVE_FLAGS`; line 45 defines test `"DESTRUCTIVE_FLAGS bundles all three flags"`; lines 46–48 assert `DESTRUCTIVE_FLAGS.yes` …
* 🟡 (16:49) Search found exactly 100 displayed matches for calls to `listCommand.loader()` across 8 test files, with additional matches available beyond the truncated result. * 🟡 (16:49) `packages/cli/test/commands/trial/list.test.ts` contains 19 displayed `const func = await listCommand.loader();` matches at lines 145, 166, 183, 206, 220, 234, 247, 261, 283, 305, 325, 348, 369, 387, 408, 429, …
* 🟡 (16:45) Installed `@stricli/core@1.2.8` in `node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/dist/index.js` lines 1967-1997 formats positional documentation: array positionals use `${placeholder ?? "args"}...`; tuple positionals use `def.placeholder ?? \`arg${i + 1}\``, wrap optional names as `[name]…
* 🟡 (16:41) Inspection of `packages/cli/src/lib/introspect.ts` found custom introspection types for Stricli’s route tree: `RouteMapEntry`, `RouteTarget`, `RouteMap`, `Command`, `PositionalParams`, `PositionalParam`, `PositionalInfo`, `FlagDef`, `CommandInfo`, `FlagInfo`, `RouteInfo`, `ResolvedPath`, and `UnresolvedPath`; `Command` retains non-standard metadata through `__jsonSchema`, `__primaryU…
* 🟡 (16:40) Review inspection found `.github/workflows/pr-risk.yml` defines `PR Risk Experiment` on `pull_request` events `opened`, `synchronize`, `reopened`, and `ready_for_review`; grants `contents: read`, `pull-requests: write`, and `issues: write`; uses concurrency group `pr-risk-${{ github.event.pull_request.number }}` with `cancel-in-progress: true`; skips draft PRs; runs `getsentry/pr-ris…
Date: Sep 9, 2026 * 🔴 [requested-review] (16:06) User requested an independent, read-only adversarial correctness review of getsentry/cli PR #1558 in `/home/byk/Code/getsentry/cli-pr-1558`. * 🔴 [enforced-workflow] (16:06) User prohibited editing files, committing, changing branches, fetching, or otherwise mutating VCS state during the review. * 🔴 [enforced-workflow] (16:06) User required revie…
* 🟡 (16:39) Git history on branch `fix/agent-conversation-reference-root-cause` showed HEAD `fc5d50e2324e2b6bb2067976bf1515dab45224fb` (`fix(ci): skip risk labels for fork PRs`, authored/committed by Burak Yigit Kaya <byk@sentry.io> on Sep 9, 2026), preceded by `285a589de` (`fix(docs): derive command references from metadata`) and `92dc1dab2` (`fix(docs): correct agent conversation argument synt…
* 🟡 (16:33) Working diff added `packages/cli/test/commands/agent-conversation/list.test.ts` coverage asserting organization-resolution failures expose canonical command usage `sentry agent-conversation list [<org>]`. * 🟡 (16:33) Working diff updated `packages/cli/test/commands/agent-conversation/view.test.ts` to import `ValidationError` and test 5 malformed targets: `${ORG}/${CONVERSATION_ID}/e…
Date: Sep 9, 2026 * 🟡 (16:29) Working diff updates generated skill documentation in `packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md` so 23 command signatures accurately mark optional positionals: 1. `sentry org view [<org>]`, 2. `sentry project list [<org/project>]`, 3. `sentry project view [<org/project>]`, 4. `sentry issue list [<org/project>]`, 5. `sentry alert issues list [<org/p…
* 🔴 (16:29) User directed agents to always check `package.json` for the latest scripts; commands run from `packages/cli` or via `pnpm --filter sentry run <script>` from the repository root. * 🔴 (16:29) User stated all packages must be placed in `devDependencies`, never `dependencies`, because dependencies are bundled at build time with esbuild and CI enforces this via `pnpm run check:deps`. * �…
Date: Sep 9, 2026 * 🟡 (16:21) Tool diff deleted all 33 lines from `apps/cli-docs/src/fragments/commands/agent-conversation.md`, removing hand-written examples for `sentry agent-conversation list`, explicit organization, `--limit 50 --period 24h`, `-q "has:errors"`, cursor pagination with `-c next`, transcript viewing via `sentry agent-conversation view my-org conv-123`, and `--json`. * 🟡 (16:21…
Date: Sep 9, 2026 * 🔴 (16:18) User stated command hints live exclusively on the `CommandReturn` return value, never on individual yields. * 🟡 (16:18) Tool diff showed `packages/cli/src/lib/command.ts` adding exported `CommandExample` with readonly `description` and `command` strings; `CommandDocumentation` now extends native Stricli docs with optional readonly `examples?: readonly CommandExampl…
Date: Sep 9, 2026 * 🔴 (16:18) User stated agent conversation IDs never contain `/`; `[<org>/]<conversation-id>` therefore permits at most one slash, with the portion before it as the organization and the remainder as the conversation ID. * 🔴 (16:18) User stated flags in `ALWAYS_STRIP` are always stripped, so the command never sees them; `ALWAYS_STRIP` currently contains `LOG_LEVEL_KEY`. * 🔴 (1…
Date: Sep 9, 2026 * 🔴 (16:17) User directive: `buildDeleteCommand()` must always inject `--yes` unless the command already defines it. * 🔴 (16:17) User stated `extractFlags()` always returns one `FlagInfo` per input entry. * 🔴 (16:17) User stated tuple handling in `getPositionalString()` always produces angle-bracket placeholders; required parameters render as `<placeholder>`, optional paramet…
Date: Sep 9, 2026 * 🔴 (16:16) User directive: Always load `repo-setup` before situation skills. Skills live under `.agents/skills/`, generated from canonical `skills/` by `scripts/sync-skills.mjs`. * 🔴 (16:16) User directive: Always check `package.json` for the latest scripts. Run commands from `packages/cli`, or from the repository root via `pnpm --filter sentry run <script>`. * 🔴 (16:16) Use…
Date: Sep 9, 2026 * 🟡 (16:13) Tool output returned 4 Git commit hashes in order: 1. `fc5d50e2324e2b6bb2067976bf1515dab45224fb`, 2. `bd065083c3b82677747b97a6cc7f5cf57532d3bc`, 3. `fc5d50e2324e2b6bb2067976bf1515dab45224fb`, 4. `bd065083c3b82677747b97a6cc7f5cf57532d3bc`; the same 2 hashes repeat twice in alternating order.
Date: Sep 9, 2026 * 🔴 (16:10) User’s working directory is `/home/byk/Code/getsentry/cli-pr-1558`, containing 19 entries: `.craft.yml`, `.git`, `.github/`, `.gitignore`, `.lore.md`, `.nojekyll`, `.npmrc`, `AGENTS.md`, `apps/`, `CHANGELOG.md`, `codemods/`, `docs/`, `LICENSE.md`, `node_modules/`, `package.json`, `packages/`, `pnpm-lock.yaml`, `pnpm-workspace.yaml`, `README.md`