Dashboard › cli › Distillation
5c01a123-6bc1-48d0-ae33-c7c88fc3a92c["lore_tm_v1_BD7dUk_iNeXTqzIKah8BDhbRpwTxuOhx5LZYg4OqWws","lore_tm_v1_--dn_SwIdqQJbz2e5IF1KxJQFvI2b55KT7dLtPvJPWU","lore_tm_v1_rmuykSQtr70cz3_Z9nIiZYAl68K5QfMVao2EIyN33j8","lore_tm_v1_NRzXNxpDdFg5Cea9h48FzTCXRdXdipfaG3-aI7CZCNM","lore_tm_v1_WjcAxwCn8fuHO0ZzlsWItOafWa08DMjK0Ehuuqcv_BQ","lore_tm_v1_g5ZFu2Wg9Vtdp1J_L3LV5IglqiPgdfETp771-K2-fi4","lore_tm_v1_LiI9uXsjTmjTUJokI1R1rCW7TCfGiyCbC6p3tkFvH8k","lore_tm_v1_OZ5X_9EwZTRkySBYMFucjINSa8sHVK2J6zB81QCeWEs","lore_tm_v1_ByZDV7eqIgB4nClDWvu4YBd6KMPwldZWpv4e5Jud730","lore_tm_v1_-P_3qDrGovAyKbtIpCqvl11mEDNHTtyKmXlXAYcaeEA","lore_tm_v1_3S976CSTz3bMLC40qd5MVIBUuhjqAkIoR8rcgDWn0_o","lore_tm_v1_3DU0wFklxpxM_nzZAikbsKXBUd6J0GjTZ32ALFpVJLw","lore_tm_v1_TyW1XnTBMiOmNNBRurzFFKFFJRRPUKYHDyO0Ep3q3rQ","lore_tm_v1_3ZNKptkHzEDU3XEUNNTfO4q4IjsqagGaKnTYYoIVXUs","lore_tm_v1_LcA7kLdxlmLOrisgshFBOOVVdXmDhxKs0LPTGig6BYc","lore_tm_v1_h5XLTqlPJvJ709lDkd-gxl4gFqDqhC_goVL8clkMSw0","lore_tm_v1_eh1AHeDpZxXqcLPW58ReTsxVpUcjBQLlbBJJaBjZhQk","lore_tm_v1_lJRorNGFjobLMyXEyRM1W9V9UfLxI-hyJKlKHrK7IZI","lore_tm_v1_SpSs8idG7zqVLmK8CJok9gNONv3G07fbQOcpWhS2zws","lore_tm_v1_IPoranKCxp1IVNtrDdBtdDxgeVJLFw1AzzQbWVTfPOI","lore_tm_v1_eo6vmvY_toYS2Ci_7RjjyHkXvAKxnfUHapazTSX9vUo","lore_tm_v1_sQG4gZk9FH_KX1yyML5_TCDdRAiNQYfeT6Tq959O7JU","lore_tm_v1_FNhlk7SHuHkS6fgqPzU0bD5fwHGD82DhqU55CadshMw","lore_tm_v1_eNfQB2aiNUjH6Tpr7YQmzKjk4GJ5gY70iC322BLbqlo","lore_tm_v1_mHVrqYG7mOAwIzvDz90FlhD5g9s5SlCGN2jwafC9zaY","lore_tm_v1_oce9oQ1AZFc7P8SIK-Pmw8LSUTK5u3gG_sRlpQdukWo","lore_tm_v1_TVW4Pj_dwHOdftnfZsjGKoYo6i4DMkXwhxMIZAotTWI","lore_tm_v1_cu2aey1wLuhHejU3n2drjHk1UAGfc2hfYpYhBI_DXjk","lore_tm_v1_sQN2Fa44p_tdpG5Y0ILD2ADv5-Rq3mBZbmL_J0pJYdw","lore_tm_v1_wYXfP_Gmzde-DHz4vo1bZYgNI8__CQ57mO9Sx5dP5S0","lore_tm_v1_IFyl8jbH0KiKiXoG8DzrybEOX4KrlsG-QOiOAJLXD1s","lore_tm_v1_k8F2FsVDr-YNgl-5y5HYu1EfY3DltGpg54NtfiQKP1g","lore_tm_v1_LEZHIsXNRamMV-B6siYup76LUXnH4pU4fxxIcSwixBI","lore_tm_v1_K6Ns5kqoqGtGuu9bjhPg9OrHly0oauOF-HAnS2Tto40","lore_tm_v1_jZ1XOIDIFvKEpM54AdTUOIoolVVWgoYRd7scVZx9LLo","lore_tm_v1_tDjsw5-QlS2HNARlwXbaC5WErDFosi3iCC1wwuqa7-Y","lore_tm_v1_BghZCqT1eZUF3zPXzzhRia8xrC1i6PtvgLD0duUE0EM","lore_tm_v1_fD4GYKZg39yPuX7zSzN0UkOwx6wW2XRs38a4hnaM9e8","lore_tm_v1_8j5tIytLADDqgyv_5KXWDUC6B1VGhC094BRNmw49nMk","lore_tm_v1_rFDxbc1a-rhLV2vuDnr1LYTxUI7yWXbcISgWjLFCsQE","lore_tm_v1_vyJEL49AbnyouCmvAVt6jYoVicbQtvWd7M2ez9sKqDk","lore_tm_v1_CVana0muiZCSu71_kRrTHibKFo7NYGF1wxm9oJGPaj4","lore_tm_v1_z07MZVNfnpmoLjB9wiRY-MQ2Qn7ZK3Xziq87hdCjSk4","lore_tm_v1_SQjIcNFklwwyG8IU-qpxCU2eAyUKEcFZWnnfyCA6RWw","lore_tm_v1_mF1L9cV57Ll5Q8gk6cu938xrZV3E3WVJz3yzoDsgE6A","lore_tm_v1_R3e7s7fE9L78HX0KuKPcniwKCxgS_voORtCNaWorSMU","lore_tm_v1_EEj2c2FAWGke3H55ARr86iHzMhVHRoqZu2mdfrPoIic","lore_tm_v1_tpG6bpuXrlqYwn29m1Gc-3RTdm45Gb9dkqDmz_A_QTY","lore_tm_v1_gvEHpUqRIDp7vAZ3RqcQ2fTAPPRzLlNugwEkdbDa0G4","lore_tm_v1_35ZMkMAZIQIw-K8lt15MOJqEqdW9goysw3FUKZ5MkM4","lore_tm_v1_LgJ6z_8R-_7TysOdSXCdOBw_jqREy6mHqy-Lh_IEsIg","lore_tm_v1_OWAMz5AKyVF9wHrOKGbalqJhIkawxKLCfeaRAPfolv0","lore_tm_v1_mAucbGaoQb3Qz0msJFXzlyhwUUAFehLPIi4x6iR6DzE","lore_tm_v1_f7y_Jzgfdn1l93iV_bhcyXqTvGQZQeo7SYGq3HySA7Q","lore_tm_v1_5wF3fhxRCtXC1ZbBxw8aAUUQOnytX_SP0-z8JDOTPmQ","lore_tm_v1_pp5wR_syjRptpusvzy4gH8fj3yu_0mcWRS2HISzgFq4","lore_tm_v1_UM6CT9vlidkHOMc5LSrYCX_W2ntYVFAJGWPuFGUig-o","lore_tm_v1_8B9Ywhw7ltWgMOWvXULAhweWk7CELwWk242Vm-U4mnY","lore_tm_v1_zwrbYziA00fupX0X45vd3ZsrruZrCFoWjQmg0bPwuJQ","lore_tm_v1_aUHMY5fkt5eDHH_AbfNPwZfaB-wS8BAevvcUYMq7n5E","lore_tm_v1_Eli8mGT2IQCINEgnB4uvAXMdSVWDO26j-a-ao3EUJTk","lore_tm_v1_SEwZBkpRIXesctw6mbfgq0X1wbwBv_fHk29bgaep9XY","lore_tm_v1_4ZaEknFpitUuEX60Gr3ig-_ZXDhK1oi11M0NeQZcktY","lore_tm_v1_yn55n_PVh7ZTHp44XnkiilDP3YMASJMzSPsMdPGt1Bo","lore_tm_v1_hIu1ivrh0T1gJD4BtiYd3xosIOft7z9sCbrOdnKmoYY","lore_tm_v1_m_dC5wzaUnCCtv691JezG1vnpkq3JL1oZzTfINitENQ","lore_tm_v1_GLlWH9s2yO2uloBMLakBVUOu19xHsZE64VpWCojQzIo","lore_tm_v1_OuTFWQ2vRvfN1tG9Ceh3LHx2Zn3eYyL25PqNW35px_U","lore_tm_v1_zQTYj31dV_6Id_X0po2CylBuvAo6YdcYz3pHxUl1MEg","lore_tm_v1_XNfPnUrXPScHK3lXPa8IDAsxfueUyCj7TC9311aD1wQ","lore_tm_v1_7L639XGZdctN6fmjLULMcQTAAI10-3bAtpSM56Je2Mc","lore_tm_v1_YYQpeuq1JocMyzWzJdtSfYB2DlJWKURaZDf2sk27SSo","lore_tm_v1_gdslIZrbKQpD-zZd3XOHOHgkGxJax6PGjZxJZAJRDpQ","lore_tm_v1_LZjFZ5HoHVJgpTQuj-XRsUGFEuGKp6jH_uNDKgPCS74"]
/home/byk/Code/getsentry/cli-pr-1558.fix/agent-conversation-reference-root-cause.bd065083c3b82677747b97a6cc7f5cf57532d3bcfc5d50e2324e2b6bb2067976bf1515dab45224fb03c5772e78b393b3979c44754709d7f401bb37a71e5679b34c50a9cc8334c2d0BLOCKED.PASS/FAIL/CONCERN/MUST-FIX, each with exact file:line evidence, impact, concrete fix, and deterministic regression; or explicit PASS statements with exact evidence and residual risks/testing gaps; or BLOCKED with exact tool/error.MERGE or DO-NOT-MERGE.apps/cli-docs/src/content/docs/commands/agent-conversation.md has the correct view heading sentry agent-conversation view [<org>/]<conversation-id>, but its argument table labels the positional <org/conversation-id> while the description says [<org>/]<conversation-id> - Org (optional) and conversation ID./home/byk/.local/share/opencode/tool-output/tool_0873b2396001J1r0zeXS3jx0bY..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.fc5d50e2324e2b6bb2067976bf1515dab45224fb, bd065083c3b82677747b97a6cc7f5cf57532d3bc, fc5d50e2324e2b6bb2067976bf1515dab45224fb, bd065083c3b82677747b97a6cc7f5cf57532d3bc, i.e. the same head/base pair repeated twice.repo-setup before situation skills..agents/skills/, generated from canonical skills/ by scripts/sync-skills.mjs.package.json for current scripts.packages/cli, or from repository root as pnpm --filter sentry run <script>.devDependencies, never dependencies, because esbuild bundles runtime dependencies and CI checks this with pnpm run check:deps.pnpm add -D <package>.node:*; never reintroduce Bun.*, bun:test, or bun CLI commands.execFileSync with argument arrays over string-based execSync where user-controlled values are involved.useTestConfigDir() from test/helpers.ts; never delete/capture/manage process.env.SENTRY_CONFIG_DIR manually at module scope or in hooks.buildCommand from ../../lib/command.js, never directly from @stricli/core.buildRouteMap from ../../lib/route-map.js; generated aliases are list → ls, view → show, delete → remove/rm, and create → new, and must not be duplicated manually.new CommandOutput(data) and may return { hint }.CommandReturn, never on yielded values.json flag, write directly with stdout.write(), or branch on flags.json.--web may return without yielding.--fields is always generated/injected, even if the command owns json.--json never calls human formatters.ALWAYS_STRIP keys are never exposed to the command; currently it contains LOG_LEVEL_KEY.CommandDocumentation.examples holds ordered structured examples.customUsage entry is the canonical public signature suffix; later entries can represent equivalent forms.__examples and __primaryUsage because built Stricli commands do not expose docs.customUsage.value.split(",") or flatMap.<placeholder>, optional [<placeholder>], unnamed tuple fallback arg${index}.<placeholder...>, unnamed <args...>.extractFlags() returns exactly one FlagInfo per input flag entry.resolveCommandPath(routeMap, []) always returns null./.[<org>/]<conversation-id>, allowing zero or one slash only.:. Space-separated name/platform syntax is invalid.sentry project create [<org>/]<name>:<platform>....--dry-run preview never actually creates the team.-c next, -c prev, and -c first; "last" silently aliases "next".paginationHint(), not hand-built navParts.buildOrgListCommand, then dispatchOrgScopedList, then manual buildListCommand.buildListCommand() always injects --fresh unless command-defined.per_page > API_MAX_PER_PAGE (100).--limit > 100, use perPage = Math.min(flags.limit, API_MAX_PER_PAGE), continue until enough results or no nextCursor, and bound loops with MAX_PAGINATION_PAGES. References: listIssuesAllPages, trace/list.ts, span/list.ts, dashboard/list.ts.buildDeleteCommand().--yes unless already defined; normally also injects --force, --dry-run, and free aliases -y, -f, -n.noForceFlag, noDryRunFlag, and noNonInteractiveGuard selectively disable behavior.confirmByTyping() and isConfirmationBypassed().DRY_RUN_FLAG and DRY_RUN_ALIASES.src/lib/formatters/<domain>.ts; extract helpers when command files approach 400 lines.mdKvTable(), colorTag(), escapeMarkdownCell(), and renderMarkdown(); do not place raw chalk/muted() in output strings.CliError; use EXIT.*. ValidationError = 21, ContextError = 22, ResolutionError = 23.validationError() callers should supply a field to avoid collapsed Sentry fingerprints.fuzzyMatch() with at most 5 matches generally; route introspection currently uses MAX_SUGGESTIONS = 3.src/; rethrow, log, or log a suppressed fallback. Command loggers use logger.withTag("command-name").@sentry/api over redundant Valibot schemas in src/types/sentry.ts.validateHexId(value, label) handles 32-character hex IDs with UUID-dash stripping; validateSpanId() handles 16-character span IDs; validateTraceId() wraps validateHexId(). All lowercase output and throw ValidationError."date", not "time"; export sort types from API modules, e.g. SpanSortValue from api/traces.ts..github/workflows/pr-risk.ymlapps/cli-docs/src/fragments/commands/agent-conversation.mdpackages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.mdpackages/cli/plugins/sentry-cli/skills/sentry-cli/references/{agent-conversation,alert,cli,explore,feedback,init,issue,monitor,org,project,release,replay,repo,team,trace,trial}.mdpackages/cli/script/check-fragments.ts, generate-command-docs.ts, generate-skill-markdown.ts, generate-skill.tspackages/cli/src/commands/agent-conversation/list.ts, view.ts, packages/cli/src/lib/command.ts, introspect.ts, list-command.ts, mutate-command.tspackages/cli/test/commands/agent-conversation/list.test.ts, view.test.ts, packages/cli/test/lib/command.test.ts, introspect.property.test.ts, introspect.test.ts, packages/cli/test/script/generate-skill-markdown.test.tsfc5d50e2324e2b6bb2067976bf1515dab45224fb: fix(ci): skip risk labels for fork PRs, Burak Yigit Kaya <byk@sentry.io>, Sep 9, 2026.285a589de: fix(docs): derive command references from metadata.92dc1dab2: fix(docs): correct agent conversation argument syntax..github/workflows/pr-risk.yml:
apply-label changed from "true" to ${{ github.event.pull_request.head.repo.full_name == github.repository }}, preventing label application on fork PRs.pull_request events opened, synchronize, reopened, ready_for_review; skips drafts; permissions are contents: read, pull-requests: write, issues: write; concurrency is pr-risk-${{ github.event.pull_request.number }} with cancellation.risk-pr-result.json and uploads artifact risk-pr-result.getsentry/pr-risk-action@v0 is documented as reading PR metadata/diffs through GitHub APIs rather than checking out/executing PR code. It scores low/medium/high and synchronizes one risk label when labeling is enabled.apply_pr_risk_label() validates low/medium/high, upserts selected label, removes other same-prefix labels, and adds selected label. Labeling errors are recorded and re-raised after output/summary generation.packages/cli/src/lib/command.ts:
CommandExample { description, command }.CommandDocumentation extends Stricli docs with readonly examples.prepareNativeDocs(): strips extended examples before Stricli and appends them to native fullDescription under Examples: as ${command} # ${description}.attachDocumentationMetadata(): stores first custom usage as __primaryUsage and structured examples as __examples.prepareNativeDocs() then enrichDocsWithSchema(), keeping JSON schema help last.LOG_LEVEL_KEY, verbose, org, project. Injected globals are stripped; LOG_LEVEL_KEY is always stripped even if command-defined.json only if not command-owned and always receive generated fields.cleanRawFlags() strips all configured keys and parses string-valued fields through parseFieldsList().buildFieldsFlag() lists schema field names when extractable.enrichDocsWithSchema() appends formatSchemaForHelp() using fullDescription ?? brief.ClearScreen outside plain/JSON modes and renders only CommandOutput values through configured output renderers.maybeRecoverWithHelp() before handleOutputError().__jsonSchema for introspection and __rawFunc for internal dispatch without rerunning telemetry/auth/trust/output wrappers.__rawFunc has exactly three usages: storage at command.ts:903, access at packages/cli/src/commands/auth/default.ts:74, and missing-metadata error at line 77.packages/cli/src/lib/introspect.ts:
Command now supports __examples.getPositionalString() renders tuple required values as <placeholder>, optional values as [<placeholder>], tuple fallback names as arg0, arg1, etc.; arrays as <placeholder...> or <args...>.extractPositionals() reports tuple optionality and arrays as optional variadics.buildCommandInfo() prefers __primaryUsage, then inferred positionals; prefers canonical __examples, converting each to # description\ncommand, then falls back to legacy external examples.sentry.resolveCommandPath() returns null for empty/non-navigable paths and unresolved results with up to 3 fuzzy suggestions.@stricli/core@1.2.8 at node_modules/.pnpm/@stricli+core@1.2.8_patch_hash=892258f886d48063b409e0ac6141260023c396d1ed4f915231701f6a34edffcc/node_modules/@stricli/core/dist/index.js.generateCommandHelpLines() uses each customUsage entry when supplied, but built commands do not expose docs.customUsage; retaining __primaryUsage is therefore necessary.arg1) while custom introspection uses zero-based (arg0).<placeholder>...; custom introspection displays <placeholder...>.[<name>].packages/cli/patches/@stricli%2Fcore@1.2.8.patch supports recognized top-level flags at unresolved route depths, forwards their values, supports --flag=value, recognizes --version at any depth, adds application-owned documentation.renderHelp(), carries settings through withDefaults(), and removes -H as alias for --helpAll.packages/cli/src/lib/list-command.ts:
CommandDocumentation; OrgListCommandDocs is now an alias.fresh and cursor flags/aliases according to documented override rules.applyFreshFlag() automatically.args[0]; if it matches a singular-route subcommand, warns Tip: "<name>" is a subcommand. Running: sentry <route> <name> and returns undefined as the target.packages/cli/src/lib/mutate-command.ts:
CommandDocumentation rather than a narrow local type.packages/cli/test/lib/mutate-command.test.ts has only six search hits related to this area: comment/import plus DESTRUCTIVE_FLAGS assertions at lines 45–48; no newly listed direct regression for all injection combinations.packages/cli/src/commands/agent-conversation/list.ts defines reusable optional tuple POSITIONAL named org.USAGE_HINT derives through getPositionalString(POSITIONAL) and now yields sentry agent-conversation list [<org>].ContextError uses this canonical hint.sentry agent-conversation listsentry agent-conversation list my-orgsentry agent-conversation list --limit 50 --period 24hsentry agent-conversation list -q "has:errors"sentry agent-conversation list my-org -c nextpackages/cli/src/commands/agent-conversation/view.ts uses USAGE = "[<org>/]<conversation-id>", canonical hint sentry agent-conversation view [<org>/]<conversation-id>, and customUsage: [USAGE].parseConversationTarget():
ValidationError, field conversation-id, headline Conversation target must contain at most one '/'.ValidationError, field conversation-id, headline Conversation target must include both an organization and conversation ID when using '/'.sentry agent-conversation view conv-123sentry agent-conversation view my-org/conv-123sentry agent-conversation view my-org/conv-123 --jsonapps/cli-docs/src/fragments/commands/agent-conversation.md; canonical examples now come from metadata.check-fragments.ts skips subcommand coverage for commands with nonempty metadata examples.src/generated/skill-content.ts with export const SKILL_FILES: [string, string][] = [];\n before dynamic application import.configuration.md, and subcommand coverage; help is skipped and strict mode promotes warnings.generate-command-docs.ts now appends shared formatted metadata examples and renders positional table entries as <placeholder> or [<placeholder>].generate-skill-markdown.ts exports formatCommandExamples(), returning empty output for no examples or one bash fence with blank lines between examples.generate-skill.ts reuses that formatter.packages/cli/script/paths.ts, relative to packages/cli.apps/cli-docs/src/content/docs/commands/; generated skills under packages/cli/plugins/sentry-cli/skills/sentry-cli/ are committed.agent-conversation.md is 80 lines and contains metadata-derived list/view signatures and examples.0.45.0-dev.0.SKILL.md corrected 23 signatures:
sentry org view [<org>]sentry project list [<org/project>]sentry project view [<org/project>]sentry issue list [<org/project>]sentry alert issues list [<org/project>]sentry alert issues create [<target>]sentry alert metrics list [<target>]sentry cli completion [<shell>]sentry cli upgrade [<version>]sentry agent-conversation list [<org>]sentry agent-conversation view [<org>/]<conversation-id>sentry replay list [<org/project>]sentry release list [<org/project>]sentry release deploy <org/version> <environment> [<name>]sentry repo list [<org/project>]sentry team list [<org/project>]sentry explore [<target>]sentry feedback list [<org/project>]sentry monitor list [<org/project>]sentry trace list [<org/project>]sentry trial list [<org>]sentry trial start <name> [<org>]sentry init [<target>] [<directory>]sentry agent-conversation list [<org>].${ORG}/${CONVERSATION_ID}/extra${ORG}//${CONVERSATION_ID}${ORG}/${CONVERSATION_ID}//${CONVERSATION_ID}${ORG}/resolveOrg()/getConversationSpans(), with ValidationError, field conversation-id, and canonical usage in its message.command.test.ts verifies structured examples survive as __examples.__primaryUsage precedence.sentry project create [<org>/]<name>:<platform>... and rejects stale quoted/space-separated forms.packages/cli/src/lib/errors.ts:518-565 contains buildValidationMessage(), validationError(), and ValidationError.ValidationError uses EXIT.VALIDATION, sets name, and retains field.packages/cli/src/lib/help.ts:667-689 formats human flags.help.ts:694-721 formats single-command human help.help.ts:726-753 formats group help.help.ts:764-792 formats full custom human help; JSON uses a separate path.renderJsonHelp() activates only under --json, introspects full/specific routes, filters fields, serializes with formatJson(), and appends a newline.packages/cli/package.json: package sentry, version 0.45.0-dev.0, Node >=20.0, development runtime Node >=22.15, pnpm 10.11.0.generate:docs includes banner, parser, command docs, skill, and docs sections.test:unit runs generation first, then Vitest with coverage.project/create.ts uses custom usage [<org>/]<name>:<platform>..., batch name:platform targets, shared-organization enforcement, team/dry-run flags, and five canonical examples. Auto-team slug selection finds the first nonempty slug across parsed names.ContextError usages; agent-specific sites were list line 173 and view lines 120/126.No files found, but its searched path/pattern was not recorded.getsentry/pr-risk-action@v0, generated artifacts/skills, introspection/help behavior, project-create custom usage, and installed Stricli implementation.__primaryUsage.listCommand.loader() usage in tests.mutate-command.test.ts coverage around DESTRUCTIVE_FLAGS.MERGE/DO-NOT-MERGE terminator.-H.MERGE or DO-NOT-MERGE.