From 6e3dc367d9cd5d3d82b82df4a82eabfa20e1abf7 Mon Sep 17 00:00:00 2001 From: "sentry-junior[bot]" <264270552+sentry-junior[bot]@users.noreply.github.com> Date: Mon, 9 Nov 2026 23:15:05 +0000 Subject: [PATCH] ref(cli): Bump @sentry/api to 1.59.0 and use dsn-lookup, user details and trace item operations Bump @sentry/api from 1.55.0 to 1.59.0. Three CLI calls move from apiRequestToRegion to the generated operations: - DSN lookup uses resolveOrganizationDsn. The self-hosted /projects/?query=dsn: fallback stays. - getCurrentUser reads GET /users/me/ with retrieveUserDetails. On a 403, which servers older than getsentry/sentry#130368 return for every bearer token, it falls back to /auth/. - Span and log item details use retrieveProjectTraceItem, which Sentry publishes as experimental. The skill references are regenerated from the new schema descriptions. Co-Authored-By: BYK <126780+BYK@users.noreply.github.com> --- .../skills/sentry-cli/references/alert.md | 25 +++++---- .../skills/sentry-cli/references/event.md | 2 +- packages/cli/src/commands/auth/status.ts | 2 +- packages/cli/src/commands/auth/whoami.ts | 2 +- packages/cli/src/lib/api/logs.ts | 4 -- packages/cli/src/lib/api/projects.ts | 22 ++++---- packages/cli/src/lib/api/traces.ts | 31 ++++++----- packages/cli/src/lib/api/users.ts | 40 ++++++++++---- packages/cli/src/lib/db/accounts.ts | 2 +- packages/cli/src/lib/env-account.ts | 4 +- packages/cli/src/types/sentry.ts | 10 +--- .../cli/test/commands/auth/switch.test.ts | 4 +- packages/cli/test/commands/org/list.test.ts | 8 +-- .../cli/test/lib/api-client.coverage.test.ts | 55 +++++++++++++++---- .../test/lib/api-client.multiregion.test.ts | 3 +- packages/cli/test/mocks/multiregion.ts | 4 +- packages/cli/test/mocks/routes.ts | 4 +- pnpm-lock.yaml | 16 +++--- pnpm-workspace.yaml | 4 +- 19 files changed, 146 insertions(+), 96 deletions(-) diff --git a/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/alert.md b/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/alert.md index f0ebf6ccb..d35b908e9 100644 --- a/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/alert.md +++ b/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/alert.md @@ -190,18 +190,19 @@ Edit an issue alert rule |-------|------|-------------| | `id` | string | Alert rule ID | | `name` | string | Alert rule name | -| `organizationId` | string | ID of the organization the alert belongs to | -| `createdBy` | string \| null | ID of the user who created the alert | -| `dateCreated` | string | When the alert was created (ISO 8601) | -| `dateUpdated` | string | When the alert was last updated (ISO 8601) | -| `triggers` | object \| null | Conditions on which the alert triggers | +| `type` | string | Type of the workflow, such as alert | +| `organizationId` | string | ID of the organization the workflow belongs to | +| `createdBy` | string \| null | ID of the user who created the workflow | +| `dateCreated` | string | When the workflow was created (ISO 8601) | +| `dateUpdated` | string | When the workflow was last updated (ISO 8601) | +| `triggers` | object \| null | Conditions on which the workflow triggers | | `actionFilters` | array \| null | Filters to run before actions fire, each with the actions to fire | -| `environment` | string \| null | Name of the environment the alert is limited to. Null for all environments | -| `config` | object | Configuration of the alert, such as frequency in minutes | -| `detectorIds` | array \| null | IDs of the monitors connected to the alert | -| `enabled` | boolean | Whether the alert is enabled | -| `lastTriggered` | string \| null | When the alert last fired (ISO 8601) | -| `owner` | string \| null | Team or user that owns the alert, such as user:123 or team:456 | +| `environment` | string \| null | Name of the environment the workflow is limited to. Null for all environments | +| `config` | object | Configuration of the workflow, such as frequency in minutes | +| `detectorIds` | array \| null | IDs of the monitors connected to the workflow | +| `enabled` | boolean | Whether the workflow is enabled | +| `lastTriggered` | string \| null | When the workflow last fired (ISO 8601) | +| `owner` | string \| null | Team or user that owns the workflow, such as user:123 or team:456 | | `org` | string | Organization slug | | `project` | string | Project slug | | `status` | string | Rule status (active, disabled) | @@ -402,7 +403,7 @@ Edit a metric alert rule | `dateUpdated` | string | When the monitor was last updated (ISO 8601) | | `dataSources` | array \| null | Data sources the monitor evaluates, such as a query subscription | | `conditionGroup` | object \| null | Conditions that decide the monitor's status | -| `config` | object | | +| `config` | object | Configuration of the monitor, which depends on its type | | `enabled` | boolean | Whether the monitor is enabled | | `org` | string | Organization slug | | `status` | string | Rule status (active, disabled) | diff --git a/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/event.md b/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/event.md index 3afc37c96..c6aee7290 100644 --- a/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/event.md +++ b/packages/cli/plugins/sentry-cli/skills/sentry-cli/references/event.md @@ -45,7 +45,7 @@ View details of one or more events | `packages` | object | Modules loaded when the event occurred, keyed by module name with their versions | | `type` | string | Event type, such as error, default or transaction | | `metadata` | object | Event metadata | -| `occurrence` | object \| unknown \| null | | +| `occurrence` | object \| unknown \| null | Issue occurrence data for events in non-error issues, such as performance issues. Null otherwise | | `_meta` | object | Metadata about changes Sentry made to the event's fields, such as data scrubbing or trimming | | `user` | object \| null | User context of the event | | `tags` | array | Tags attached to the event | diff --git a/packages/cli/src/commands/auth/status.ts b/packages/cli/src/commands/auth/status.ts index 77b15a465..febbf1184 100644 --- a/packages/cli/src/commands/auth/status.ts +++ b/packages/cli/src/commands/auth/status.ts @@ -102,7 +102,7 @@ export type AuthStatusData = { * organization it can access use it even when stored OAuth is in effect. */ host?: string; - /** The token's user, from `/auth/` (not for organization auth tokens) */ + /** The token's user, from `/users/me/` (not for organization auth tokens) */ user?: { name?: string; email?: string; username?: string }; }; }; diff --git a/packages/cli/src/commands/auth/whoami.ts b/packages/cli/src/commands/auth/whoami.ts index efc714289..83d3a9250 100644 --- a/packages/cli/src/commands/auth/whoami.ts +++ b/packages/cli/src/commands/auth/whoami.ts @@ -2,7 +2,7 @@ * sentry auth whoami * * Display the currently authenticated identity. For user-scoped tokens (OAuth, - * PAT), this fetches the user from `/auth/`. For org auth tokens (`sntrys_`), + * PAT), this fetches the user from `/users/me/`. For org auth tokens (`sntrys_`), * it extracts the organization from the token's embedded claim. */ diff --git a/packages/cli/src/lib/api/logs.ts b/packages/cli/src/lib/api/logs.ts index 4905ce2c0..ac7abd16b 100644 --- a/packages/cli/src/lib/api/logs.ts +++ b/packages/cli/src/lib/api/logs.ts @@ -528,10 +528,6 @@ export async function listTraceLogs( * @param projectSlug - Project slug * @param logId - The sentry.item_id of the log entry * @param traceId - The trace ID (required by the endpoint) - * - * Uses the experimental /projects/{org}/{project}/trace-items/ endpoint directly via - * apiRequestToRegion — it is not yet available in @sentry/api (generated from - * getsentry/sentry-api-schema) because the endpoint is marked EXPERIMENTAL in Sentry. */ export function getLogItemDetail( orgSlug: string, diff --git a/packages/cli/src/lib/api/projects.ts b/packages/cli/src/lib/api/projects.ts index 13a2df22f..64d1a8c26 100644 --- a/packages/cli/src/lib/api/projects.ts +++ b/packages/cli/src/lib/api/projects.ts @@ -10,6 +10,7 @@ import { listOrganizationProjectKeys, listOrganizationProjects, listProjectKeys, + resolveOrganizationDsn, type ProjectKey as SdkProjectKey, deleteProject as sdkDeleteProject, getProject as sdkGetProject, @@ -32,7 +33,6 @@ import { getCachedOrganizations } from "../db/regions.js"; import { reportCliError } from "../error-reporting.js"; import { ApiError, type AuthGuardSuccess, withAuthGuard } from "../errors.js"; import { logger } from "../logger.js"; -import { resolveOrgRegion } from "../region.js"; import { getApiBaseUrl } from "../sentry-client.js"; import { isSentrySaasUrl } from "../sentry-urls.js"; import { buildProjectUrl } from "../sentry-web-urls.js"; @@ -49,6 +49,7 @@ import { paginate, unwrapPaginatedResult, unwrapResult, + unwrapValidatedResult, } from "./infrastructure.js"; import { listOrganizations } from "./organizations.js"; @@ -567,21 +568,22 @@ type DsnLookupOutcome = | { kind: "miss" } | { kind: "unsupported" }; -/** - * Look a DSN up in one organization with `GET /organizations/{org}/dsn-lookup/`. - * - * The endpoint isn't in `@sentry/api` yet (it's still private), so this is - * a helper call until the publish lands. - */ +/** Look a DSN up in one organization with `GET /organizations/{org}/dsn-lookup/`. */ async function lookUpDsnInOrg( org: SentryOrganization, dsn: string, ): Promise { try { - const { data } = await apiRequestToRegion( - await resolveOrgRegion(org.slug), + const result = await resolveOrganizationDsn({ + ...getOrgSdkConfig(), + path: { organization_id_or_slug: org.slug }, + query: { dsn }, + }); + const data = unwrapValidatedResult( + result, + "Failed to look up DSN", + DsnLookupResponseSchema, `/organizations/${encodeURIComponent(org.slug)}/dsn-lookup/`, - { params: { dsn }, schema: DsnLookupResponseSchema }, ); return { kind: "found", diff --git a/packages/cli/src/lib/api/traces.ts b/packages/cli/src/lib/api/traces.ts index 8d653dd48..9fa01e1b3 100644 --- a/packages/cli/src/lib/api/traces.ts +++ b/packages/cli/src/lib/api/traces.ts @@ -13,6 +13,7 @@ import { type ListOrganizationTraceItemAttributesResponse, listOrganizationEvents, listOrganizationTraceItemAttributes, + retrieveProjectTraceItem, } from "@sentry/api"; import pLimit from "p-limit"; @@ -40,7 +41,6 @@ import { isAllDigits } from "../utils.js"; import { API_MAX_PER_PAGE, - apiRequestToRegion, getOrgSdkConfig, type PaginatedResponse, paginate, @@ -204,11 +204,9 @@ type GetTraceItemDetailOptions = { }; /** - * Fetch full attribute details for a single trace item via the experimental - * /projects/{org}/{project}/trace-items/{itemId}/ endpoint. - * - * This endpoint is not yet in @sentry/api (getsentry/sentry-api-schema) because - * it is marked EXPERIMENTAL in Sentry. Both span and log detail views use it. + * Fetch full attribute details for a single trace item via + * `GET /projects/{org}/{project}/trace-items/{itemId}/`, which Sentry + * publishes as experimental. Both span and log detail views use it. * * @param orgSlug - Organization slug * @param projectSlug - Project slug @@ -221,16 +219,21 @@ export async function getTraceItemDetail( itemId: string, { traceId, itemType }: GetTraceItemDetailOptions, ): Promise { - const regionUrl = await resolveOrgRegion(orgSlug); - const { data } = await apiRequestToRegion( - regionUrl, - `/projects/${orgSlug}/${projectSlug}/trace-items/${itemId}/`, - { - params: { trace_id: traceId, item_type: itemType }, - schema: TraceItemDetailSchema, + const result = await retrieveProjectTraceItem({ + ...getOrgSdkConfig(), + path: { + organization_id_or_slug: orgSlug, + project_id_or_slug: projectSlug, + item_id: itemId, }, + query: { trace_id: traceId, item_type: itemType }, + }); + return unwrapValidatedResult( + result, + "Failed to get trace item details", + TraceItemDetailSchema, + `/projects/${orgSlug}/${projectSlug}/trace-items/${itemId}/`, ); - return data; } /** diff --git a/packages/cli/src/lib/api/users.ts b/packages/cli/src/lib/api/users.ts index 05cdbcda3..f37834b8d 100644 --- a/packages/cli/src/lib/api/users.ts +++ b/packages/cli/src/lib/api/users.ts @@ -4,24 +4,44 @@ * Functions for retrieving authenticated user information. */ +import { retrieveUserDetails } from "@sentry/api"; + import { type SentryUser, SentryUserSchema } from "../../types/index.js"; +import { ApiError } from "../errors.js"; import { getControlSiloUrl } from "../sentry-client.js"; +import { getSdkClientConfig } from "../sentry-sdk-client.js"; -import { apiRequestToRegion } from "./infrastructure.js"; +import { apiRequestToRegion, unwrapValidatedResult } from "./infrastructure.js"; /** * Get the currently authenticated user's information. * - * Uses the `/auth/` endpoint on the control silo, which works with all token - * types (OAuth, API tokens, OAuth App tokens). Unlike `/users/me/`, this - * endpoint does not return 403 for OAuth tokens. + * Reads `GET /users/me/` on the control silo. Servers older than + * getsentry/sentry#130368 return 403 there for every bearer token, so a 403 + * falls back to the private `/auth/` endpoint, which accepts them. */ export async function getCurrentUser(): Promise { - const { data } = await apiRequestToRegion( - getControlSiloUrl(), - "/auth/", - { schema: SentryUserSchema }, - ); - return data; + try { + const result = await retrieveUserDetails({ + ...getSdkClientConfig(getControlSiloUrl()), + path: { user_id: "me" }, + }); + return unwrapValidatedResult( + result, + "Failed to get current user", + SentryUserSchema, + "/users/me/", + ); + } catch (error) { + if (!(error instanceof ApiError && error.status === 403)) { + throw error; + } + const { data } = await apiRequestToRegion( + getControlSiloUrl(), + "/auth/", + { schema: SentryUserSchema }, + ); + return data; + } } diff --git a/packages/cli/src/lib/db/accounts.ts b/packages/cli/src/lib/db/accounts.ts index 41b8f70af..a786b430b 100644 --- a/packages/cli/src/lib/db/accounts.ts +++ b/packages/cli/src/lib/db/accounts.ts @@ -49,7 +49,7 @@ export const ENV_ACCOUNT_ID_PREFIX = "env:"; /** * Secret-free summary of an env token's virtual account on `host`, with the - * token's user when known (from `/auth/`). Never active: `sentry auth + * token's user when known (from `/users/me/`). Never active: `sentry auth * switch` only selects stored accounts. */ export function toEnvAccountSummary( diff --git a/packages/cli/src/lib/env-account.ts b/packages/cli/src/lib/env-account.ts index 80f2fa7b3..a3517c40b 100644 --- a/packages/cli/src/lib/env-account.ts +++ b/packages/cli/src/lib/env-account.ts @@ -4,7 +4,7 @@ * `SENTRY_AUTH_TOKEN`/`SENTRY_TOKEN` with a trusted server acts as one * more account next to stored logins (see `getEnvAccount` in `db/auth.ts`). * It is never stored, so nothing records whose token it is; commands that - * list accounts ask the server (`/auth/`) when they show it. + * list accounts ask the server (`/users/me/`) when they show it. */ import { getCurrentUser } from "./api-client.js"; @@ -17,7 +17,7 @@ import type { SentryUser } from "../types/index.js"; const log = logger.withTag("auth.env-account"); /** - * The user behind the env token, from `/auth/` on its own server. + * The user behind the env token, from `/users/me/` on its own server. * `undefined` for organization auth tokens (`sntrys_`), which belong to no * user, and when the request fails: identifying the token is best-effort. */ diff --git a/packages/cli/src/types/sentry.ts b/packages/cli/src/types/sentry.ts index 5ff826de1..0a4adabe7 100644 --- a/packages/cli/src/types/sentry.ts +++ b/packages/cli/src/types/sentry.ts @@ -294,10 +294,7 @@ export type ProjectKey = Partial & { // Internal types with Valibot schemas (runtime-validated, not in @sentry/api) -/** - * Response from `/api/0/organizations/{org}/dsn-lookup/`. The endpoint is - * private, so `@sentry/api` has no type for it. - */ +/** The fields the CLI reads from `/api/0/organizations/{org}/dsn-lookup/`. */ export const DsnLookupResponseSchema = looseObject({ organizationSlug: string(), projectSlug: string(), @@ -308,12 +305,11 @@ export const DsnLookupResponseSchema = looseObject({ // User /** - * Minimal user schema for the `/auth/` endpoint response. + * The user fields the CLI reads from `/users/me/` and its `/auth/` fallback, + * which return the same body. * * All optional fields use `.nullish()` (accepts both `null` and `undefined`) * because the Sentry API can return `null` for any of these. - * Note: `@sentry/api` doesn't export types for the `/auth/` endpoint — - * it's undocumented, so we define this schema manually. */ export const SentryUserSchema = looseObject({ id: string(), diff --git a/packages/cli/test/commands/auth/switch.test.ts b/packages/cli/test/commands/auth/switch.test.ts index 09ef25024..7240a48b9 100644 --- a/packages/cli/test/commands/auth/switch.test.ts +++ b/packages/cli/test/commands/auth/switch.test.ts @@ -135,7 +135,7 @@ describe("auth list", () => { describe("with an env token", () => { let originalFetch: typeof globalThis.fetch; - /** ` ` of every `/auth/` request. */ + /** ` ` of every `/users/me/` request. */ let requests: string[]; beforeEach(async () => { @@ -150,7 +150,7 @@ describe("auth list", () => { const url = new URL(req.url); const token = req.headers.get("Authorization")?.replace(/^Bearer /, ""); requests.push(`${url.origin} ${token}`); - if (url.pathname === "/api/0/auth/" && token === "env-token") { + if (url.pathname === "/api/0/users/me/" && token === "env-token") { return Response.json({ id: "7", email: "ci@example.com", diff --git a/packages/cli/test/commands/org/list.test.ts b/packages/cli/test/commands/org/list.test.ts index d335b119f..31817961d 100644 --- a/packages/cli/test/commands/org/list.test.ts +++ b/packages/cli/test/commands/org/list.test.ts @@ -57,7 +57,7 @@ type Org = { id: string; slug: string; name: string; regionUrl: string }; /** Orgs each token can see; a token missing here gets a 401. */ let orgsByToken: Record; -/** The `/auth/` user of each token; a token missing here gets a 401. */ +/** The `/users/me/` user of each token; a token missing here gets a 401. */ let usersByToken: Record; /** ` ` for every org-list request, to check token routing. */ let requests: string[]; @@ -78,8 +78,8 @@ beforeEach(async () => { const req = new Request(input, init); const url = new URL(req.url); const token = req.headers.get("Authorization")?.replace(/^Bearer /, ""); - if (url.pathname === "/api/0/auth/") { - requests.push(`${url.origin} ${token} /auth/`); + if (url.pathname === "/api/0/users/me/") { + requests.push(`${url.origin} ${token} /users/me/`); const user = token ? usersByToken[token] : undefined; return user ? Response.json(user) @@ -554,7 +554,7 @@ describe("org list with an env token", () => { // Never sent to a stored account's server, nor stored tokens to SaaS // on its behalf. expect(requests.filter((r) => r.includes("env-token")).sort()).toEqual( - [`${SAAS} env-token`, `${SAAS} env-token /auth/`].sort(), + [`${SAAS} env-token`, `${SAAS} env-token /users/me/`].sort(), ); expect(requests).toContain(`${ACME} acme-token`); }); diff --git a/packages/cli/test/lib/api-client.coverage.test.ts b/packages/cli/test/lib/api-client.coverage.test.ts index d08250335..db959820c 100644 --- a/packages/cli/test/lib/api-client.coverage.test.ts +++ b/packages/cli/test/lib/api-client.coverage.test.ts @@ -998,27 +998,58 @@ describe("projects.ts", () => { describe("users.ts", () => { describe("getCurrentUser", () => { - test("fetches authenticated user from /auth/ endpoint", async () => { - const user = { - id: "123", - name: "Test User", - email: "test@example.com", - username: "testuser", - }; + const user = { + id: "123", + name: "Test User", + email: "test@example.com", + username: "testuser", + }; + test("fetches authenticated user from /users/me/", async () => { + const paths: string[] = []; globalThis.fetch = mockFetch(async (input, init) => { const req = new Request(input!, init); - expect(req.url).toContain("/api/0/auth/"); - return new Response(JSON.stringify(user), { - status: 200, - headers: { "Content-Type": "application/json" }, - }); + paths.push(new URL(req.url).pathname); + return Response.json(user); }); const result = await getCurrentUser(); expect(result.id).toBe("123"); expect(result.name).toBe("Test User"); expect(result.email).toBe("test@example.com"); + expect(paths).toEqual(["/api/0/users/me/"]); + }); + + test("falls back to /auth/ when /users/me/ returns 403", async () => { + const paths: string[] = []; + globalThis.fetch = mockFetch(async (input, init) => { + const req = new Request(input!, init); + const path = new URL(req.url).pathname; + paths.push(path); + if (path === "/api/0/users/me/") { + return Response.json( + { detail: "You do not have permission to perform this action." }, + { status: 403 }, + ); + } + return Response.json(user); + }); + + const result = await getCurrentUser(); + expect(result.id).toBe("123"); + expect(paths).toEqual(["/api/0/users/me/", "/api/0/auth/"]); + }); + + test("doesn't fall back to /auth/ on other errors", async () => { + const paths: string[] = []; + globalThis.fetch = mockFetch(async (input, init) => { + const req = new Request(input!, init); + paths.push(new URL(req.url).pathname); + return Response.json({ detail: "Invalid token" }, { status: 401 }); + }); + + await expect(getCurrentUser()).rejects.toMatchObject({ status: 401 }); + expect(paths).toEqual(["/api/0/users/me/"]); }); test("validates against SentryUserSchema (rejects invalid)", async () => { diff --git a/packages/cli/test/lib/api-client.multiregion.test.ts b/packages/cli/test/lib/api-client.multiregion.test.ts index 302da4817..400beec0d 100644 --- a/packages/cli/test/lib/api-client.multiregion.test.ts +++ b/packages/cli/test/lib/api-client.multiregion.test.ts @@ -602,7 +602,8 @@ describe("findProjectByDsn (multi-region)", () => { expect(project?.slug).toBe("eu-project"); expect(captureSpy).toHaveBeenCalledTimes(1); expect(captureSpy.mock.calls[0]?.[0]).toMatchObject({ - message: "Network error", + status: 0, + cause: { message: "Network error" }, }); } finally { captureSpy.mockRestore(); diff --git a/packages/cli/test/mocks/multiregion.ts b/packages/cli/test/mocks/multiregion.ts index 57a4e26b6..fa22eedfb 100644 --- a/packages/cli/test/mocks/multiregion.ts +++ b/packages/cli/test/mocks/multiregion.ts @@ -224,14 +224,14 @@ function createControlSiloRoutes( options: MultiRegionOptions, ): MockRoute[] { const routes: MockRoute[] = [ - // Auth / current user via /auth/ endpoint (works with all token types) + // Current user fallback for servers whose /users/me/ rejects tokens { method: "GET", path: "/api/0/auth/", response: userFixture, }, - // User info via legacy /users/me/ endpoint (kept for backward compatibility) + // Current user { method: "GET", path: "/api/0/users/me/", diff --git a/packages/cli/test/mocks/routes.ts b/packages/cli/test/mocks/routes.ts index 2daa8d8b3..444511743 100644 --- a/packages/cli/test/mocks/routes.ts +++ b/packages/cli/test/mocks/routes.ts @@ -175,14 +175,14 @@ function resolveLogEventsBody(query: string | null) { } export const apiRoutes: MockRoute[] = [ - // Auth / current user (works with all token types including OAuth) + // Current user fallback for servers whose /users/me/ rejects tokens { method: "GET", path: "/api/0/auth/", response: userFixture, }, - // Users (legacy endpoint, kept for backward compatibility) + // Current user { method: "GET", path: "/api/0/users/me/", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8aa8a981f..b3e768387 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,8 +43,8 @@ catalogs: specifier: ^1.2.3 version: 1.2.3 '@sentry/api': - specifier: 1.55.0 - version: 1.55.0 + specifier: 1.59.0 + version: 1.59.0 '@sentry/cloudflare': specifier: 11.6.0 version: 11.6.0 @@ -513,7 +513,7 @@ importers: version: 2.1.5(hono@4.13.13) '@sentry/api': specifier: 'catalog:' - version: 1.55.0(typescript@5.9.3)(valibot@1.4.2(typescript@5.9.3))(zod@4.6.7) + version: 1.59.0(typescript@5.9.3)(valibot@1.4.2(typescript@5.9.3))(zod@4.6.7) '@sentry/core': specifier: 'catalog:' version: 11.6.0 @@ -865,7 +865,7 @@ importers: version: 2.4.0 '@sentry/api': specifier: 'catalog:' - version: 1.55.0(typescript@5.9.3)(valibot@1.4.2(typescript@5.9.3))(zod@4.6.7) + version: 1.59.0(typescript@5.9.3)(valibot@1.4.2(typescript@5.9.3))(zod@4.6.7) '@sentry/core': specifier: 'catalog:' version: 11.6.0 @@ -1048,7 +1048,7 @@ importers: dependencies: '@sentry/api': specifier: 'catalog:' - version: 1.55.0(typescript@5.9.3)(valibot@1.4.2(typescript@5.9.3))(zod@4.6.7) + version: 1.59.0(typescript@5.9.3)(valibot@1.4.2(typescript@5.9.3))(zod@4.6.7) '@sentry/search-syntax': specifier: 'catalog:' version: 1.0.0 @@ -4275,8 +4275,8 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@sentry/api@1.55.0': - resolution: {integrity: sha512-3gTO9kJrJzWOHUBMn+5snq82acD429v8fSasA7Bw3ThtJk1Q+DM3ePMmw/dpoei80OVhAYxN3e1cdep3g4OF8g==} + '@sentry/api@1.59.0': + resolution: {integrity: sha512-VN1UIKZVkXip0wwVobbVQJgi0sb5Nhi/fBqkoiIBH32Vf8rUtOuRQEEUDSrJ5Ug8XyTd9UcW2mNxwoDLdSVMJg==} engines: {node: '>=22'} peerDependencies: typescript: '*' @@ -12112,7 +12112,7 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} - '@sentry/api@1.55.0(typescript@5.9.3)(valibot@1.4.2(typescript@5.9.3))(zod@4.6.7)': + '@sentry/api@1.59.0(typescript@5.9.3)(valibot@1.4.2(typescript@5.9.3))(zod@4.6.7)': dependencies: http-cache-semantics: 4.2.0 p-limit: 7.3.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 88b4007c0..a3ef1c5f6 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -51,7 +51,7 @@ catalog: "@modelcontextprotocol/server": 2.4.0 "@radix-ui/react-accordion": ^1.2.20 "@radix-ui/react-slot": ^1.2.3 - "@sentry/api": 1.55.0 + "@sentry/api": 1.59.0 "@sentry/cloudflare": 11.6.0 "@sentry/core": 11.6.0 "@sentry/node": 11.6.0 @@ -168,7 +168,7 @@ minimumReleaseAgeExclude: - "@oxlint/binding-win32-x64-msvc@1.87.0" - oxfmt@0.72.0 - oxlint@1.87.0 - - "@sentry/api@1.55.0" + - "@sentry/api@1.59.0" - miniflare@5.20261101.0-beta - wrangler@4.156.1 - "@sentry/symbolic@14.0.0-alpha.5"