Dashboard › cli › Distillation
cbc23918-f1e0-4750-a6f8-49e82c0e61db["lore_tm_v1_RR3zYvm4HE7crXbmeNHFPCne5HQKE-CF7jfFTw9ASh8","lore_tm_v1_c_FXCUV4YUdAPEO3zNlAg__mp8D98NNSFHTbHwgADWI"]
sentry api: preserve rawApiRequest() status text; empty textual non-2xx bodies must produce an HTTP status/request fallback; JSON mode must expose {status, statusText, body} so empty success and error responses remain distinguishable; binary Uint8Array successes bypass formatters and remain raw; binary errors emit only status/content-type/byte-count summaries and never bytes or JSON coercion; prompts must never block scripted runs or interleave with stdout JSON.TRDIFF10 patch format has a 32-byte header comprising magic, controlLen, diffLen, and newSize, with integer fields encoded as i64 little-endian.bspatch.ts fully decompresses the control block via zstdDecompressSync because it needs random access, while diff and extra blocks stream through createZstdStreamReader using Node Transform β Web ReadableStream β BufferedStreamReader.applyPatch() to always compute SHA-256 inline and return it, with no separate verification step.loadOldBinary() copies the old binary to a temporary file using COPYFILE_FICLONE for a copy-on-write reflink, falling back to a regular copy, then reads it into memory.cleanupPatchResources() to run every cleanup step regardless of earlier failures.writer.on('error') to prevent ERR_UNHANDLED_ERROR on ENOSPC or EIO.src/commands/issue/list.ts defines LIFETIME_FIELDS = new Set(['count','userCount','firstSeen','lastSeen']); these fields can be stripped by collapse=lifetime on the issue-list endpoint.buildListApiOptions(json, fields) sets collapseLifetime only when json && fields !== undefined && fields.length > 0 && !fields.some(f => LIFETIME_FIELDS.has(f)); human output never collapses lifetime.buildIssueListCollapse() to always start with ['filtered','unhandled'], then conditionally append 'lifetime' and 'stats'.ISSUE_DETAIL_COLLAPSE safely includes 'lifetime' because the detail endpoint preserves top-level fields regardless.IssueViewOutputSchema in src/types/sentry.ts extends SentryIssueSchema with event, org, replayIds, and trace, which are added by jsonTransformIssueView; view.ts wires it through schema: IssueViewOutputSchema.count, userCount, firstSeen, and lastSeen are always present for issue view; they are only potentially absent from issue list when collapse=lifetime is active.generateProjectStructure() groups/route directories to always use the βββ prefix because standalone entries always follow groups.help.ts, added manually before sorting; the final standalone uses βββ, other standalones use βββ; groups and standalones are each alphabetically sorted, and output is a fenced code block containing the cli/ tree./repos/getsentry/cli/security-advisories returns an empty array, while /repos/getsentry/cli/dependabot/alerts is the source of truth and showed exactly 13 open and 15 fixed alerts as of 2026-08-01.pnpm.overrides in package.json is the canonical remediation for transitive vulnerabilities, while direct dependency upgrades cascade through the lockfile.pnpm audit can report CVEs outside Dependabotβs surface, including @ai-sdk/provider-utils@<=3.0.97 LOW CVE-2026-8769; that case requires a package upgrade rather than an override.SENTRY_ORG/SENTRY_PROJECT environment variables, 3. SQLite defaults, 4. DSN auto-detection, 5. directory-name inference.SENTRY_PROJECT supports an org/project combined value, in which case SENTRY_ORG is ignored.defaults table into the metadata key-value store using defaults.org, defaults.project, defaults.telemetry, and defaults.url; getters and setters live in src/lib/db/defaults.ts.metadata key-value store for non-trivial caches.--org and --project flags are injected by mergeGlobalFlags() in command.ts, while applyOrgProjectFlags() writes them to SENTRY_ORG and SENTRY_PROJECT before the auth guard; no short aliases are used because -p conflicts.@sentry/api SDK types to be wrapped under src/lib/api/*.ts using as unknown as SentryX casts and never leaked into commands; unwrapResult and unwrapPaginatedResult must remain CLI-owned.apiRequestToRegion automatically sets JSON Content-Type, while rawApiRequest preserves strings.node:sqlite on Node 22.15+ and node-sqlite3-wasm as the fallback on Node 18.0β22.14, because node:sqlite is unavailable before Node 22.15.node-sqlite3-wasm has incompatible bind-parameter handling versus node:sqliteβarray versus spreadβrequiring an adapter in sqlite.ts.undefined (defensively map it to null), and use a manual transaction wrapper.pnpm + Node + Vitest.HEAD as c6030fbf4d0c190f037c86d832edb6680d3e54ab, pinned base as ec83887a16f780f32fba4b7d710bad262dba3a22, and repeated head as c6030fbf4d0c190f037c86d832edb6680d3e54ab; the emitted SHA-256 digest was f22a52690c55c6c7b472b61efe14c6af97354840d042e8f596fa31a2cd681c61.packages/cli/src/commands/cli/upgrade.ts, packages/cli/src/lib/binary.ts, packages/cli/src/lib/delta-upgrade.ts, packages/cli/src/lib/ghcr.ts, packages/cli/src/lib/release-notes.ts, packages/cli/src/lib/upgrade.ts, packages/cli/src/lib/version-check.ts, packages/cli/test/commands/cli.test.ts, packages/cli/test/commands/cli/upgrade.test.ts, packages/cli/test/lib/binary.test.ts, packages/cli/test/lib/delta-upgrade.mocked.test.ts, packages/cli/test/lib/delta-upgrade.test.ts, packages/cli/test/lib/ghcr.test.ts, packages/cli/test/lib/release-notes.test.ts, packages/cli/test/lib/upgrade.test.ts, and packages/cli/test/lib/version-check.test.ts.