Dashboard › cli › Distillation
38af9520-136c-4304-a56e-64782b14eaa9["lore_tm_v1__eSm_xzHq97LzJGy2nOvf8Baa6ip7-spoGfOzHj9jB4","lore_tm_v1_N76HIQSQ2Bvbk0Z6KOrsYXx7E2rMJyYkFI8SIsdvKCM","lore_tm_v1_EKxllCaCvUPMvM7xqhNebMLUIqn8irOVITmKoIOyogE","lore_tm_v1_dGGmRz_tcsUvY3ZyvzFWHPiG1qcOB--ttXsWfW6xtcs","lore_tm_v1_cO_ErwgaYXZ4BWpgV1Ufj-bXfn9-Fe8INGhF1hmmEQo"]
/; sentry agent-conversation view therefore accepts [<org>/]<conversation-id> with at most one slash, interpreting text before the slash as the organization and the remainder as the conversation ID, while a slashless value is entirely the conversation ID and triggers organization auto-detection.field must always be passed when constructing a validation error because unfielded validation errors collapse into one Sentry fingerprint.packages/cli/src/commands/agent-conversation/list.ts now defines reusable POSITIONAL metadata for optional org and derives USAGE_HINT as sentry ${COMMAND_NAME} ${getPositionalString(POSITIONAL)}; unresolved organization errors use that generated usage hint instead of hard-coded sentry agent-conversation list <org>.agent-conversation list documentation moved examples from fullDescription into canonical docs.examples, ordered as: 1. sentry agent-conversation list — list recent agent conversations; 2. sentry agent-conversation list my-org — explicit organization; 3. sentry agent-conversation list --limit 50 --period 24h — show more for the last 24 hours; 4. sentry agent-conversation list -q "has:errors" — filter conversations; 5. sentry agent-conversation list my-org -c next — paginate through results. Its description now states that the organization is auto-detected when omitted.packages/cli/src/commands/agent-conversation/view.ts defines USAGE = "[<org>/]<conversation-id>", derives USAGE_HINT as sentry agent-conversation view [<org>/]<conversation-id>, and exposes the syntax through docs.customUsage: [USAGE].parseConversationTarget() in packages/cli/src/commands/agent-conversation/view.ts now rejects multiple slashes with validationError("Conversation target must contain at most one '/'.", [USAGE_HINT], "conversation-id") and rejects empty organization or conversation-ID segments with validationError("Conversation target must include both an organization and conversation ID when using '/'.", [USAGE_HINT], "conversation-id"); these malformed-target failures changed from ContextError to fielded ValidationError.agent-conversation view canonical examples are ordered as: 1. sentry agent-conversation view conv-123 — view the full transcript with organization auto-detected; 2. sentry agent-conversation view my-org/conv-123 — explicit organization; 3. sentry agent-conversation view my-org/conv-123 --json — JSON output.packages/cli/test/commands/agent-conversation/view.test.ts adds table-driven rejection coverage for 5 malformed targets: ${ORG}/${CONVERSATION_ID}/extra, ${ORG}//${CONVERSATION_ID}, ${ORG}/${CONVERSATION_ID}/, /${CONVERSATION_ID}, and ${ORG}/. Each must throw ValidationError with field: "conversation-id" and a message containing sentry agent-conversation view [<org>/]<conversation-id>, before either resolveOrg() or getConversationSpans() is called.buildValidationMessage(headline, examples, note?) in packages/cli/src/lib/errors.ts formats the headline, an optional blank-line-separated Try: section whose entries are indented by two spaces, and an optional blank-line-separated Note: ${note} section.validationError(headline, examples, field?, note?) in packages/cli/src/lib/errors.ts wraps buildValidationMessage() and returns new ValidationError(message, field); ValidationError stores optional field, sets name = "ValidationError", and uses EXIT.VALIDATION.Error: Conversation target must contain at most one '/'., followed by Try: and sentry agent-conversation view [<org>/]<conversation-id>, and exited with EXIT=21; .env.local not found. Continuing without it. appeared 4 times before the error.