Dashboard › cli › Distillation
3ce80605-98ee-4633-af4a-ba0f02ed4bcb["lore_tm_v1_K7SqwYBctLah7s_3U3SV1dAwm1tKN40KfrDg86tnaCk","lore_tm_v1_GErC7BoH8Zy5yu12MoCW47i4b-T6SqdvlCJE-goBu9w","lore_tm_v1_hjXTOsveH_kiz0ZxD4uPa_YRBWlBPFSDVVgiiAodX68","lore_tm_v1__4PHOSqjfZnkSM3N_jTz8EhRwKKzWhQLFKOWCFuGIg8"]
.lore.md, packages/cli/README.md, packages/cli/src/lib/upgrade.ts, release workflows, and plugin documentation..lore.md states the symbolic-wasm API must remain a general-purpose library base, while CLI-specific orchestration belongs in getsentry/cli..lore.md states symbolic-wasm archives use SelfCell<ByteView<'static>, di::Archive<'static>>, allowing owned object cells to share underlying bytes without reparsing..lore.md requires exporting Rust Object to JavaScript as ObjectFile via #[wasm_bindgen(js_name = "ObjectFile")].Uint8Array results must propagate as JsError and never be silently discarded with .ok()?..lore.md states @sentry/symbolic 13.4.0 uses SourceBundleWriter.writeObject(object, objectName, filter, provider) for source bundling..lore.md states ObjectFile still lacks source enumeration, blocking print-sources; SourceFileDescriptor.contents should be read only when text is required because it copies across the WASM boundary; legacy callers should receive normalized ObjectFile.codeId via obj.codeId ?? null..lore.md records GitHub Dependabot sources for getsentry/cli: /repos/getsentry/cli/security-advisories returned an empty array, while /repos/getsentry/cli/dependabot/alerts was the source of truth with 13 open and 15 fixed alerts as of August 1, 2026..lore.md states Dependabot alerts in getsentry/cli refer either to stale lockfile entries without a source manifest or to transitive dependencies without a direct upgrade path; pnpm.overrides in package.json is the canonical fix for transitive vulnerabilities, while direct dependency upgrades cascade through the lockfile..lore.md distinguishes pnpm audit findings from Dependabot scope; example: @ai-sdk/provider-utils@<=3.0.97 LOW CVE-2026-8769, which requires a package upgrade rather than an override.UPGRADE_SOURCES with getsentry/toolkit first and getsentry/cli second, falling back to getsentry/cli only when the Toolkit request returns a genuine HTTP 404..lore.md documents a docs-regeneration workflow trap: after a force-pushed rebase of a getsentry/cli PR branch, GitHub Actions automatically adds a chore: regenerate docs commit from github-actions[bot] and force-advances the remote branch, so the locally pushed commit is no longer the true PR head.#1254 was pushed at commit 30ad8b075, then automatically advanced to 605e8318d; the bot commit touched 33 skill-doc .md files plus packages/cli/script/bundle.ts.#1239, after the verified bridge CLI release, the migration plan creates immutable history-filtered refs from the release commit for packages/cli/** and apps/cli-docs/**, imports both into a dedicated integration branch from current getsentry/sentry-mcp main, and verifies source commit IDs plus git log --follow and blame before renaming.packages/cli/** and apps/cli-docs/** were chosen over importing the full getsentry/cli tree because CLI documentation must remain at apps/cli-docs and must never be nested under packages/cli.apps/cli-docs, never packages/cli.getsentry/toolkit; all wiring must then be revalidated after the rename.getsentry/cli must remain writable and must not be archived until dual publishing has ended, at least 2 stable releases and roughly 90 days have passed, and legacy usage has been verified finished.packages/cli/README.md:133 cloning https://github.com/getsentry/cli.git, release workflow references to downloads under https://github.com/getsentry/cli/releases/download/{{version}}/, and nightly GHCR references to ghcr.io/getsentry/cli.packages/cli/plugins/README.md:11 command claude plugin marketplace add getsentry/cli, GHCR token scope repository:getsentry/cli:pull, blob URL https://ghcr.io/v2/getsentry/cli/blobs/${digest}, and binary URL https://github.com/getsentry/cli/releases/download/${version}/${filename}.packages/cli/src/lib/db/version-check.ts, totaling 84 lines.packages/cli/src/lib/db/version-check.ts persists version-check state in the metadata table using keys version_check.last_checked, version_check.latest_version, and version_check.last_notified; ALL_KEYS contains those 3 keys in that order.VersionCheckInfo contains lastChecked: number | null, latestVersion: string | null, and lastNotified: number | null; timestamps are Unix milliseconds.getVersionCheckInfo() calls getDatabase() and getMetadata(db, ALL_KEYS), converts stored lastChecked and lastNotified strings with Number(...), and returns null for absent timestamp/version values.KEY_LAST_NOTIFIED is separate from KEY_LAST_CHECKED, allowing cached latest-version information to remain hot while update notifications are rate-limited to once per day.markUpdateNotified() stores String(Date.now()) under version_check.last_notified using setMetadata().clearVersionCheckCache() calls clearMetadata(db, ALL_KEYS), clearing the last-check timestamp, latest version, and last-notified timestamp so a release-channel change triggers a fresh check and cannot show stale version data.setVersionCheckInfo(latestVersion) stores String(Date.now()) under version_check.last_checked and the supplied string under version_check.latest_version.packages/cli/test/lib/version-check.test.ts found 25 matches for getVersionCheckInfo or setVersionCheckInfo; test values include "0.0.0-dev", "0.0.0-alpha", "99.0.0", and "1.0.0".packages/cli/test/lib/version-check.test.ts lines 360–469 of 509.abortPendingVersionCheck tests verify it does not throw when no check is pending and remains safe when called 3 times consecutively.maybeCheckForUpdateInBackground suite uses useTestConfigDir("test-version-bg-"), saves and removes SENTRY_CLI_NO_UPDATE_CHECK in beforeEach, replaces globalThis.fetch with mockFetch returning HTTP 200 and {"tag_name":"v0.0.0-dev"}, then aborts pending work, restores fetch, and restores the environment variable in afterEach.maybeCheckForUpdateInBackground() does not throw; 2. a check can start when getVersionCheckInfo().lastChecked is null; 3. after setVersionCheckInfo("1.0.0"), lastChecked is non-null and latestVersion is "1.0.0"; 4. 5 rapid calls after a recent check are expected to have near-zero probability of initiating another check; 5. an immediate abortPendingVersionCheck() cleans up and allows another check to start.SENTRY_CLI_NO_UPDATE_CHECK=1 and uses a subprocess because the environment variable is evaluated at module load time.