Dashboard › cli › Distillation
ed795f2c-c992-4539-ba25-2d3161d37100["lore_tm_v1_0FWxRZ0HIqkzLGMQ-tq87KGYdWmqx6-cP74g-YxDX6g","lore_tm_v1_8BiTPzZG2T8fVC3bT7wi0IbO2ija71UvGcAszioRFac","lore_tm_v1_bUhyekhFutEqEuZYfceyOKQbDYQCbAC7cwR4rxswE14","lore_tm_v1_XHNgGmy8WhrcfQ0Y_TdKrEdjUVGQgmjN-fn8ke3NtC4","lore_tm_v1_zPe5nuCw_Mt9wD1q5MjOWFeRuoVoH994ZQPT9en2tHU","lore_tm_v1_9UrxozQgPxqTd_mh9juQSy03YlhHq4WlU8V9KsbcKrI","lore_tm_v1_wWv6U4jKKQNajZcF6rgxOPE8ehbv39UbFBfzBfrLoiw","lore_tm_v1_mH2NRkMbQuL3G11hyrRxkNvWzGlcrlZuzf23JPZNNWY","lore_tm_v1_Nb86Pab_5JnfjZoxNzyjy35FVjKaIAPFpyWhX-YmQ1o"]
packages/cli/src/commands/debug-files/upload.ts:663-667 computes scanTargets = collectScanPaths(paths, Boolean(flags["derived-data"])) and throws ContextError("Debug file path(s)", USAGE_HINT, []) when no scan targets remain, so zero explicit paths are only valid when --derived-data supplies a target.maxFileSize gates scanning and a server-rejected file is never read into memory; --no-upload remains auth-free and uses DEFAULT_MAX_DIF_SIZE.packages/cli/src/commands/debug-files/upload.ts resolves wait behavior with resolveWaitMode(flags), derives requireAll from flags["require-all"], sets this.process.exitCode through setExitCode, and builds filters from type, id, no-debug, no-unwind, and no-sources.ast-grep 0.40.5.packages/cli/src/commands/event/send.ts:276-334 permits zero positional files: with files it calls buildFilePayload(file, flags.raw ?? false, dsnComponents), sends each payload using sendEnvelopeRequest(), and emits { eventId, file }; without files it can build and send an inline event from flags.sentry event send validates the DSN via makeDsn() and throws ValidationError(\Invalid DSN: ${dsn}`, "dsn")on failure; in zero-file mode,--rawthrowsValidationError("--raw requires a file argument (raw bytes cannot be built from inline flags)", "raw"), while a missing message throws ConfigError("Provide a message via -m/--message or a JSON event file as a positional argument.", "sentry event send -m 'My message'")`.sentry event send calls buildEventFromFlags(flags), createEventEnvelope(event, dsnComponents), and serializeEnvelope(envelope); envelope creation failure maps to ValidationError(\Failed to create event envelope: ${(err as Error).message}`, "event"), and success emits { eventId: event.event_id ?? "" }`.packages/cli/src/commands/project/create.ts accepts one or more [<org>/]<name>:<platform> pairs, can create several projects in one organization, creates them sequentially to respect rate limits, and emits partial successful results before rethrowing an error.--dry-run pins the prospective teamAutoCreateSlug so preview and real execution agree, but dry-run never actually creates the team.teamAutoCreateSlug searches the entire parsed project batch using parsed.map((p) => slugify(p.name)).find((slug) => slug !== ""), preventing a punctuation-only or non-ASCII first name that slugifies to "" from disabling team auto-creation for all later projects.parseProjectSpecs(rawSpecs) in packages/cli/src/commands/project/create.ts:465-493 throws ContextError("Project specification", USAGE_HINT, []) for zero specs; for one colonless spec it throws a friendlier platform-specific ValidationError(buildPlatformError(rawSpecs[0] ?? ""), "platform").parseProjectSpecs() parses every spec with parsePairedProjectSpec, requires all explicit organization prefixes to agree, and throws ValidationError("Cannot create projects across multiple organizations (...).\n\nAll names must belong to the same org.", "organization") when more than one organization is present.buildProjectCreateOutput(results, requestedCount) preserves the existing object output shape for one requested successful project, while complete or partial batches use a stable array shape.--into in packages/cli/src/commands/issue/merge.ts always designates an issue that participates in the merge as the preferred parent; the handler appends it to positionals through const effectiveArgs = flags.into ? [...args, flags.into] : args, with duplicate forms later collapsed by numeric-ID deduplication in resolveAllIssues().sentry issue merge requires at least 2 effective issue IDs. If fewer are present, it throws a ValidationError reporting the original positional count; one positional gets the hint sentry issue merge CLI-K9 --into CLI-15H, while zero positionals gets the example sentry issue merge CLI-K9 CLI-15H CLI-15N.sentry issue merge --into is only a preferred canonical parent, not a guarantee: after resolveAllIssues(), orderForMerge(), and mergeIssues(), the command warns if Sentry selects a different parent based on event count.minimum represents parser-level cardinality, while customUsage can preserve richer public grammar where a command deliberately accepts zero scanner-level values in order to raise its own typed CLI error.issue merge as parser-level required-at-least-one and event send as zero-positional-valid under that rule.packages/cli/src/commands/trace/view.ts:508, packages/cli/src/commands/log/view.ts:530, packages/cli/src/commands/trace/logs.ts:180, packages/cli/src/commands/log/list.ts:780, packages/cli/src/commands/debug-files/upload.ts:663, packages/cli/src/commands/span/view.ts:398, packages/cli/src/commands/debug-files/find.ts:170, packages/cli/src/commands/span/list.ts:611, packages/cli/src/commands/issue/merge.ts:296, packages/cli/src/commands/dashboard/widget/edit.ts:322, packages/cli/src/commands/dashboard/widget/delete.ts:108, packages/cli/src/commands/schema.ts:333, packages/cli/src/commands/dashboard/widget/add.ts:204, packages/cli/src/commands/dashboard/view.ts:238, packages/cli/src/commands/replay/view.ts:377, packages/cli/src/commands/dashboard/revisions.ts:148, packages/cli/src/commands/dashboard/restore.ts:97, packages/cli/src/commands/dashboard/list.ts:408, packages/cli/src/commands/event/view.ts:1101, packages/cli/src/commands/dashboard/create.ts:166, packages/cli/src/commands/docs/query.ts:48, packages/cli/src/commands/docs/list.ts:62, packages/cli/src/commands/build/upload.ts:270, and packages/cli/src/commands/project/create.ts:655.