Dashboard › cli › Session 150pXWjpIjQX
150pXWjpIjQXE1ZLNThe parent server restarted. Resume and complete your independent read-only correctness/adversarial merge-gate review exactly as previously assigned. The immutable BASE remains 979bfd3695def4fbfedccd94c70290ac560cf95b, HEAD remains 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07, expected HEAD tree remains fbdec6061d94040d4d59014ee91e4194ce6a6583, and stable patch-id remains 73790fe46a066d331399607b05ac65b43722acd5. Do not inspect or mutate the worktree. Return one substantive report ending exactly MERGE or DO-NOT-MERGE.
Skill "repo-setup" not found. Available skills: ast-grep, customize-opencode, jj-create-pr, jj-guide, jj-update-pr, jj-workflow
commit commit
979bfd3695def4fbfedccd94c70290ac560cf95b
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07 fbdec6061d94040d4d59014ee91e4194ce6a6583 4cbf4e842f8a3a8f8c266bd2f85f41892b8079af Burak Yigit Kaya <byk@sentry.io> 2026-09-14T12:06:45+00:00 style(cli): format introspection tests 979bfd3695def4fbfedccd94c70290ac560cf95b 35c20ec9e8f55658acc40d8d428f7f042f920796 8fa60afde4465d5cdef27845e3168988fbad0e35 chore: regenerate docs
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/skills/sentry-cli/references/repl...
(no output)
73790fe46a066d331399607b05ac65b43722acd5 0000000000000000000000000000000000000000
...output truncated... Full output saved to: /home/byk/.local/share/opencode/tool-output/tool_09ffc19a40017xp7K3fdsDXVsl index 4b23ecf57..060d8c2f2 100644 --- a/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/monitor.md +++ b/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/monitor.md @@ -25,7 +25,7 @@ Wrap a command with cron monitor check-ins - `--failure-issue-threshold <value> - Consecutive failures before an issue is created (requires --schedule)` - `--recovery-threshold <value> - Consecutive successes before an issue is resolved (requires --schedule)` -### `sentry monitor list <org/project>` +### `sentry monitor list [<org/project>]` List cron monitors diff --git a/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/org.md b/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/org.md index 3667e8dba..223348073 100644 --- a/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/org.md +++ ...
<path>/home/byk/.local/share/opencode/tool-output/tool_09ffc19a40017xp7K3fdsDXVsl</path> <type>file</type> <content> 1: diff --git a/apps/cli-docs/src/fragments/commands/agent-conversation.md b/apps/cli-docs/src/fragments/commands/agent-conversation.md 2: index ca9b2b2e3..e69de29bb 100644 3: --- a/apps/cli-docs/src/fragments/commands/agent-conversation.md 4: +++ b/apps/cli-docs/src/fragments/commands/agent-conversation.md 5: @@ -1,33 +0,0 @@ 6: - 7: - 8: - 9: -## Examples 10: - 11: -### List conversations 12: - 13: -```bash 14: -# List recent agent conversations 15: -sentry agent-conversation list 16: - 17: -# Explicit organization 18: -sentry agent-conversation list my-org 19: - 20: -# Show more, last 24 hours 21: -sentry agent-conversation list --limit 50 --period 24h 22: - 23: -# Filter conversations 24: -sentry agent-conversation list -q "has:errors" 25: - 26: -# Paginate through results 27: -sentry agent-conversation list my-org -c next 28: -``` 29: - 30: -### View a conversation ...
<path>/home/byk/.local/share/opencode/tool-output/tool_09ffc19a40017xp7K3fdsDXVsl</path>
<type>file</type>
<content>
1345: const help = generateHelpTextForAllCommands(app).find(
1346: ([route]) => route === "sentry project create"
1347: @@ -209,24 +227,14 @@ describe("project create parser contract", () => {
1348: ])("rejects the removed %s flag", async (flag) => {
1349: const captured = { stdout: "", stderr: "" };
1350: const mockContext = buildMockContext(captured);
1351: - const stderrWrite = vi
1352: - .spyOn(process.stderr, "write")
1353: - .mockImplementation(() => true);
1354: -
1355: - try {
1356: - await run(
1357: - app,
1358: - ["project", "create", "my-app:node", flag, "javascript"],
1359: - mockContext
1360: - );
1361: -
1362: - const errorOutput = stderrWrite.mock.calls
1363: - .map(([data]) => String(data))
1364: - .join("");
1365: - expect(errorOutput).toContain(flag);
1366: ...
# Jared (Outpost agent) Autonomous GitHub coding agent. Work in `/workspace/repo`. ## Model tiers The primary model is chosen per event (see `src/agents/models.ts`): heavy for code-producing situations, cheaper for lightweight ones. | Role | Subagent | Model | | --- | --- | --- | | Triage / plan / review (heavy) | (primary Jared) | Claude Opus 4.8 | | Triage / plan / review (light) | (primary Jared) | xAI Grok 4.3 | | Explore | `explore` | OpenAI gpt-5-mini | | Implement | `implement` | Moonshot kimi-k2.7-code | | Ship (commit/push/PR) | `ship` | xAI Grok (`grok-build-0.1`) | Pipeline: triage → explore → plan → implement → review → ship. (`worker` is a deprecated alias of `implement`.) Operators also talk to Jared directly from the Outpost dashboard. Those turns (`New operator chat` / `Operator guidance:`) skip triage — treat the request as the task and answer in the conversation. Long-term project knowledge for *this* Outpost repo lives in `.lore.md` when present. ...
fatal: path 'CONTRIBUTING.md' does not exist in '829d2fc752d50ccc9bec62ce0b8e42a521ed9f07'
# AGENTS.md Guidelines for AI agents working in this codebase. ## Project Overview **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`. ### Goals - **Zero-config experience** - Auto-detect project context from DSNs in source code and env files - **AI-powered debugging** - Integrate Seer AI for root cause analysis and fix plans - **Developer-friendly** - Follow `gh` CLI conventions for intuitive UX - **Agent-friendly** - JSON output and predictable behavior for AI coding agents - **Fast** - Native binaries via Node SEA (fossilize), SQLite caching for API responses ### Key Features - **DSN Auto-Detection** - Scans `.env` files and source code (JS, Python, Go, Java, Ruby, PHP) to find Sentry DSNs - **Project Root Detection** - Walks up from CWD to find project boundaries ...
{
"name": "sentry",
"version": "0.46.0-dev.0",
"description": "Sentry CLI - A command-line interface for using Sentry built by robots and humans for robots and humans",
"repository": {
"type": "git",
"url": "git+https://github.com/getsentry/cli.git"
},
"main": "./dist/index.cjs",
"type": "module",
"types": "./dist/index.d.cts",
"exports": {
".": {
"import": {
"types": "./dist/index.d.mts",
"default": "./dist/index.mjs"
},
"require": {
"types": "./dist/index.d.cts",
"default": "./dist/index.cjs"
}
}
},
"bin": {
"sentry": "./dist/bin.cjs"
},
"files": [
"dist/bin.cjs",
"dist/index.cjs",
"dist/index.mjs",
"dist/index.d.cts",
"dist/index.d.mts",
"dist/ink-app.js",
"dist/node-sqlite3-wasm.wasm",
"dist/assets/spleen-8x16.bin",
"dist/vendor/symbolic_bg.wasm",
"LICENSE.md",
"THIRD_PARTY_LICENSES.md",
"README.md"
],
"license": ...
---
description: Ultracite Rules - AI-Ready Formatter and Linter
globs: "**/*.{ts,tsx,js,jsx,json,jsonc,html,vue,svelte,astro,css,yaml,yml,graphql,gql,md,mdx,grit}"
alwaysApply: false
---
# Ultracite Code Standards
This project uses **Ultracite**, a zero-config Biome preset that enforces strict code quality standards through automated formatting and linting.
## Quick Reference
- **Format code**: `npx ultracite fix`
- **Check for issues**: `npx ultracite check`
- **Diagnose setup**: `npx ultracite doctor`
Biome (the underlying engine) provides extremely fast Rust-based linting and formatting. Most issues are automatically fixable.
---
## Core Principles
Write code that is **accessible, performant, type-safe, and maintainable**. Focus on clarity and explicit intent over brevity. ...
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 // ...
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/agent-conversation/view.ts:75: customUsage: [USAGE], 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/project/create.ts:609: customUsage: ["[<org>/]<name>:<platform>..."], 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/command.ts:107: * `customUsage` is present, its first line is the canonical signature suffix; 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/command.ts:466: const primaryUsage = docs.customUsage?.[0]; 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/test/lib/command.test.ts:186: customUsage: ["<name>:<kind>..."],
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.
16 *
17 * 3. ...
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 and examples from CLI metadata or env registry
12 * 2. Hand-written guides and tips from docs/src/fragments/
13 *
14 * The generated output is gitignored. Fragment files are the committed
15 * source of truth for content that cannot live in command definitions.
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 * ...
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 } from "marked";
25 import { ...
1 /**
2 * Shared building blocks for org-scoped list commands.
3 *
4 * Provides reusable Stricli parameter definitions (target positional, common
5 * flags, aliases) and a `buildOrgListCommand` factory for commands whose
6 * entire `func` body is handled by `dispatchOrgScopedList`.
7 *
8 * Level A — shared constants (used by all four list commands):
9 * LIST_TARGET_POSITIONAL, LIST_JSON_FLAG, LIST_CURSOR_FLAG,
10 * buildListLimitFlag, LIST_BASE_ALIASES
11 *
12 * Level B — full command builder (team / repo only):
13 * buildOrgListCommand
14 */
15
16 import { createRequire } from "node:module";
17 import type { Aliases, Command, CommandContext } from "@stricli/core";
18 import type { SentryContext } from "../context.js";
19
20 const _require = createRequire(import.meta.url);
21
22 import { parseOrgProjectArg } from "./arg-parsing.js";
23 import {
24 ...
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 } from "../src/lib/introspect.js";
20 import { ...
1 ---
2 name: sentry-cli-agent-conversation
3 version: 0.46.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 specific fields):
26
27 | Field | Type | Description |
...
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 { getPositionalString } from "../../lib/introspect.js";
21 import {
22 buildListCommand,
23 LIST_DEFAULT_LIMIT,
24 LIST_MAX_LIMIT,
25 LIST_MIN_LIMIT,
...
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, validationError } 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: boolean;
27 readonly fresh: ...
1 /**
2 * Integration tests for top-level flag handling by Stricli's patched route
3 * scanner and application runner.
4 *
5 * The `@stricli/core` patch (see
6 * `packages/cli/patches/@stricli%2Fcore@1.2.8.patch`) teaches `buildRouteScanner`
7 * to accept a fixed allow-list of Sentry global flags (`--verbose`, `--json`,
8 * `--org`, `--project`, `--log-level`, `--fields`, and the `-v` alias) at any
9 * route depth, forwarding them to the leaf command instead of failing route
10 * resolution. It also recognizes `--version` at any depth (printing the version
11 * from `runApplication`) and exposes a `documentation.renderHelp` hook that the
12 * app uses to render `--help --json` as structured JSON. Together these replace
13 * the old `argv-glue`/`argv-hoist` preprocessors. ...
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/bin.ts:55: process.exitCode = 1;
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/cli.ts:136: * Whether `process.exitCode` is Stricli's UnknownCommand code.
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/cli.ts:143: process.exitCode === unknownCode ||
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/cli.ts:144: process.exitCode === (unknownCode + 256) % 256
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/cli.ts:185: process.exitCode = 0;
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/cli.ts:193: process.exitCode = 0;
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/cli.ts:199: process.exitCode = 0;
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/cli.ts:463: const exitCode = await recoverWithAutoLogin(err, () => next(argv), {
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/cli.ts:466: if (exitCode !== undefined) ...
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/issues/create.ts-83- " sentry alert issues create my-org/my-app --name 'High Priority' \\\n" +
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/issues/create.ts-84- ' --condition \'{"type":"new_high_priority_issue","comparison":true,"conditionResult":true}\' \\\n' +
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/issues/create.ts-85- ' --action \'{"type":"email","data":{},"config":{"targetType":"user","targetIdentifier":"56789"}}\' \\\n' +
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/issues/create.ts-86- " --frequency 30 --dry-run",
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/issues/create.ts-87- },
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/issues/create.ts-88- output: ...
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/metrics/list.ts-72-} from "../list-utils.js";
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/metrics/list.ts-73-import { metricAlertStatusLabel } from "./status.js";
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/metrics/list.ts-74-
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/metrics/list.ts-75-/** Command key for pagination cursor storage */
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/metrics/list.ts-76-export const PAGINATION_KEY = "alert-metrics-list";
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/metrics/list.ts-77-
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/alert/metrics/list.ts-78-const USAGE_HINT = "sentry alert metrics list ...
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/cli/completion.ts-29- "When no shell is given, it is detected from the $SHELL environment variable.\n\n" +
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/cli/completion.ts-30- "Examples:\n" +
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/cli/completion.ts-31- " sentry cli completion zsh > ~/.local/share/zsh/site-functions/_sentry\n" +
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/cli/completion.ts-32- ' eval "$(sentry cli completion bash)"',
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/cli/completion.ts-33- },
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/cli/completion.ts-34- output: {
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/cli/completion.ts-35- human: (script: string) => ...
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-94- " sentry release deploy 1.0.0 production --time 120\n" +
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-95- " sentry release deploy 1.0.0 production --dry-run",
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-96- },
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-97- output: {
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-98- human: formatDeployCreated,
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-99- },
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-100- parameters: {
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-101- positional: ...
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts:154: async *func(
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-155- this: SentryContext,
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-156- flags: {
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-157- readonly url?: string;
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-158- readonly started?: string;
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-159- readonly finished?: string;
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-160- readonly time?: number;
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/release/deploy.ts-161- readonly "dry-run": ...
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/explore.ts-648- "Metrics (auto mode — resolves type/unit automatically):\n" +
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/explore.ts-649- " sentry explore my-org/ -m llm.token_usage --dataset metrics\n" +
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/explore.ts-650- " sentry explore my-org/seer -F gen_ai.request.model -m llm.token_usage --dataset metrics --period 7d\n" +
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/explore.ts-651- " sentry explore my-org/ -m cache.hit_rate --agg avg --dataset metrics",
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/explore.ts-652- },
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/explore.ts-653- output: {
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/explore.ts-654- human: ...
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/init.ts:323: placeholder: "directory",
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/init.ts-324- brief: "Project directory (default: current directory)",
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/init.ts-325- parse: String,
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/init.ts-326- optional: true,
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/init.ts-327- },
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/init.ts-328- ],
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/init.ts-329- },
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/init.ts-330- flags: {
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/init.ts-331- yes: {
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/init.ts-332- ...
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/monitor/list.ts-14-
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/monitor/list.ts-15-import { listMonitors, listMonitorsPaginated } from "../../lib/api-client.js";
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/monitor/list.ts-16-import { escapeMarkdownCell } from "../../lib/formatters/markdown.js";
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/monitor/list.ts-17-import { type Column, formatTable } from "../../lib/formatters/table.js";
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/monitor/list.ts-18-import {
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/monitor/list.ts:19: buildOrgListCommand,
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/monitor/list.ts-20- type OrgListCommandDocs,
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/monitor/list.ts-21-} from ...
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 resolveCommandPath,
30 } ...
fatal: path 'apps/cli-docs/AGENTS.md' does not exist in '829d2fc752d50ccc9bec62ce0b8e42a521ed9f07'
diff --git a/packages/cli/test/script/generate-skill-markdown.test.ts b/packages/cli/test/script/generate-skill-markdown.test.ts
index 374ee8d5b..d82c5f5c0 100644
--- a/packages/cli/test/script/generate-skill-markdown.test.ts
+++ b/packages/cli/test/script/generate-skill-markdown.test.ts
@@ -4,8 +4,16 @@ import { readFile } from "node:fs/promises";
import { describe, expect, test } from "vitest";
import {
extractCommandPathFromHeading,
+ formatCommandArguments,
+ formatCommandExamples,
matchExampleToCommand,
} from "../../script/generate-skill-markdown.js";
+import { listCommand } from "../../src/commands/agent-conversation/list.js";
+import { viewCommand } from "../../src/commands/agent-conversation/view.js";
+import { sendCommand } from "../../src/commands/event/send.js";
+import { mergeCommand } from "../../src/commands/issue/merge.js";
+import { createCommand } from "../../src/commands/project/create.js";
+import { buildCommandInfo } from "../../src/lib/introspect.js";
...
1 /**
2 * Conversation List Command Tests
3 *
4 * Tests for the `sentry agent-conversation list` command func() body, covering:
5 * - Organization resolution from positional arg
6 * - Organization resolution via resolveOrg fallback
7 * - Error when org cannot be resolved
8 * - Yielding CommandOutput with conversation data
9 * - Query filter passthrough
10 * - Time params passthrough
11 * - Pagination hints with -q flag preserved
12 * - Empty result handling
13 *
14 * Uses spyOn mocking to avoid real HTTP calls or database access.
15 */
16
17 import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
18 import { listCommand } from "../../../src/commands/agent-conversation/list.js";
19
20 vi.mock("../../../src/lib/api-client.js", async (importOriginal) => {
21 const actual =
22 await importOriginal<typeof import("../../../src/lib/api-client.js")>();
...
1 /**
2 * Conversation View Command Tests
3 *
4 * Tests for the `sentry agent-conversation view` command func() body, covering:
5 * - Resolving org + conversationId from a single `<org>/<conversation-id>` arg
6 * - Resolving org via resolveOrg when only the conversation-id is given
7 * - Throwing error when no args provided
8 * - Throwing ContextError when org cannot be resolved
9 * - Yielding CommandOutput with transcript result
10 * - Setting truncated flag from API response
11 *
12 * Uses spyOn mocking to avoid real HTTP calls or database access.
13 */
14
15 import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
16 import { viewCommand } from "../../../src/commands/agent-conversation/view.js";
17
18 vi.mock("../../../src/lib/api-client.js", async (importOriginal) => {
19 const actual =
20 await importOriginal<typeof ...
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/errors.ts:540:export function validationError(
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/errors.ts-541- headline: string,
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/errors.ts-542- examples: string[],
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/errors.ts-543- field?: string,
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/errors.ts-544- note?: string
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/errors.ts-545-): ValidationError {
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/errors.ts-546- return new ValidationError(
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/errors.ts-547- buildValidationMessage(headline, examples, note),
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/errors.ts-548- field
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/errors.ts-549- ...
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 unprocessedInputs instead of erroring. ...
1 /**
2 * Tests for help-as-positional-arg error recovery in buildCommand.
3 *
4 * When a command throws a CliError and a positional arg was `"help"`,
5 * the buildCommand wrapper recovers by showing the command's help
6 * instead of the confusing error.
7 *
8 * This only fires as error recovery — if a command successfully resolves
9 * a legitimate value like a project named "help", the recovery never runs.
10 *
11 * Tests run commands through Stricli's `run()` with `help` as a positional
12 * and verify help output is shown when resolution fails.
13 */
14
15 import { generateHelpTextForAllCommands, run } from "@stricli/core";
16 import { afterEach, beforeEach, describe, expect, test } from "vitest";
17 import { app } from "../../src/app.js";
18 import type { SentryContext } from "../../src/context.js";
19 import { mockFetch, useTestConfigDir } from "../helpers.js";
20
...
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/introspect.ts:48: positional?: PositionalParams; 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/introspect.ts:72:/** A single positional parameter with optional brief and placeholder */ 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/introspect.ts:79:/** Extracted metadata for a single positional argument */ 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/introspect.ts:114: positional: string; 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/introspect.ts:115: /** Structured positional parameter metadata for documentation generation */ 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/introspect.ts:116: positionals: PositionalInfo[]; 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/introspect.ts:197: * Build a positional parameter placeholder string from Stricli positional params. ...
(no output)
1 /**
2 * Property-Based Tests for Route Tree Introspection
3 *
4 * Uses fast-check to verify invariants that should hold for any valid
5 * route tree structure.
6 */
7
8 import {
9 array,
10 boolean,
11 constantFrom,
12 assert as fcAssert,
13 oneof,
14 property,
15 record,
16 string,
17 tuple,
18 } from "fast-check";
19 import { describe, expect, test } from "vitest";
20 import type {
21 Command,
22 FlagDef,
23 RouteMap,
24 RouteMapEntry,
25 } from "../../src/lib/introspect.js";
26 import {
27 extractAllRoutes,
28 extractFlags,
29 extractPositionals,
30 getPositionalString,
31 resolveCommandPath,
32 } from "../../src/lib/introspect.js";
33 import { DEFAULT_NUM_RUNS } from "../model-based/helpers.js";
34
35 // ---------------------------------------------------------------------------
36 // ...
fatal: path 'packages/cli/src/generated/skill-content.ts' exists on disk, but not in '829d2fc752d50ccc9bec62ce0b8e42a521ed9f07'
58d73c8dd53a68e1eb5d34e464c3a46dd202d187 979bfd3695def4fbfedccd94c70290ac560cf95b fix(docs): correct agent conversation argument syntax 1c6f69a1f1363015cf48b5f5db5a83f0601ede09 58d73c8dd53a68e1eb5d34e464c3a46dd202d187 fix(docs): derive command references from metadata f2da083c9388dd9c513290a83fb6da04d8a52da7 1c6f69a1f1363015cf48b5f5db5a83f0601ede09 fix(docs): preserve public positional semantics 4cbf4e842f8a3a8f8c266bd2f85f41892b8079af f2da083c9388dd9c513290a83fb6da04d8a52da7 fix(docs): preserve argument table syntax 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07 4cbf4e842f8a3a8f8c266bd2f85f41892b8079af style(cli): format introspection tests
829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/agent-conversation/list.ts:117: examples: [ 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/commands/agent-conversation/view.ts:80: examples: [ 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/errors.ts:520: examples: string[], 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/errors.ts:542: examples: string[], 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/introspect.ts:118: examples: string[]; 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/introspect.ts:298: examples: string[] = [] 829d2fc752d50ccc9bec62ce0b8e42a521ed9f07:packages/cli/src/lib/introspect.ts:318: examples: cmd.__examples?.length
...output truncated...
Full output saved to: /home/byk/.local/share/opencode/tool-output/tool_0a00965780019ALHLhcNCEEv8U
397
398 expect(calledArgs).toBe("PROJECT-123");
399 expect(setContextSpy).toHaveBeenCalledWith("args", {
400 values: ["PROJECT-123"],
401 count: 1,
402 });
403 });
404
405 test("preserves this context for command functions", async () => {
406 let capturedStdout = false;
407
408 const command = buildCommand<Record<string, never>, [], TestContext>({
409 auth: false,
410 docs: { brief: "Test" },
411 parameters: {},
412 // biome-ignore lint/correctness/useYield: test command — no output to yield
413 async *func(this: TestContext) {
414 // Verify 'this' is correctly bound to context
415 capturedStdout = typeof this.process.stdout.write === "function";
416 },
417 });
418
419 const routeMap = ...
<path>/home/byk/.local/share/opencode/tool-output/tool_0a00965780019ALHLhcNCEEv8U</path>
<type>file</type>
<content>
1: 1 /**
2: 2 * Command Builder Tests
3: 3 *
4: 4 * Tests for the buildCommand wrapper that adds automatic flag telemetry.
5: 5 * Uses Stricli's run() to invoke commands end-to-end, verifying the wrapper
6: 6 * captures flags/args and calls the original function.
7: 7 */
8: 8
9: 9 import { setTimeout as sleep } from "node:timers/promises";
10: 10 // biome-ignore lint/performance/noNamespaceImport: needed for spyOn mocking
11: 11 import * as Sentry from "@sentry/node-core/light";
12: 12 import {
13: 13 buildApplication,
14: 14 type CommandContext,
15: 15 run,
16: 16 text_en,
17: 17 } from "@stricli/core";
18: 18 import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
19: 19 import {
20: 20 applyLoggingFlags,
21: 21 applyOrgProjectFlags,
22: ...
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 extractPositionals,
20 extractRouteGroupCommands,
21 getPositionalString,
22 isCommand,
23 isRouteMap,
24 resolveCommandPath,
25 } from "../../src/lib/introspect.js";
26
27 // ---------------------------------------------------------------------------
28 // Test fixtures
29 // ---------------------------------------------------------------------------
30
31 function makeCommand(overrides: Partial<Command> = {}): Command {
...
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 "./commands/dart-symbol-map/index.js";
19 import { ...
(no output)
1 /**
2 * Markdown parsing helpers shared by the skill generator and its tests.
3 */
4
5 import type { PositionalInfo } from "../src/lib/introspect.js";
6
7 /** Matches a generated command heading and stops before positional usage. */
8 const COMMAND_HEADING_RE =
9 /^`sentry\s+([^<[`\s]+(?:\s+[^<[`\s]+)*)(?:\s*(?:<|\[)[^`]*)?`$/;
10
11 /** Extract the literal command path from a generated command heading. */
12 export function extractCommandPathFromHeading(
13 heading: string
14 ): string | undefined {
15 const match = COMMAND_HEADING_RE.exec(heading);
16 return match?.[1] ? `sentry ${match[1]}` : undefined;
17 }
18
19 /** Find the command whose literal path appears in a loose example block. */
20 export function matchExampleToCommand(
21 code: string,
22 commandPaths: readonly string[],
23 groupFallback: string,
24 defaultCommandPath?: string
25 ): string ...
1 /**
2 * Shared building blocks for mutation (create/delete) commands.
3 *
4 * Provides reusable Stricli parameter definitions, safety utilities, and a
5 * `buildDeleteCommand` wrapper — paralleling `list-command.ts` for list commands.
6 *
7 * Level A — shared constants (used by create and delete commands):
8 * DRY_RUN_FLAG, YES_FLAG, FORCE_FLAG,
9 * DESTRUCTIVE_FLAGS, DESTRUCTIVE_ALIASES, DRY_RUN_ALIASES
10 *
11 * Level B — shared utilities:
12 * isConfirmationBypassed, guardNonInteractive, confirmByTyping,
13 * requireExplicitTarget
14 *
15 * Level C — delete command builder:
16 * buildDeleteCommand
17 */
18
19 import { isatty } from "node:tty";
20 import type { Command, CommandContext } from "@stricli/core";
21 import type { ParsedOrgProject } from "./arg-parsing.js";
22 import { buildCommand, type CommandDocumentation } from "./command.js";
23 import { ...
1 /**
2 * sentry project create
3 *
4 * Create one or more Sentry projects.
5 * Supports `[<org>/]<name>:<platform>` pairs for one or more projects.
6 *
7 * ## Flow
8 *
9 * 1. Parse one or more name:platform pairs and extract any org prefix
10 * 2. Resolve org → positional prefix > env vars > config defaults > DSN auto-detection
11 * (all names must share one org)
12 * 3. For each name: resolve team + create project (fetch DSN, build URL)
13 * 4. Display results (one block per project)
14 *
15 * Every project is a `name:platform` pair (e.g. `sentry project create
16 * web:javascript api:python-django`). The platform must always be attached
17 * with `:` — there is no space-separated form, with or without an explicit
18 * org. Project names cannot contain whitespace.
19 */
20
21 import type { SentryContext } from "../../context.js";
22 import {
23 type ...
58d73c8dd fix(docs): correct agent conversation argument syntax .../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(-) 1c6f69a1f fix(docs): derive command references from metadata .../src/fragments/commands/agent-conversation.md | 36 ----------- .../plugins/sentry-cli/skills/sentry-cli/SKILL.md | 42 ++++++------- .../skills/sentry-cli/references/alert.md | 6 +- .../sentry-cli/skills/sentry-cli/references/cli.md | 4 +- .../skills/sentry-cli/references/explore.md | 2 +- .../skills/sentry-cli/references/feedback.md | 2 +- .../skills/sentry-cli/references/init.md ...
commit f2da083c9388dd9c513290a83fb6da04d8a52da7
Author: Burak Yigit Kaya <byk@sentry.io>
Date: Thu Sep 10 12:55:54 2026 +0000
fix(docs): preserve public positional semantics
diff --git a/packages/cli/src/commands/agent-conversation/view.ts b/packages/cli/src/commands/agent-conversation/view.ts
index 1b1b61d3a..bc2a39961 100644
--- a/packages/cli/src/commands/agent-conversation/view.ts
+++ b/packages/cli/src/commands/agent-conversation/view.ts
@@ -104,6 +104,7 @@ export const viewCommand = buildCommand({
brief:
"[<org>/]<conversation-id> - Org (optional) and conversation ID",
parse: String,
+ optional: true,
},
],
},
@@ -112,13 +113,20 @@ export const viewCommand = buildCommand({
},
aliases: FRESH_ALIASES,
},
- async *func(this: SentryContext, flags: ViewFlags, target: string) {
+ async *func(this: SentryContext, flags: ViewFlags, target?: string) {
applyFreshFlag(flags);
const { cwd } = ...
Date: Sep 14, 2026 * 🔴 (12:51) User stated the parent server restarted. * 🔴 [requested-review] (12:51) User asked to resume and complete the previously assigned independent, read-only correctness/adversarial merge-gate review. * 🔴 (12:51) User specified immutable BASE `979bfd3695def4fbfedccd94c70290ac560cf95b`, HEAD `829d2fc752d50ccc9bec62ce0b8e42a521ed9f07`, expected HEAD tree `fbdec6061d9404…