Dashboard › cli › Distillation
5fb0e065-19df-4c8f-b677-a06beaa82917["lore_tm_v1_mLn4-blRrY2kC4OjH7RA21-Sa3Va50HnRXOvGpmwIJg","lore_tm_v1_H6G_QX1lP0oBv-0mT5vOb5qypRH1SZSLEyvCk6OQTEc","lore_tm_v1_G9KVGCJg7Zhm_L4Q1k7wXHYMQGiyd_trHB4KnI4nIgY","lore_tm_v1_OdMx0Rg_e3XHnRb9Pdj3JYIYo97G2MUOgQSFQ2JWbMA","lore_tm_v1_gI4dF_cba8C-4R87-8ReZTxzqvyCpRVGEaTGB6D-ziQ","lore_tm_v1_RtpTrfXFzySTxJnSaN4sX3jP44A3o1jowdp3VxiX3vA","lore_tm_v1_2Ium8Zez1UaCSBpbCnFNgx6DfEghW3sfr3MvGD6vQuc","lore_tm_v1_IproS03UJTd11-bsQO7MyeQqQaseeq0QoF200wOSb3w","lore_tm_v1_aT1T3_ed6NKj8Fej2EP4XpJDnEVnxA_feGmn0O55bmE","lore_tm_v1_cykUM9Be0sdDfQPxjHn-DjovE5Ef4ooWIS14qNQ8vRc","lore_tm_v1_7V8mQbvKbsjYd37W_h-UDBVtYHI_WGPqL52WMNCkxK0"]
HTTP/2.0 404 Not Found with gh: Not Found (HTTP 404); the authenticated token reported scopes gist, read:org, repo, workflow.AGENTS.md define the pipeline as triage β explore β plan β implement β review β ship; worker is a deprecated alias of implement.explore uses OpenAI gpt-5-mini; implement uses Moonshot kimi-k2.7-code; and ship uses xAI Grok grok-build-0.1.New operator chat or Operator guidance: skip triage and must be treated directly as the task..lore.md when present, while target repositories require reading their AGENTS.md / CONTRIBUTING.md first.repo-setup before situation skills. Skills live under .agents/skills/ and are generated from the canonical skills/ tree by scripts/sync-skills.mjs.packages/cli/CONTRIBUTING.md says Sentry CLI follows gh CLI conventions: list commands use optional positional context with smart auto-detection, and view commands use optional positional primary identifiers where possible.sentry org list [--limit N] [--json], sentry project list [org] [--limit N] [--json], and sentry issue list [<org>/<project>] [--json].<org>/<project> for an explicit organization and project; <org>/ for all projects in an organization; <project> to search by project name across accessible organizations; and omission for DSN/config auto-detection.sentry org view [org-slug] [--json] [-w], sentry project view [<org>/<project>] [--json] [-w], sentry issue view <issue-id> [--json] [-w], and sentry event view [<org>/<project>] <event-id> [--json] [-w]; all view commands support -w / --web.packages/cli/CONTRIBUTING.md is exactly: 1. positional arguments <org>/<project> always win; 2. config defaults set via sentry config set; 3. DSN auto-detection from SENTRY_DSN or source code.resolveOrg() / resolveOrgAndProject() from lib/resolve-target.ts; 3. support --json; 4. support -w / --web for view commands; 5. use ContextError for missing context; 6. add E2E tests under test/e2e/.packages/cli/src/lib/binary.ts now defines UpgradeSource with readonly githubRepo, ghcrRepo, and tagPrefix fields.packages/cli/src/lib/binary.ts now defines ordered UPGRADE_SOURCES: 1. { githubRepo: "getsentry/toolkit", ghcrRepo: "getsentry/toolkit", tagPrefix: "cli@" }; 2. { githubRepo: "getsentry/cli", ghcrRepo: "getsentry/cli", tagPrefix: "" }. PRIMARY_UPGRADE_SOURCE is UPGRADE_SOURCES[0].getBinaryDownloadUrl(version, source = PRIMARY_UPGRADE_SOURCE) builds tags as ${source.tagPrefix}${version} and returns https://github.com/${source.githubRepo}/releases/download/${tag}/${getPlatformBinaryName()}.getGitHubReleasesUrl(source = PRIMARY_UPGRADE_SOURCE) returns https://api.github.com/repos/${source.githubRepo}/releases; GITHUB_RELEASES_URL now points to the primary Toolkit source through getGitHubReleasesUrl().resolveUpgradeSource(fetchFn = customFetch, signal?) probes each UPGRADE_SOURCES entry at ${getGitHubReleasesUrl(source)}/latest with getGitHubHeaders() and the supplied abort signal.resolveUpgradeSource(): return the successful probe Response with its UpgradeSource so the caller never repeats the request.resolveUpgradeSource() falls through to the next source only on HTTP 404; every other HTTP failure throws UpgradeError("network_error", "Failed to fetch from GitHub: HTTP <status>"), network failures propagate immediately, and all sources returning 404 throws UpgradeError("network_error", "No CLI upgrade source was found: every source returned HTTP 404").packages/cli/install script provides fire-and-forget Sentry error telemetry through the envelope API, uses the CLIβs public write-only DSN, collects no PII, and supports opt-out with SENTRY_CLI_NO_TELEMETRY=1.report_error() uses set +e, a 2-second curl --max-time 2, discarded output, and background execution.gen_uuid() in packages/cli/install tries /proc/sys/kernel/random/uuid, then lowercase uuidgen, then an awk fallback generating 32 hexadecimal characters.report_error(message, step-name) records tags for os, arch, libc, requested channel, step, and install.version, plus Bash runtime version; die() prints the error, calls report_error(), waits while ignoring telemetry exit status, and exits 1.packages/cli/install traps unexpected set -e / pipefail errors with trap 'die "Unexpected failure at line $LINENO" "trap"' ERR.-h / --help, -v / --version <version>, --no-modify-path, --no-completions, and --no-agent-skills; environment variables are SENTRY_INSTALL_DIR, SENTRY_VERSION, and SENTRY_INIT=1.darwin, Linux as linux, and MINGW/MSYS/CYGWIN as windows; architectures map x86_64 to x64 and aarch64|arm64 to arm64; Windows supports only windows-x64./lib/ld-musl-${musl_arch}.so.1, then searches ldd --version output for musl; detected musl builds add -musl to the binary filename.libstdc++, the installer runs apk add --no-cache libstdc++ libgcc when root; non-root users are instructed to run apk add libstdc++ libgcc, then installation fails through die().packages/cli/install still uses legacy GHCR endpoints for getsentry/cli: token scope repository:getsentry/cli:pull, manifest https://ghcr.io/v2/getsentry/cli/manifests/nightly, and blob https://ghcr.io/v2/getsentry/cli/blobs/${digest}.curl -L for authenticated GHCR blob retrieval because forwarding the Authorization header to Azure Blob Storage returns 404; it extracts the redirect URL and downloads it without the auth header.nightly OCI manifest; 3. extract its version annotation; 4. find the digest for sentry-${os}-${arch}${libc_suffix}${suffix}.gz; 5. obtain the unauthenticated blob redirect URL; 6. download and pipe through gunzip into the temporary binary.packages/cli/install still resolves latest releases from https://api.github.com/repos/getsentry/cli/releases/latest and downloads from https://github.com/getsentry/cli/releases/download/${version}/${filename}.${url}.gz and falls back to the raw binary at $url; the comment reports compressed size as approximately 37 MB versus approximately 99 MB, about 60% smaller.packages/cli/install executes "$tmp_binary" cli setup with --install --method curl --channel nightly|stable plus any selected --no-modify-path, --no-completions, or --no-agent-skills options.SENTRY_INIT=1, the installer accepts XDG_BIN_HOME only if it is POSIX-absolute or a Windows drive-letter absolute path, searches SENTRY_INSTALL_DIR, XDG_BIN_HOME, $HOME/.local/bin, $HOME/bin, and $HOME/.sentry/bin in that order, requires /dev/tty, and executes sentry init </dev/tty.packages/cli/src/lib/binary.ts, packages/cli/test/lib/binary.test.ts, packages/cli/test/lib/ghcr.test.ts, and packages/cli/test/lib/install-script.test.ts.packages/cli/test/lib/binary.test.ts coverage verifies Toolkit-first source ordering; first-source success makes only one Toolkit request; fallback occurs only from Toolkit 404 to legacy CLI; HTTP 401, 403, 429, and 500 do not fall back; network failure does not fall back; and two 404 responses fail with βNo CLI upgrade source was found.βpackages/cli/test/lib/ghcr.test.ts coverage verifies getAnonymousToken(UPGRADE_SOURCES[0]) requests scope repository:getsentry/toolkit:pull and fetchNightlyManifest("token", undefined, UPGRADE_SOURCES[0]) requests /v2/getsentry/toolkit/manifests/nightly.packages/cli/test/lib/install-script.test.ts coverage expects the shell installer to contain UPGRADE_SOURCES=(...) whose whitespace-separated entries exactly equal UPGRADE_SOURCES.map((source) => source.githubRepo).packages/cli/src/lib/upgrade.ts, packages/cli/src/lib/delta-upgrade.ts, packages/cli/src/lib/release-notes.ts, packages/cli/src/lib/binary.ts, and packages/cli/src/lib/ghcr.ts.packages/cli/src/lib/upgrade.ts calls using GITHUB_RELEASES_URL, parameterless getAnonymousToken(), parameterless fetchNightlyManifest(), fetchManifest(), downloadNightlyBlob(), and getBinaryDownloadUrl(version).packages/cli/src/lib/delta-upgrade.ts includes imports of GITHUB_RELEASES_URL and GHCR_REPO, releasesUrl: GITHUB_RELEASES_URL, repo: GHCR_REPO, release listing at ${GITHUB_RELEASES_URL}?per_page=12, and GHCR client operations based on the legacy repository constant.packages/cli/src/lib/ghcr.ts still defines GHCR_REPO = "getsentry/cli" and uses it in anonymous-token, manifest, blob, and tag-list URLs; affected functions include getAnonymousToken(), fetchManifest(), fetchNightlyManifest(), downloadNightlyBlob(), listTags(), and downloadLayerBlob().packages/cli/src/lib/release-notes.ts imports GITHUB_RELEASES_URL and fetches stable changelog releases with ${GITHUB_RELEASES_URL}?per_page=${CHANGELOG_MAX_RELEASES}.packages/cli/src/lib/release-notes.ts retains only 3 user-facing categories: New Features (β¨, ### New Features, or feat: commits), Bug Fixes (π, ### Bug Fixes, or fix: commits), and Performance (β‘, ### Performance, or perf: commits); all other categories are filtered out.