Dashboard › cli › Distillation
2c9bbcdf-ccf2-491b-a4c3-bd0da934bb99["lore_tm_v1_DOegeCM34-LXnk_BCEkNfAUOxmY8v6nrSPwYjpwuvEE","lore_tm_v1_6cOaYLLiUzIIYofCiw16zyTcFUCJ4tgBbJbPgpe_kyE","lore_tm_v1_3QwtnPUyy1zQQSc41IJiWWRx3Cj-Wiwo3qE1Tn5qrd4","lore_tm_v1_4KlG5otDZ2zH7lLLEB9wNByb5SlOssRAAeJYg71E8a8","lore_tm_v1_lPG8pCrIEB9cDycOEF3MwxNLcpYt925VzULhDdPU3ec","lore_tm_v1_j-ueuWeACzbnuN6xgqivmKYSETI_TtBj_A8elpwsEk4","lore_tm_v1_uLx4jc42cg8PZNnAUIkELc9YFnMYl6bpOlMBZYleff8","lore_tm_v1_jBu1NovvfRDY4yafZeHd_StdWm63cxVw_WNW1fkwmHo"]
packages/cli/test/commands/agent-conversation/view.test.ts tests explicit slash-separated targets by calling the command with ${ORG}/${CONVERSATION_ID}, expecting resolveOrg() to receive { org: ORG }, getConversationSpans() to receive (ORG, CONVERSATION_ID), and JSON output to contain the expected conversationId.packages/cli/test/commands/agent-conversation/view.test.ts tests conversation-ID-only resolution: resolveOrg() receives { org: undefined }, a mocked result of { org: "auto-org" } is used, and getConversationSpans() is called with "auto-org" and CONVERSATION_ID.${ORG}/${CONVERSATION_ID}/extra; 2. ${ORG}//${CONVERSATION_ID}; 3. ${ORG}/${CONVERSATION_ID}/; 4. /${CONVERSATION_ID}; 5. ${ORG}/. Each must throw ValidationError with field "conversation-id" and a message containing sentry agent-conversation view [<org>/]<conversation-id>; neither resolveOrgSpy nor getConversationSpansSpy may be called.ContextError and that its message contains "Conversation ID".resolveOrg() returning null causes ContextError whose message contains "organization".conversationId = CONVERSATION_ID, org = ORG, spanCount = 2, and a defined array-valued turns.CONVERSATION_ID and ORG.packages/cli/test/commands/agent-conversation/view.test.ts includes a test beginning at line 352 that verifies the API response’s truncated: true value is propagated.--json and --fields from per-command flag documentation, because global options are documented in the global footer.app.ts’s buildRouteMap, reads hand-written custom content from top-level fragment files, and removes ${DOCS_DIR}/cli recursively with force: true before regeneration.export ${entry.name}=${entry.example}.sentry agent-conversation list; 2. sentry agent-conversation list my-org; 3. sentry agent-conversation list --limit 50 --period 24h; 4. sentry agent-conversation list -q "has:errors"; 5. sentry agent-conversation list my-org -c next.sentry agent-conversation view my-org conv-123 and sentry agent-conversation view my-org conv-123 --json—which differs from the implemented [<org>/]<conversation-id> slash-separated syntax.packages/cli/src/lib/resolve-target.ts contains 9 organization/target-resolution exports found by search: resolveOrgFromDsn() at line 264, resolveOrgAndProject() at line 1298, resolveOrgProjectOrGuide() at line 1653, resolveOrg() at line 1673, resolveOrgsForListing() at line 1877, resolveOrgProjectTarget() at line 1951, resolveOrgProjectFromArg() at line 2086, resolveOrgOptionalProjectTarget() at line 2385, and resolveOrgOptionalProjectFromArg() at line 2424.resolveOrgProjectOrGuide() in packages/cli/src/lib/resolve-target.ts calls resolveOrgAndProject(options) and falls back to guideOrgProjectFailure(options) when resolution returns nullish.resolveOrg() resolves an organization in this exact priority order: 1. positional org; 2. SENTRY_ORG / SENTRY_PROJECT environment variables via resolveFromEnvVars(); 3. .sentryclirc via loadSentryCliRc(cwd); 4. config defaults via getDefaultOrganization(); 5. DSN auto-detection via resolveOrgFromDsn(cwd).resolveOrg() path calls setOrgProjectContext([org], []). Environment-variable, .sentryclirc, and DSN paths preserve detectedFrom; .sentryclirc formats it as ${CONFIG_FILENAME} (${rcConfig.sources.org}).resolveOrg() normalizes a bare numeric organization ID through normalizeNumericOrg(result.org) because some API endpoints, including dashboards, reject numeric organization IDs. The DSN lookup is wrapped in a silent try/catch; failure returns null, with a grandfathered lint exception referencing #1531.resolveProjectBySlug() in packages/cli/src/lib/resolve-target.ts supports display-name recovery: when originalSlug is supplied, it skips slug-based API lookups and calls listOrganizations() before triageProjectNotFound(). An organization match throws ResolutionError explaining that the value is an organization rather than a project and suggests sentry project list ${projectSlug}/ plus ${projectSlug}/<project>.resolveProjectBySlug() verifies access with withAuthGuard(() => getProject(outcome.org, outcome.project)); successful recovery returns telemetry context containing org, project, and projectData. If verification fails, the fallback guidance distinguishes all-digit IDs ("No project with this ID was found — check the ID or use the project slug instead") from ordinary slugs ("Check that you have access to a project with this slug").packages/cli/src/commands/init.ts calls validateResourceId(parsed.org, "organization slug") at lines 237 and 241 and validateResourceId(parsed.project, "project name") at line 238.validateResourceId() is exported from packages/cli/src/lib/input-validation.ts at line 149. Search results show uses in packages/cli/src/lib/arg-parsing.ts for "project slug", "organization slug", and "issue identifier", including validation of slash-stripped issue fragments with input.replace(/\//g, "") or prefix.replace(/\//g, "").packages/cli/src/lib/api/infrastructure.ts exports apiRequestToRegion<T>() at line 489 and apiRequestToRegionNoContent() at line 646.