From 03c7f17b6ea420d4bf72549816dacde6e3c17e01 Mon Sep 17 00:00:00 2001 From: Sergiy Dybskiy Date: Wed, 23 Sep 2026 19:01:36 +0200 Subject: [PATCH 1/3] Move solutions to Sentry SDK 11.0.0 and teach MCP, CLI, and triage Regenerate the three solution patches on the released @sentry/nextjs and @sentry/node 11.0.0. The Flue suppressTracing workaround in the PR reviewer stays: without it a demo run drops 7 of 10 spans as unsampled on 11.0.0. Name the three ways the agent reaches Sentry (MCP server, plugin skills, sentry CLI) in the README, lab 3, and lab 6. Add a triage step to lab 3 (assign, Seer, resolve, Fixes ) and an "alert fired, now what" step to lab 6. Fix the lab 0 scope command: `sentry auth refresh --scope` replaces the whole scope set, so pass the login default plus org:write. Co-authored-by: Claude --- PROMPTS.md | 17 + README.md | 11 + RUNSHEET.md | 30 +- labs/00-setup.md | 2 +- labs/03-debug-refund.md | 42 +- labs/06-critical-paths.md | 28 +- solutions/02-storefront/README.md | 4 +- solutions/02-storefront/instrumentation.patch | 3522 +++++++++++++++-- solutions/04-slack-agent/README.md | 4 +- .../04-slack-agent/instrumentation.patch | 641 ++- solutions/05-pr-reviewer/README.md | 4 +- .../05-pr-reviewer/instrumentation.patch | 1548 +++++++- 12 files changed, 5330 insertions(+), 523 deletions(-) diff --git a/PROMPTS.md b/PROMPTS.md index f5ad5bb..41660cb 100644 --- a/PROMPTS.md +++ b/PROMPTS.md @@ -74,6 +74,14 @@ as a handled tool error with the order id as an attribute. Then rerun the refund in the chat and show me the new trace. ``` +### Step 4. Triage it + +```text +Triage the refund issue: assign it to me, run Seer on it and compare its +root cause with yours, then resolve it and reference it in the fix commit +so Sentry links the two. +``` + ## Lab 4. Slack agent Directory: `apps/slack-agent`. Full lab: [labs/04-slack-agent.md](labs/04-slack-agent.md). @@ -173,3 +181,12 @@ org with two widgets: total input and output tokens per day grouped by tokens with their user. Then open it. ``` +### Step 5. The alert fired + +```text +The refund alert fired. Open the issue it points to, tell me how many +users hit it and in which release, get Seer's root cause, and if it is +the Lab 3 bug again, assign it to me and link the fix. Otherwise tell me +what is new. +``` + diff --git a/README.md b/README.md index b77febd..7d6831a 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,17 @@ that matter for each critical path. Nobody instruments by hand. Every step is a prompt. The workshop teaches what to ask for and how to check the result. +## Three ways in + +Your coding agent reaches Sentry in three ways. The labs use all three, and +each lab names the one that did the work. + +| Way | What it is | Where the labs use it | +|---|---|---| +| MCP server | `mcp.sentry.dev`. Tools such as `search_issues`, `search_events`, `get_trace_details`, `analyze_issue_with_seer`, and `update_issue`. The agent calls them while it works. | Lab 3 finds the issue, pulls the trace and the replay, and triages it. Lab 6 triages the issue an alert opens. | +| Plugin skills | `sentry-instrument`, `sentry-debug-issue`, `sentry-create-alert`, and others from . Step-by-step instructions the agent follows on top of the MCP tools. Claude Code gets them from the `sentry` plugin. Other agents can copy them. | Labs 2 and 4 instrument. Lab 3 debugs. Lab 6 creates alerts. | +| `sentry` CLI | `sentry issue list`, `view`, `explain`, `plan`, `resolve`; `sentry agent-conversation list`, `view`; `sentry alert`; `sentry dashboard create`. Runs in any terminal and in CI, and the agent can call it too. | Lab 3 shows the same issue from the terminal. Lab 6 creates the dashboard and lists the alerts. | + | App | Environment | Runtime | You do | | --- | --- | --- | --- | | `apps/storefront` | Browser chat on a Next.js app | Next.js, Vercel AI SDK, Postgres on Neon | Hands-on | diff --git a/RUNSHEET.md b/RUNSHEET.md index e266b91..5218bcb 100644 --- a/RUNSHEET.md +++ b/RUNSHEET.md @@ -54,7 +54,17 @@ applied with `scripts/solution.sh `. Time on the day: 55 minutes. - **Outcome.** The agent finds the new issue, names the failing span and the cause from the trace, and applies a fix that keeps the error visible as a - handled tool error with the order id. The rerun trace is green. + handled tool error with the order id. The rerun trace is green. Then it + triages the issue: assigned, Seer analysis compared, resolved with the fix + commit. +- **Mechanism.** Say the names out loud once. MCP: `search_issues`, + `get_trace_details`, `get_sentry_resource` for the replay, + `analyze_issue_with_seer`, `update_issue`; the `sentry-debug-issue` skill + is the script the agent follows. CLI: `sentry issue list`, `view --spans + all`, `explain`, `resolve`. Seer refuses a project with no connected + repository, so link the fork first or skip the Seer comparison. The + point: debugging is tool calls, and they + run from any agent and from CI. - **Prompt.** In the chat: "Show me my recent orders", then "Refund order 1029" (1029 has no payment row; 1036 and 1042 refund fine). Then the two lab 3 prompts: diagnose without changing code, then apply the fix. @@ -142,7 +152,15 @@ applied with `scripts/solution.sh `. Time on the day: 55 minutes. 10374603 (refund), 10374604 (failure rate), 10374605 (slow turns, p95 > 15 s), 10374606 (input tokens per hour, anomaly), dashboard 10117079 ("Storefront agent: critical paths", from `scripts/dashboards/agent-critical-paths.mjs`). Every detector was accepted on the first POST once the payload copied an existing one. -- **Prompt.** The two lab 6 prompts, alert first, dashboard second. +- **Prompt.** The two lab 6 prompts, alert first, dashboard second. While + the room waits for the alert email, the Step 5 triage prompt on the issue + the alert opened. +- **Mechanism.** Alerts: the `sentry-create-alert` skill over the workflow + engine API; `sentry alert metrics list` shows the result. Dashboard: + `sentry dashboard create`. Triage: the lab 3 MCP tools again, started by + an alert. Name the automated version: a webhook action on the workflow, or + a scheduled agent over `sentry issue list --query "is:unresolved + firstSeen:-1h"`. - **Code.** The detector and workflow payloads the agent sends (Sentry's workflow engine, not the legacy alert-rules API) and the dashboard JSON the `sentry` CLI posts. Reference dashboards live in @@ -152,8 +170,12 @@ applied with `scripts/solution.sh `. Time on the day: 55 minutes. detector API refuses `groupBy` ("Group by Metric Alerts feature must be enabled"), so the top-ten table is the answer. - **Pitfall.** Dashboard creation needs the `org:write` CLI scope; - `sentry auth login` alone gives 403 on `POST dashboards/`. Setup says - `sentry auth refresh --scope org:write`. + `sentry auth login` alone gives 403 on `POST dashboards/`. `sentry auth + refresh --scope` replaces the whole scope set, so a refresh with only + `org:write` leaves `sentry issue` on 403. Setup passes the login default + plus `org:write` in one comma-separated `--scope`. Also check `sentry auth + status`: a 403 on every project command with the right scopes means the + CLI is logged in as an account that is not a member of the org. - **Takeaway.** Start from the path that costs money, not the metric the tool offers. Alerts and dashboards are prompts too. The attribute names are in the trace. diff --git a/labs/00-setup.md b/labs/00-setup.md index 921fb98..1232ab1 100644 --- a/labs/00-setup.md +++ b/labs/00-setup.md @@ -30,7 +30,7 @@ your organization name. - Node 22 or newer: `node --version` - git -- The `sentry` CLI: `curl https://cli.sentry.dev/install -fsS | bash`, then `sentry auth login` and `sentry auth refresh --scope org:write` (lab 6 creates dashboards; the default token cannot) +- The `sentry` CLI: `curl https://cli.sentry.dev/install -fsS | bash`, then `sentry auth login` and `sentry auth refresh --scope org:read,org:write,project:read,project:write,event:read,event:write,member:read,team:read,alerts:read,alerts:write` (`--scope` replaces the whole scope set, so this is the login default plus `org:write`; lab 3 needs `event:write` for Seer and lab 6 needs `org:write` for dashboards) ## 4. Clone and run the setup script diff --git a/labs/03-debug-refund.md b/labs/03-debug-refund.md index 2950f9d..2e8400f 100644 --- a/labs/03-debug-refund.md +++ b/labs/03-debug-refund.md @@ -36,6 +36,19 @@ The cause: the payments table only has rows for orders placed after the June 2026 payments launch. Older orders have nothing to refund against, and the tool throws instead of telling the model so. +### What did the work + +Your agent used Sentry's MCP server, with the `sentry-debug-issue` skill as +its guide when it has the plugin: `search_issues` found the issue, +`get_trace_details` pulled the span tree, and `get_sentry_resource` fetched +the replay. Ask it to list the Sentry tools it called and you see these +names. + +The `sentry` CLI shows the same issue from a terminal, and works in CI: + + sentry issue list --query "is:unresolved" / + sentry issue view --spans all + ## Step 3. Decide the fix, then apply it There are two fixes, and the trace tells you which one is right: @@ -50,11 +63,34 @@ For a shop, the first is correct. Ask your agent: > as a handled tool error with the order id as an attribute. Then rerun the > refund in the chat and show me the new trace. +## Step 4. Triage it + +The fix in the repo is half of the job. The issue in Sentry needs an owner, +a root cause on record, and a resolution tied to the fix. Ask your agent: + +> Triage the refund issue: assign it to me, run Seer on it and compare its +> root cause with yours, then resolve it and reference it in the fix commit +> so Sentry links the two. + +Watch for two MCP calls: `analyze_issue_with_seer` for the root cause and +`update_issue` for the assignee and the status. From a terminal, the same +two are: + + sentry issue explain + sentry issue resolve + +A commit message that contains `Fixes ` does the last step on its +own when the release that contains it goes out. + +Seer only runs on a project with a connected repository. If it answers +"requires repositories to be connected", link your fork under Project +Settings > Source Code, or skip the Seer comparison and keep the rest. + ## Checkpoint The new trace has the same tool span, now without an error, and the model's -reply names the reason. The issue from Step 1 can be resolved. Ask the agent -to resolve it and link the fix commit. +reply names the reason. The issue from Step 1 is resolved, assigned to you, +and shows the Seer analysis and the fix commit. ## What you learned @@ -63,3 +99,5 @@ to resolve it and link the fix commit. reproducing. - Tool errors that the model recovers from still deserve to be recorded. Silent recovery is how agents hide failures. +- Debugging is tool calls. The MCP tools and CLI commands that found and + triaged this issue run from any coding agent, and from CI. diff --git a/labs/06-critical-paths.md b/labs/06-critical-paths.md index e3f410c..406573b 100644 --- a/labs/06-critical-paths.md +++ b/labs/06-critical-paths.md @@ -34,7 +34,8 @@ Ask your coding agent: > 5 minutes. Look at an existing detector in the org for the payload shape > first. Show me both alerts and the query each one uses. -The Sentry skills use the workflow engine API for this. The legacy +The `sentry-create-alert` skill does this through Sentry's workflow engine +API: one detector per condition and one workflow for the email. The legacy alert-rules endpoint fails on this org, and the detector payload needs values no error message tells you (`events_analytics_platform`, `trace_item_span`, the 75/50/0 condition codes), which is why the prompt @@ -48,6 +49,10 @@ hour". The agent has to know `detectionType: dynamic` and the `anomaly_detection` condition shape; the presenter's copy is in `scripts/alerts/storefront-critical-paths.json`. +List what the agent created from a terminal: + + sentry alert metrics list + ## Step 3. One dashboard by CLI The Sentry plugin has no dashboard skill, so this goes through the `sentry` @@ -76,14 +81,33 @@ failures, and model latency. Add `--push` to create it through the CLI. - PR reviewer: the cache hit rate per release widget, with the Lab 5 regression visible as a drop between two releases. +## Step 5. The alert fired. Now what + +An alert starts a triage loop. The refund alert points at an issue. Hand it +to your agent while you wait for the email: + +> The refund alert fired. Open the issue it points to, tell me how many +> users hit it and in which release, get Seer's root cause, and if it is +> the Lab 3 bug again, assign it to me and link the fix. Otherwise tell me +> what is new. + +This is Lab 3 again, started by an alert instead of a person: +`search_issues`, `get_trace_details`, `analyze_issue_with_seer`, +`update_issue`. Take the person out and the same loop is an automated +triage workflow: the alert's workflow can call a webhook, and a scheduled +coding agent can run this prompt over +`sentry issue list --query "is:unresolved firstSeen:-1h"`. + ## Checkpoint Trigger the refund failure four times in ten minutes. The alert fires on more than 3 failures. The alert email arrives a few minutes later. Paste -the alert link in the workshop channel. +the alert link in the workshop channel, then run Step 5 on it. ## What you learned - Start from the path that costs money, not from the metric the tool offers. - Alerts and dashboards are prompts too. The agent needs the attribute names, and the trace has them. +- An alert opens a triage loop. The agent that debugged Lab 3 runs that loop + from the alert, and can run it from a schedule. diff --git a/solutions/02-storefront/README.md b/solutions/02-storefront/README.md index 11a093c..893ac23 100644 --- a/solutions/02-storefront/README.md +++ b/solutions/02-storefront/README.md @@ -1,6 +1,6 @@ # Solution: instrument the storefront -`instrumentation.patch` adds Sentry (`@sentry/nextjs` 11.0.0-rc.0) to +`instrumentation.patch` adds Sentry (`@sentry/nextjs` 11.0.0) to `apps/storefront`, wired for agent tracing on the Vercel AI SDK route. ## Files it adds or changes @@ -25,7 +25,7 @@ Sentry's Node SDK auto-instruments into `db.query` spans once the server config is loaded. -SDK: @sentry/nextjs 11.0.0-rc.0 +SDK: @sentry/nextjs 11.0.0 ## Env vars it needs diff --git a/solutions/02-storefront/instrumentation.patch b/solutions/02-storefront/instrumentation.patch index 8eb6fd2..5bf14c8 100644 --- a/solutions/02-storefront/instrumentation.patch +++ b/solutions/02-storefront/instrumentation.patch @@ -2,7 +2,7 @@ diff --git a/apps/storefront/.env.example b/apps/storefront/.env.example index 0000000..0000000 100644 --- a/apps/storefront/.env.example +++ b/apps/storefront/.env.example -@@ -14,4 +14,12 @@ +@@ -14,4 +14,12 @@ OPENROUTER_MODEL= COMPANY_NAME="Acme, Inc." SITE_NAME="Acme Store" @@ -26,7 +26,7 @@ index 0000000..0000000 100644 import { convertToModelMessages, createUIMessageStreamResponse, -@@ -32,6 +33,14 @@ +@@ -32,6 +33,14 @@ export async function POST(req: Request) { const { id, messages }: { id?: string; messages: AssistantUIMessage[] } = await req.json(); @@ -41,7 +41,7 @@ index 0000000..0000000 100644 const result = streamText({ model: openrouter.chat(resolveModel()), instructions: { -@@ -46,6 +55,11 @@ +@@ -46,6 +55,11 @@ export async function POST(req: Request) { telemetry: { functionId: "shopping-assistant", }, @@ -54,8 +54,8 @@ index 0000000..0000000 100644 return createUIMessageStreamResponse({ diff --git a/apps/storefront/instrumentation-client.ts b/apps/storefront/instrumentation-client.ts -index 0000000..0000000 new file mode 100644 +index 0000000..0000000 --- /dev/null +++ b/apps/storefront/instrumentation-client.ts @@ -0,0 +1,15 @@ @@ -75,8 +75,8 @@ new file mode 100644 +// Instruments App Router navigations so client traces connect to server ones. +export const onRouterTransitionStart = Sentry.captureRouterTransitionStart; diff --git a/apps/storefront/instrumentation.ts b/apps/storefront/instrumentation.ts -index 0000000..0000000 new file mode 100644 +index 0000000..0000000 --- /dev/null +++ b/apps/storefront/instrumentation.ts @@ -0,0 +1,10 @@ @@ -99,7 +99,7 @@ index 0000000..0000000 100644 import type { NextConfig } from "next"; const nextConfig: NextConfig = { -@@ -16,4 +17,9 @@ +@@ -16,4 +17,9 @@ const nextConfig: NextConfig = { }, }; @@ -118,16 +118,14 @@ index 0000000..0000000 100644 "@headlessui/react": "^2.2.0", "@heroicons/react": "^2.2.0", "@openrouter/ai-sdk-provider": "3.0.0", -+ "@sentry/nextjs": "11.0.0-rc.0", ++ "@sentry/nextjs": "11.0.0", "@streamdown/cjk": "^1.0.3", "@streamdown/code": "^1.1.1", "@streamdown/math": "^1.0.2", -@@ -164,8 +165,232 @@ - }, - "funding": { +@@ -166,6 +167,230 @@ "url": "https://github.com/sponsors/antfu" -+ } -+ }, + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://sfw.security.sentry.io/npm/@babel/code-frame/-/code-frame-7.29.7.tgz", @@ -220,8 +218,8 @@ index 0000000..0000000 100644 + "license": "MIT", + "engines": { + "node": ">=6.9.0" - } - }, ++ } ++ }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://sfw.security.sentry.io/npm/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", @@ -293,9 +291,9 @@ index 0000000..0000000 100644 + } + }, + "node_modules/@babel/parser": { -+ "version": "7.29.8", -+ "resolved": "https://sfw.security.sentry.io/npm/@babel/parser/-/parser-7.29.8.tgz", -+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", ++ "version": "7.29.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@babel/parser/-/parser-7.29.9.tgz", ++ "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" @@ -708,26 +706,2666 @@ index 0000000..0000000 100644 "integrity": "sha512-fDOggsweNb5SSw0ZKVk6U+gxSyGFFlIBY/LBc1r8GUj4u/6t6oArL+Pmkg0MBnsgR+KkdsURilVH4F3GXUGepA==", "cpu": [ "x64" -@@ -1964,6 +2203,15 @@ - "peerDependencies": { - "ai": "^7.0.0", +@@ -1966,14 +2205,22 @@ "zod": "^3.25.76 || ^4.1.8" + } + }, +- "node_modules/@oxlint/binding-android-arm-eabi": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.78.0.tgz", +- "integrity": "sha512-Bu819lmAfZMUHErrpe0cEWj3iaefuUODHSU8+UbXy67V/r7/7f4K3FL0NmbD85E+wiFLDYuhP8Zlv0XnVeXshw==", ++ "node_modules/@opentelemetry/api": { ++ "version": "1.9.1", ++ "resolved": "https://sfw.security.sentry.io/npm/@opentelemetry/api/-/api-1.9.1.tgz", ++ "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", ++ "license": "Apache-2.0", ++ "engines": { ++ "node": ">=8.0.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-android-arm-eabi": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.143.0.tgz", ++ "integrity": "sha512-n9uozULWflPqBtdmI8lAabLqGKNgLVNN0ZH8HfgCwpKGNtzRzauB76jTiW/3YLkcA7N1zskpi9GdVnZuu1SAvg==", + "cpu": [ + "arm" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -1983,14 +2230,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-android-arm64": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-android-arm64/-/binding-android-arm64-1.78.0.tgz", +- "integrity": "sha512-CDfxZgB61B7buRdY2FJoAYYPPXCZ1EoC1LKscnC5dg3kjobdxiconvAvvN1BmHyW4PyFT3jRLDag/BY/roSNBQ==", ++ "node_modules/@oxc-parser/binding-android-arm64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.143.0.tgz", ++ "integrity": "sha512-9BbdjHETk6O3zH/DDid9IgBtF0GlpLabNKN231uraXpRDSfY+iiZxTP5bk1Z63GBownVdhdINFIeddmMz4MzpQ==", + "cpu": [ + "arm64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -2000,14 +2246,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-darwin-arm64": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.78.0.tgz", +- "integrity": "sha512-2Y2U9Ahrz+OO0Ej88f9SJYq51/jUBp1Mc7iZu0ukrbeeZ3gpRGfzIFnoqfHDY96xr0GEfNrPUBFEy0nN5aD7HA==", ++ "node_modules/@oxc-parser/binding-darwin-arm64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.143.0.tgz", ++ "integrity": "sha512-gh+6ecoHUy4/sUcolBl/1qPXKBbYNxFY0Pk0ujgQvINTMSftJY7o4yb8gOkDJPeZeB8+a+u7xTe6umoP8N5HFA==", + "cpu": [ + "arm64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -2017,14 +2262,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-darwin-x64": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.78.0.tgz", +- "integrity": "sha512-rpych6eJq6m9jDRypTEaPD1xysaEW5h9+xuxhGK/QhOg+/xaqPZrCrTNoIl/f3nEjuJeCEmstNDlrE9rJi/3/g==", ++ "node_modules/@oxc-parser/binding-darwin-x64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.143.0.tgz", ++ "integrity": "sha512-qd1hl2d+lXgHv/VQ/M9qm8TrMC5T4RqDBwtOnl+1D0QMjwcz+8AaB4JSg8STgeag0GP6a6L74XEGAsrTSJWNzQ==", + "cpu": [ + "x64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -2034,14 +2278,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-freebsd-x64": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.78.0.tgz", +- "integrity": "sha512-IcMGrQT3QizkOESUJd5et+rOhVqSkNDfNik1cvrKDqIbzqx9KMtRswpFgkCuNTSwylCFLKhGUu8KmqY1ZnC0Dg==", ++ "node_modules/@oxc-parser/binding-freebsd-x64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.143.0.tgz", ++ "integrity": "sha512-M5XXcNa7aOqLPKTR41msfghKu2yQ4xWvCm11/gwU0JzOzHNk5sgW//rVEjJ+LO48+VDAMzXTSzurUVxIDKwozw==", + "cpu": [ + "x64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -2051,14 +2294,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-arm-gnueabihf": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.78.0.tgz", +- "integrity": "sha512-/uLdoJ0IXE6vo/0f0LKjinQAp+re+VMaCWaNT8ENIv2EOCkSsc8SGaflXAuW0Jua2dq5+GLVWm1NQK7P3UFSNQ==", ++ "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.143.0.tgz", ++ "integrity": "sha512-T/GXusuOkPNQhCQCSBbcU/N8j0rAypuDBl1IyFK+lyYT594XsVz80clPC/OtbSSpBGyJxj8uYEfctxVuxVYoww==", + "cpu": [ + "arm" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -2068,14 +2310,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-arm-musleabihf": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.78.0.tgz", +- "integrity": "sha512-7xi4Wb/O8NRJhLoUXmDJMUVpNYvB5kefdhFU1Jb8rtae4QoXlTiLwI14X4YvAXVZLNZChP8m5qO9SQAlWQTbkQ==", ++ "node_modules/@oxc-parser/binding-linux-arm-musleabihf": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.143.0.tgz", ++ "integrity": "sha512-oKu4RcBlXSqo3OC62dp6YTnQaZIurNDpCX3BnAM3+bJxt7s8J2TJKMnC0UYer1qhlRaDCg6wkTaTw+2IlsZ12w==", + "cpu": [ + "arm" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -2085,14 +2326,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-arm64-gnu": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.78.0.tgz", +- "integrity": "sha512-4hFW0+fVXa3OIh1Y4A5SPkmvI4wuuBSrCVKzOyE7PTjhc7yEqZ1pmvEEeS5Lj/MaqvegFxXyF33N+6jkehxdyg==", ++ "node_modules/@oxc-parser/binding-linux-arm64-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.143.0.tgz", ++ "integrity": "sha512-WJBbD186AZmMGaSIhlktC+rPl8L3peCTXAh88Ih9uEvK0en2mPojGyCGYiL6mHtV1RPV3JyfJW5t6n5hh0lXhA==", + "cpu": [ + "arm64" + ], +- "dev": true, + "libc": [ + "glibc" + ], +@@ -2105,14 +2345,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-arm64-musl": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.78.0.tgz", +- "integrity": "sha512-oC0mvsgBJjlMijSDEhx9KuvR9zYeHXceA9MjbuXB1F8NSR78Yj2unOBrstEvTVaq+pko+kuue6DajC00eqvTdg==", ++ "node_modules/@oxc-parser/binding-linux-arm64-musl": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.143.0.tgz", ++ "integrity": "sha512-t1AcYOwEzgceadT4v5e+vaCCb0AncCA3v5AyzfBAz/tMq11qzVccXKzNHtkWdjBsgvTKwRkaUF3QvT4kot8vcQ==", + "cpu": [ + "arm64" + ], +- "dev": true, + "libc": [ + "musl" + ], +@@ -2125,14 +2364,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-ppc64-gnu": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.78.0.tgz", +- "integrity": "sha512-XAllT5SUZS+ohjuZ3/5S0cwe0r7eboiuigeStCZ5DXRYx/2KVM2UvQXvAfyzXEimtQjAB7cDQ2YxDe2Zl2WNQQ==", ++ "node_modules/@oxc-parser/binding-linux-ppc64-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.143.0.tgz", ++ "integrity": "sha512-RsnO/NoD8376LMJq8JS8TwI0ieNaFRTuNe2GVJntQg6gwZNMENZsEbknHdVwjpOmxdGLGodcwaGSbAeRr5Bgjw==", + "cpu": [ + "ppc64" + ], +- "dev": true, + "libc": [ + "glibc" + ], +@@ -2145,14 +2383,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-riscv64-gnu": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.78.0.tgz", +- "integrity": "sha512-trucMER/0QtecoXvc1y/UVqE3kwJipDwrx4oHfj+nNm3dq2zjP44WT0CfHNDPM3G1DXIkx/gY6lAD21NSCZVhA==", ++ "node_modules/@oxc-parser/binding-linux-riscv64-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.143.0.tgz", ++ "integrity": "sha512-48fSVfR9TZi5CASZFyv0VC6z6BCoeihFsX031mAD/oSH7d9PYsPgIqza7d9mjP7Z2KTEpTFyH6SIu0Ui6R1vdg==", + "cpu": [ + "riscv64" + ], +- "dev": true, + "libc": [ + "glibc" + ], +@@ -2165,14 +2402,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-riscv64-musl": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.78.0.tgz", +- "integrity": "sha512-cm3O4F/HQbdzOUX5mKHqG5KDL6E5w0pnlZ+fbBy2rmLryPOowkuLagFHTopQsEIpjcaZoPOrL+BmmAytAG9HFg==", ++ "node_modules/@oxc-parser/binding-linux-riscv64-musl": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.143.0.tgz", ++ "integrity": "sha512-T8CpdD+SfE01DnIOD4HpVxu0ZJOfMJ/VhCvikKfaXAxkZ+9veyLM/D2hpi7Y2hFUyPmVQO3FNZHmYzV/WlVR4g==", + "cpu": [ + "riscv64" + ], +- "dev": true, + "libc": [ + "musl" + ], +@@ -2185,14 +2421,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-s390x-gnu": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.78.0.tgz", +- "integrity": "sha512-33wRf6HqGNsybJ3qX4cGaQN2ODPxNmc1rMa0mrTmx3eFq1VzOnvQooi9bIGVYakW8a/wmqVx1mgsUm8R2xfTiw==", ++ "node_modules/@oxc-parser/binding-linux-s390x-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.143.0.tgz", ++ "integrity": "sha512-QLdeMsCcacenPEFsfxnBUDF1y6opyz5+fmOz9bfD5Y7fiGCMupUCuB3KTPQhNwshIG1P9fPqar9MHxuBDd4bwQ==", + "cpu": [ + "s390x" + ], +- "dev": true, + "libc": [ + "glibc" + ], +@@ -2205,14 +2440,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-x64-gnu": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.78.0.tgz", +- "integrity": "sha512-rRdISSYegj6VganMZ9tjRjijowfHJ09IZU01i0toBAqr6n5LEtwHq2IeS4FjW2RoskOHlb6efB26H5izYb3GEQ==", ++ "node_modules/@oxc-parser/binding-linux-x64-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.143.0.tgz", ++ "integrity": "sha512-659ujfqLy6k7cuH3sbzhd8b+ztSq+i6E2E9pG78Q0BmHjAExfGIdgc8cGgMdwAozDXeZFHkJ+LXYJdWsaGdgyw==", + "cpu": [ + "x64" + ], +- "dev": true, + "libc": [ + "glibc" + ], +@@ -2225,14 +2459,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-x64-musl": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.78.0.tgz", +- "integrity": "sha512-GmsP4rW0xTL6u5CVdcDsaN5Fbc7hBc382Wmar1kttbnwSEviM+rSINKOMQ+UQ6iH+AGwC+8gaAiwu134Tgh6Lg==", ++ "node_modules/@oxc-parser/binding-linux-x64-musl": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.143.0.tgz", ++ "integrity": "sha512-/Mw/9j4TfZcnKphPrzOE6t4MMknXadcAAuVUlDRTF/ETWB5xOgQvOJV2Mh9We/bWxZdoxaGAdc+hy4GuYwQ2yQ==", + "cpu": [ + "x64" + ], +- "dev": true, + "libc": [ + "musl" + ], +@@ -2245,14 +2478,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-openharmony-arm64": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.78.0.tgz", +- "integrity": "sha512-sy9yeYuADc8a+n4TLBayzMCZiHPW78DcIFVpOXTmdKHWQeM9xe5uzkqIIZmi326D5hY9XVwacipEB1p7tQjPAg==", ++ "node_modules/@oxc-parser/binding-openharmony-arm64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.143.0.tgz", ++ "integrity": "sha512-8rIKWR2BFuifbIK/1XB9wTaSdtuJ25dlE7ZQYDnEwj/2xH2vHsxnvIjHT3ZjSVuLLwGGlSslIG/fbOJ8TV8rTw==", + "cpu": [ + "arm64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -2262,14 +2494,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-win32-arm64-msvc": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.78.0.tgz", +- "integrity": "sha512-rjc2hF1KfMi8fZj1X/m3AmnHbdsF3rL0v6KQg0Uc880Yb2khjz+3U14sfdZ7jWTpRnN1m1NQa/TT7uU9lJWPrA==", ++ "node_modules/@oxc-parser/binding-win32-arm64-msvc": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.143.0.tgz", ++ "integrity": "sha512-5U9kQYMfRRI6Zq7KDxgbIP0RMnKrfn3gLepRMgJuRkPSUALTiRCk9d/uyhb4lGDjUdzwK7mBkKqhLgzBPCmLpQ==", + "cpu": [ + "arm64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -2279,14 +2510,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-win32-ia32-msvc": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.78.0.tgz", +- "integrity": "sha512-zcuXFVrEFHIafRfkCQT8w/Xe41o07ozl/vwHq7p94vB29xVzsB0sZGYORU1jhcYKv3Lr0J3HbJ2T4fHH5rWmvA==", ++ "node_modules/@oxc-parser/binding-win32-ia32-msvc": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.143.0.tgz", ++ "integrity": "sha512-25P7AaHk4R88Yv2XH4gToDVmh0cOu+bEURQU10CRrmvgabfRArSGAP5osmwUKeSUHj0VS50upbpbRWWW/m7mHA==", + "cpu": [ + "ia32" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -2296,14 +2526,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-win32-x64-msvc": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.78.0.tgz", +- "integrity": "sha512-Sb5ocmLSuYeOuXd+CFOToGKp/gjXUEWDnvIGwhnh8aq8wY4TMmEnKnvbogSW7RdMZv77JSARduS7/gv+khYEjA==", ++ "node_modules/@oxc-parser/binding-win32-x64-msvc": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.143.0.tgz", ++ "integrity": "sha512-ORMh3JE1s6V7ySicdRK7vgaDQnn5o+UHg9ct989PlWHbel8O9ARrmWXM6kZjrBMtNucxNayQ8g69G0VfWzhANw==", + "cpu": [ + "x64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -2313,447 +2542,381 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/number": { +- "version": "1.1.3", +- "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.3.tgz", +- "integrity": "sha512-Road2bidD0uu/1BGDOWNdPI06g0lIRy6IF9GZcIrDK2KGItfor8IQwQa+yM2ERgHM1MmHxaxpTzk0/Jp42lNfA==", +- "license": "MIT" +- }, +- "node_modules/@radix-ui/primitive": { +- "version": "1.1.7", +- "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.7.tgz", +- "integrity": "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q==", +- "license": "MIT" +- }, +- "node_modules/@radix-ui/react-accessible-icon": { +- "version": "1.1.15", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.15.tgz", +- "integrity": "sha512-WTQwcAvQf5sOcuUyi90lKPbhwcvQ+j55cjrSmeaN+L2vKU3DooOvlKw2MDeiJ5IkV5N905KW0/fGojKOBhD11A==", ++ "node_modules/@oxc-project/types": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-project/types/-/types-0.143.0.tgz", ++ "integrity": "sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==", + "license": "MIT", +- "dependencies": { +- "@radix-ui/react-visually-hidden": "1.2.11" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } ++ "funding": { ++ "url": "https://github.com/sponsors/Boshen" + } + }, +- "node_modules/@radix-ui/react-accordion": { +- "version": "1.2.20", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.20.tgz", +- "integrity": "sha512-jDhG9FvAEnlhnjrsINbNXcUa4G+L1KqSkJSunkbKEzFRcAb52jvM0PjPxPRvhe1HNc5F5yc0yzzWeeqlH4yBIg==", +- "license": "MIT", +- "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-collapsible": "1.1.20", +- "@radix-ui/react-collection": "1.1.15", +- "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-direction": "1.1.4", +- "@radix-ui/react-id": "1.1.4", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-controllable-state": "1.2.6" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } +- } +- }, +- "node_modules/@radix-ui/react-alert-dialog": { +- "version": "1.1.23", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.23.tgz", +- "integrity": "sha512-VAYOiQRqj3GPpYJE0I9J+X8Ip05cyVlNdKOFeiGS2Ou1HHGfpl0BxOyZm6nmVDyU+W+NF3/XLzmjHmVGydhwgA==", ++ "node_modules/@oxlint/binding-android-arm-eabi": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.78.0.tgz", ++ "integrity": "sha512-Bu819lmAfZMUHErrpe0cEWj3iaefuUODHSU8+UbXy67V/r7/7f4K3FL0NmbD85E+wiFLDYuhP8Zlv0XnVeXshw==", ++ "cpu": [ ++ "arm" ++ ], ++ "dev": true, + "license": "MIT", +- "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-dialog": "1.1.23", +- "@radix-ui/react-primitive": "2.1.10" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "android" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-arrow": { +- "version": "1.1.15", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.15.tgz", +- "integrity": "sha512-v4zggRcjadnI+ClKDuijlQEW4tw3NoaeHc/PwpKnLoLLKNUG4InLegkstooLcRIUWCs+8L22dGURCVuFfOKfnA==", ++ "node_modules/@oxlint/binding-android-arm64": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-android-arm64/-/binding-android-arm64-1.78.0.tgz", ++ "integrity": "sha512-CDfxZgB61B7buRdY2FJoAYYPPXCZ1EoC1LKscnC5dg3kjobdxiconvAvvN1BmHyW4PyFT3jRLDag/BY/roSNBQ==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, + "license": "MIT", +- "dependencies": { +- "@radix-ui/react-primitive": "2.1.10" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "android" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-aspect-ratio": { +- "version": "1.1.15", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.15.tgz", +- "integrity": "sha512-fy+dyVR+90nelK8rqIznFlxzx7uPcGbhxH8Nfr2bHb4UfSe+e3hklOC0luK0hDwVwnRX7xTRySpsrQVeW+/oNQ==", ++ "node_modules/@oxlint/binding-darwin-arm64": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.78.0.tgz", ++ "integrity": "sha512-2Y2U9Ahrz+OO0Ej88f9SJYq51/jUBp1Mc7iZu0ukrbeeZ3gpRGfzIFnoqfHDY96xr0GEfNrPUBFEy0nN5aD7HA==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, + "license": "MIT", +- "dependencies": { +- "@radix-ui/react-primitive": "2.1.10" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "darwin" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-avatar": { +- "version": "1.2.6", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.2.6.tgz", +- "integrity": "sha512-4ULOTJ/mqy2hT9GlWa/MFHxHSvH3nJzHnZM1waNsc5Bonv7i70aNenghXmD97S6OJ81ekXONGGt4nT1r0PfEdA==", ++ "node_modules/@oxlint/binding-darwin-x64": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.78.0.tgz", ++ "integrity": "sha512-rpych6eJq6m9jDRypTEaPD1xysaEW5h9+xuxhGK/QhOg+/xaqPZrCrTNoIl/f3nEjuJeCEmstNDlrE9rJi/3/g==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, + "license": "MIT", +- "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-callback-ref": "1.1.4", +- "@radix-ui/react-use-is-hydrated": "0.1.3", +- "@radix-ui/react-use-layout-effect": "1.1.4" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "darwin" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-checkbox": { +- "version": "1.3.11", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.11.tgz", +- "integrity": "sha512-Gnptr9pDDQxD3hgq2dtPbtrp/c2qH1mBwIzw3X/ivrMb2e1t0jMTi606fVEqFPaQR1ggXIVQWKj3P2WW9v7zGQ==", ++ "node_modules/@oxlint/binding-freebsd-x64": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.78.0.tgz", ++ "integrity": "sha512-IcMGrQT3QizkOESUJd5et+rOhVqSkNDfNik1cvrKDqIbzqx9KMtRswpFgkCuNTSwylCFLKhGUu8KmqY1ZnC0Dg==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, + "license": "MIT", +- "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-presence": "1.1.10", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-controllable-state": "1.2.6", +- "@radix-ui/react-use-size": "1.1.4" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "freebsd" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-collapsible": { +- "version": "1.1.20", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.20.tgz", +- "integrity": "sha512-mcGesGplBnzN2sbvJETzpCNfSMyPnb29q1GRLU+Ib7bJrpIG2ywmRoh2V5VbA2uNvKikKUlVbAPks7JDjz4A8Q==", ++ "node_modules/@oxlint/binding-linux-arm-gnueabihf": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.78.0.tgz", ++ "integrity": "sha512-/uLdoJ0IXE6vo/0f0LKjinQAp+re+VMaCWaNT8ENIv2EOCkSsc8SGaflXAuW0Jua2dq5+GLVWm1NQK7P3UFSNQ==", ++ "cpu": [ ++ "arm" ++ ], ++ "dev": true, + "license": "MIT", +- "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-id": "1.1.4", +- "@radix-ui/react-presence": "1.1.10", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-controllable-state": "1.2.6", +- "@radix-ui/react-use-layout-effect": "1.1.4" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-collection": { +- "version": "1.1.15", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.15.tgz", +- "integrity": "sha512-9W+B9NPF0NaaPh/1NJd3+KqsnlLqU9H7T2rvww+fp+T/evVXdNAyYcnfRQZFOjkR1ajQp3yORlqnI8soawLvNA==", +- "license": "MIT", +- "dependencies": { +- "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-slot": "1.3.3" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } ++ "node_modules/@oxlint/binding-linux-arm-musleabihf": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.78.0.tgz", ++ "integrity": "sha512-7xi4Wb/O8NRJhLoUXmDJMUVpNYvB5kefdhFU1Jb8rtae4QoXlTiLwI14X4YvAXVZLNZChP8m5qO9SQAlWQTbkQ==", ++ "cpu": [ ++ "arm" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-compose-refs": { +- "version": "1.1.5", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.5.tgz", +- "integrity": "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==", ++ "node_modules/@oxlint/binding-linux-arm64-gnu": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.78.0.tgz", ++ "integrity": "sha512-4hFW0+fVXa3OIh1Y4A5SPkmvI4wuuBSrCVKzOyE7PTjhc7yEqZ1pmvEEeS5Lj/MaqvegFxXyF33N+6jkehxdyg==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "libc": [ ++ "glibc" ++ ], + "license": "MIT", +- "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-context": { +- "version": "1.2.2", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.2.2.tgz", +- "integrity": "sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA==", ++ "node_modules/@oxlint/binding-linux-arm64-musl": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.78.0.tgz", ++ "integrity": "sha512-oC0mvsgBJjlMijSDEhx9KuvR9zYeHXceA9MjbuXB1F8NSR78Yj2unOBrstEvTVaq+pko+kuue6DajC00eqvTdg==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "libc": [ ++ "musl" ++ ], + "license": "MIT", +- "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-context-menu": { +- "version": "2.3.7", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.3.7.tgz", +- "integrity": "sha512-CtXP35dxaB5T3zXSd+E3uHe/QpXcpYnZmxp6OaIbfthtfW4wyb77M23BG+bwIJDtsMwEP/YssdsmNyZu7jhWew==", ++ "node_modules/@oxlint/binding-linux-ppc64-gnu": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.78.0.tgz", ++ "integrity": "sha512-XAllT5SUZS+ohjuZ3/5S0cwe0r7eboiuigeStCZ5DXRYx/2KVM2UvQXvAfyzXEimtQjAB7cDQ2YxDe2Zl2WNQQ==", ++ "cpu": [ ++ "ppc64" ++ ], ++ "dev": true, ++ "libc": [ ++ "glibc" ++ ], + "license": "MIT", +- "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-menu": "2.1.24", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-controllable-state": "1.2.6" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-dialog": { +- "version": "1.1.23", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.23.tgz", +- "integrity": "sha512-Ksw4WeROkO4rC9k/onilX/Ao2Cr1ku1unMNH+XSCcP4jSXYu7HDsg9n4ojMjVb22XpYjAQ9qfrFlVbru1vXDUA==", ++ "node_modules/@oxlint/binding-linux-riscv64-gnu": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.78.0.tgz", ++ "integrity": "sha512-trucMER/0QtecoXvc1y/UVqE3kwJipDwrx4oHfj+nNm3dq2zjP44WT0CfHNDPM3G1DXIkx/gY6lAD21NSCZVhA==", ++ "cpu": [ ++ "riscv64" ++ ], ++ "dev": true, ++ "libc": [ ++ "glibc" ++ ], + "license": "MIT", +- "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-dismissable-layer": "1.1.19", +- "@radix-ui/react-focus-guards": "1.1.6", +- "@radix-ui/react-focus-scope": "1.1.16", +- "@radix-ui/react-id": "1.1.4", +- "@radix-ui/react-portal": "1.1.17", +- "@radix-ui/react-presence": "1.1.10", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-slot": "1.3.3", +- "@radix-ui/react-use-controllable-state": "1.2.6", +- "@radix-ui/react-use-layout-effect": "1.1.4", +- "aria-hidden": "^1.2.4", +- "react-remove-scroll": "^2.7.2" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-direction": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.4.tgz", +- "integrity": "sha512-5pzg4FGQNpExhnhT2zlrP1wZFaYCd1K0nYWoFAdcYoYK868IEigqMX3B3f8yIoRlAhAeDWciLI6ZdCKHF9P4Vg==", ++ "node_modules/@oxlint/binding-linux-riscv64-musl": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.78.0.tgz", ++ "integrity": "sha512-cm3O4F/HQbdzOUX5mKHqG5KDL6E5w0pnlZ+fbBy2rmLryPOowkuLagFHTopQsEIpjcaZoPOrL+BmmAytAG9HFg==", ++ "cpu": [ ++ "riscv64" ++ ], ++ "dev": true, ++ "libc": [ ++ "musl" ++ ], + "license": "MIT", +- "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-dismissable-layer": { +- "version": "1.1.19", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.19.tgz", +- "integrity": "sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w==", ++ "node_modules/@oxlint/binding-linux-s390x-gnu": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.78.0.tgz", ++ "integrity": "sha512-33wRf6HqGNsybJ3qX4cGaQN2ODPxNmc1rMa0mrTmx3eFq1VzOnvQooi9bIGVYakW8a/wmqVx1mgsUm8R2xfTiw==", ++ "cpu": [ ++ "s390x" ++ ], ++ "dev": true, ++ "libc": [ ++ "glibc" ++ ], + "license": "MIT", +- "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-callback-ref": "1.1.4", +- "@radix-ui/react-use-effect-event": "0.0.5" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-dropdown-menu": { +- "version": "2.1.24", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.24.tgz", +- "integrity": "sha512-geq8l2rJkxvkXsT9RMgtUE3P8pITFpTsvYpbySi1IH4fZEABD/Gp85myayFgxk0ktljGMJnCbeFkyTusvSvv7g==", +- "license": "MIT", +- "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-id": "1.1.4", +- "@radix-ui/react-menu": "2.1.24", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-controllable-state": "1.2.6" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } ++ "node_modules/@oxlint/binding-linux-x64-gnu": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.78.0.tgz", ++ "integrity": "sha512-rRdISSYegj6VganMZ9tjRjijowfHJ09IZU01i0toBAqr6n5LEtwHq2IeS4FjW2RoskOHlb6efB26H5izYb3GEQ==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-focus-guards": { +- "version": "1.1.6", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.6.tgz", +- "integrity": "sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ==", ++ "node_modules/@oxlint/binding-linux-x64-musl": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.78.0.tgz", ++ "integrity": "sha512-GmsP4rW0xTL6u5CVdcDsaN5Fbc7hBc382Wmar1kttbnwSEviM+rSINKOMQ+UQ6iH+AGwC+8gaAiwu134Tgh6Lg==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "libc": [ ++ "musl" ++ ], + "license": "MIT", +- "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- } ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@radix-ui/react-focus-scope": { +- "version": "1.1.16", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.16.tgz", +- "integrity": "sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ==", ++ "node_modules/@oxlint/binding-openharmony-arm64": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.78.0.tgz", ++ "integrity": "sha512-sy9yeYuADc8a+n4TLBayzMCZiHPW78DcIFVpOXTmdKHWQeM9xe5uzkqIIZmi326D5hY9XVwacipEB1p7tQjPAg==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "openharmony" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxlint/binding-win32-arm64-msvc": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.78.0.tgz", ++ "integrity": "sha512-rjc2hF1KfMi8fZj1X/m3AmnHbdsF3rL0v6KQg0Uc880Yb2khjz+3U14sfdZ7jWTpRnN1m1NQa/TT7uU9lJWPrA==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxlint/binding-win32-ia32-msvc": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.78.0.tgz", ++ "integrity": "sha512-zcuXFVrEFHIafRfkCQT8w/Xe41o07ozl/vwHq7p94vB29xVzsB0sZGYORU1jhcYKv3Lr0J3HbJ2T4fHH5rWmvA==", ++ "cpu": [ ++ "ia32" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxlint/binding-win32-x64-msvc": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.78.0.tgz", ++ "integrity": "sha512-Sb5ocmLSuYeOuXd+CFOToGKp/gjXUEWDnvIGwhnh8aq8wY4TMmEnKnvbogSW7RdMZv77JSARduS7/gv+khYEjA==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@radix-ui/number": { ++ "version": "1.1.3", ++ "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.3.tgz", ++ "integrity": "sha512-Road2bidD0uu/1BGDOWNdPI06g0lIRy6IF9GZcIrDK2KGItfor8IQwQa+yM2ERgHM1MmHxaxpTzk0/Jp42lNfA==", ++ "license": "MIT" ++ }, ++ "node_modules/@radix-ui/primitive": { ++ "version": "1.1.7", ++ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.7.tgz", ++ "integrity": "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q==", ++ "license": "MIT" ++ }, ++ "node_modules/@radix-ui/react-accessible-icon": { ++ "version": "1.1.15", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.15.tgz", ++ "integrity": "sha512-WTQwcAvQf5sOcuUyi90lKPbhwcvQ+j55cjrSmeaN+L2vKU3DooOvlKw2MDeiJ5IkV5N905KW0/fGojKOBhD11A==", + "license": "MIT", + "dependencies": { +- "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-callback-ref": "1.1.4" ++ "@radix-ui/react-visually-hidden": "1.2.11" + }, + "peerDependencies": { + "@types/react": "*", +@@ -2770,18 +2933,21 @@ + } + } + }, +- "node_modules/@radix-ui/react-form": { +- "version": "0.1.16", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-form/-/react-form-0.1.16.tgz", +- "integrity": "sha512-Q4TLEn2A7TAypxwmd6R9EwrlXDvkfYSDMrq9/887AXAGh+G1rH+kYJKSTv+Si9Y0JPKTwKYv6PviAJosysNimA==", ++ "node_modules/@radix-ui/react-accordion": { ++ "version": "1.2.20", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.20.tgz", ++ "integrity": "sha512-jDhG9FvAEnlhnjrsINbNXcUa4G+L1KqSkJSunkbKEzFRcAb52jvM0PjPxPRvhe1HNc5F5yc0yzzWeeqlH4yBIg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-collapsible": "1.1.20", ++ "@radix-ui/react-collection": "1.1.15", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-direction": "1.1.4", + "@radix-ui/react-id": "1.1.4", +- "@radix-ui/react-label": "2.1.15", +- "@radix-ui/react-primitive": "2.1.10" ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-use-controllable-state": "1.2.6" + }, + "peerDependencies": { + "@types/react": "*", +@@ -2798,21 +2964,17 @@ + } + } + }, +- "node_modules/@radix-ui/react-hover-card": { ++ "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.23", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.23.tgz", +- "integrity": "sha512-H8qONfZd3ltrU3+jHCIgITbWo6e1iTKvP9DHdrvYbX48ooRM5FjEDTn16AMwdfuOGkWdZEhpl3PLL/Wk/AnHDQ==", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.23.tgz", ++ "integrity": "sha512-VAYOiQRqj3GPpYJE0I9J+X8Ip05cyVlNdKOFeiGS2Ou1HHGfpl0BxOyZm6nmVDyU+W+NF3/XLzmjHmVGydhwgA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-dismissable-layer": "1.1.19", +- "@radix-ui/react-popper": "1.3.7", +- "@radix-ui/react-portal": "1.1.17", +- "@radix-ui/react-presence": "1.1.10", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-controllable-state": "1.2.6" ++ "@radix-ui/react-dialog": "1.1.23", ++ "@radix-ui/react-primitive": "2.1.10" + }, + "peerDependencies": { + "@types/react": "*", +@@ -2829,28 +2991,33 @@ + } + } + }, +- "node_modules/@radix-ui/react-id": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.4.tgz", +- "integrity": "sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==", ++ "node_modules/@radix-ui/react-arrow": { ++ "version": "1.1.15", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.15.tgz", ++ "integrity": "sha512-v4zggRcjadnI+ClKDuijlQEW4tw3NoaeHc/PwpKnLoLLKNUG4InLegkstooLcRIUWCs+8L22dGURCVuFfOKfnA==", + "license": "MIT", + "dependencies": { +- "@radix-ui/react-use-layout-effect": "1.1.4" ++ "@radix-ui/react-primitive": "2.1.10" + }, + "peerDependencies": { + "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true + } + } + }, +- "node_modules/@radix-ui/react-label": { +- "version": "2.1.15", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.15.tgz", +- "integrity": "sha512-o/rdYEwZTTo5tjknnPeyQFU45kUC4i/XyeDPP+HGyi6XqpOP6Zf5Ya5vh/Yfe9Id5JiuWnnAx2XqIeD3UYZt0g==", ++ "node_modules/@radix-ui/react-aspect-ratio": { ++ "version": "1.1.15", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.15.tgz", ++ "integrity": "sha512-fy+dyVR+90nelK8rqIznFlxzx7uPcGbhxH8Nfr2bHb4UfSe+e3hklOC0luK0hDwVwnRX7xTRySpsrQVeW+/oNQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.10" +@@ -2870,30 +3037,18 @@ + } + } + }, +- "node_modules/@radix-ui/react-menu": { +- "version": "2.1.24", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.24.tgz", +- "integrity": "sha512-uW7RVuU6Lp/ZtfeY4b3kL32zccgEWvPv1+cf17ubYzHa9cL8AHokmk36cG/XEiH/smbQvumnieXX9j/e9RqJWA==", ++ "node_modules/@radix-ui/react-avatar": { ++ "version": "1.2.6", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.2.6.tgz", ++ "integrity": "sha512-4ULOTJ/mqy2hT9GlWa/MFHxHSvH3nJzHnZM1waNsc5Bonv7i70aNenghXmD97S6OJ81ekXONGGt4nT1r0PfEdA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-collection": "1.1.15", +- "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-direction": "1.1.4", +- "@radix-ui/react-dismissable-layer": "1.1.19", +- "@radix-ui/react-focus-guards": "1.1.6", +- "@radix-ui/react-focus-scope": "1.1.16", +- "@radix-ui/react-id": "1.1.4", +- "@radix-ui/react-popper": "1.3.7", +- "@radix-ui/react-portal": "1.1.17", +- "@radix-ui/react-presence": "1.1.10", + "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-roving-focus": "1.1.19", +- "@radix-ui/react-slot": "1.3.3", + "@radix-ui/react-use-callback-ref": "1.1.4", +- "aria-hidden": "^1.2.4", +- "react-remove-scroll": "^2.7.2" ++ "@radix-ui/react-use-is-hydrated": "0.1.3", ++ "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", +@@ -2910,22 +3065,19 @@ + } + } + }, +- "node_modules/@radix-ui/react-menubar": { +- "version": "1.1.24", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.24.tgz", +- "integrity": "sha512-eeVs0vf7cuqXaM0qLQCPcufImiJNVBXdJDLu7ZGYl2732UH23Qat/foNGrr6vYV3/DdTsBqASoggUFgH14OcZA==", ++ "node_modules/@radix-ui/react-checkbox": { ++ "version": "1.3.11", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.11.tgz", ++ "integrity": "sha512-Gnptr9pDDQxD3hgq2dtPbtrp/c2qH1mBwIzw3X/ivrMb2e1t0jMTi606fVEqFPaQR1ggXIVQWKj3P2WW9v7zGQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-collection": "1.1.15", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-direction": "1.1.4", +- "@radix-ui/react-id": "1.1.4", +- "@radix-ui/react-menu": "2.1.24", ++ "@radix-ui/react-presence": "1.1.10", + "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-roving-focus": "1.1.19", +- "@radix-ui/react-use-controllable-state": "1.2.6" ++ "@radix-ui/react-use-controllable-state": "1.2.6", ++ "@radix-ui/react-use-size": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", +@@ -2942,26 +3094,20 @@ + } + } + }, +- "node_modules/@radix-ui/react-navigation-menu": { +- "version": "1.2.22", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.22.tgz", +- "integrity": "sha512-ou7iLEJ+yrhQndkkA4U21XIdS/CS45F4iXIkTZcb6/Ne9EMsOuDudVmCwmDnfFZZ+y1FZqXRNSIgBy+YMvZVZg==", ++ "node_modules/@radix-ui/react-collapsible": { ++ "version": "1.1.20", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.20.tgz", ++ "integrity": "sha512-mcGesGplBnzN2sbvJETzpCNfSMyPnb29q1GRLU+Ib7bJrpIG2ywmRoh2V5VbA2uNvKikKUlVbAPks7JDjz4A8Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-collection": "1.1.15", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-direction": "1.1.4", +- "@radix-ui/react-dismissable-layer": "1.1.19", + "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-presence": "1.1.10", + "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-callback-ref": "1.1.4", + "@radix-ui/react-use-controllable-state": "1.2.6", +- "@radix-ui/react-use-layout-effect": "1.1.4", +- "@radix-ui/react-use-previous": "1.1.4", +- "@radix-ui/react-visually-hidden": "1.2.11" ++ "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", +@@ -2978,24 +3124,16 @@ + } + } + }, +- "node_modules/@radix-ui/react-one-time-password-field": { +- "version": "0.1.16", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-one-time-password-field/-/react-one-time-password-field-0.1.16.tgz", +- "integrity": "sha512-Tj9P6ntAJEw52oq/F0AGknXR4XncxEt7XU47O3xJQOiWfLzEy3d9gtgKfvjSzGxzHkfL+VzvxGu2KTFsloJqXw==", ++ "node_modules/@radix-ui/react-collection": { ++ "version": "1.1.15", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.15.tgz", ++ "integrity": "sha512-9W+B9NPF0NaaPh/1NJd3+KqsnlLqU9H7T2rvww+fp+T/evVXdNAyYcnfRQZFOjkR1ajQp3yORlqnI8soawLvNA==", + "license": "MIT", + "dependencies": { +- "@radix-ui/number": "1.1.3", +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-collection": "1.1.15", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-direction": "1.1.4", + "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-roving-focus": "1.1.19", +- "@radix-ui/react-use-controllable-state": "1.2.6", +- "@radix-ui/react-use-effect-event": "0.0.5", +- "@radix-ui/react-use-is-hydrated": "0.1.3", +- "@radix-ui/react-use-layout-effect": "1.1.4" ++ "@radix-ui/react-slot": "1.3.3" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3012,20 +3150,47 @@ + } + } + }, +- "node_modules/@radix-ui/react-password-toggle-field": { +- "version": "0.1.11", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-password-toggle-field/-/react-password-toggle-field-0.1.11.tgz", +- "integrity": "sha512-4gvFnmDXu3dgj21CqsufzIameRvlRd4SBqaWhcrlrNhRo0Y5i/49AmRJYe1fdAM3G2VNBbmin4b0D6cdQocwgw==", ++ "node_modules/@radix-ui/react-compose-refs": { ++ "version": "1.1.5", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.5.tgz", ++ "integrity": "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==", ++ "license": "MIT", ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-context": { ++ "version": "1.2.2", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.2.2.tgz", ++ "integrity": "sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA==", ++ "license": "MIT", ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-context-menu": { ++ "version": "2.3.7", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.3.7.tgz", ++ "integrity": "sha512-CtXP35dxaB5T3zXSd+E3uHe/QpXcpYnZmxp6OaIbfthtfW4wyb77M23BG+bwIJDtsMwEP/YssdsmNyZu7jhWew==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-id": "1.1.4", ++ "@radix-ui/react-menu": "2.1.24", + "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-controllable-state": "1.2.6", +- "@radix-ui/react-use-effect-event": "0.0.5", +- "@radix-ui/react-use-is-hydrated": "0.1.3" ++ "@radix-ui/react-use-controllable-state": "1.2.6" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3042,10 +3207,10 @@ + } + } + }, +- "node_modules/@radix-ui/react-popover": { ++ "node_modules/@radix-ui/react-dialog": { + "version": "1.1.23", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.23.tgz", +- "integrity": "sha512-mw58MrBlyHWFisTOYignD0vf/3gdcgAR+9of1s9G/38CbFiUwH1nCDkc0AUM9IrXFgN5Ue8n45j9WCgyM1sbiQ==", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.23.tgz", ++ "integrity": "sha512-Ksw4WeROkO4rC9k/onilX/Ao2Cr1ku1unMNH+XSCcP4jSXYu7HDsg9n4ojMjVb22XpYjAQ9qfrFlVbru1vXDUA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", +@@ -3055,12 +3220,12 @@ + "@radix-ui/react-focus-guards": "1.1.6", + "@radix-ui/react-focus-scope": "1.1.16", + "@radix-ui/react-id": "1.1.4", +- "@radix-ui/react-popper": "1.3.7", + "@radix-ui/react-portal": "1.1.17", + "@radix-ui/react-presence": "1.1.10", + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-slot": "1.3.3", + "@radix-ui/react-use-controllable-state": "1.2.6", ++ "@radix-ui/react-use-layout-effect": "1.1.4", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.7.2" + }, +@@ -3079,22 +3244,32 @@ + } + } + }, +- "node_modules/@radix-ui/react-popper": { +- "version": "1.3.7", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.3.7.tgz", +- "integrity": "sha512-UsJrrd7w4wuKKTdvd/DNERVlwSlUcyXzjhyDwBk+3aPOsCjOY6ZSbxuw8E6lZTjjfP8Cpd0J8VVkrYUWyGYXyg==", ++ "node_modules/@radix-ui/react-direction": { ++ "version": "1.1.4", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.4.tgz", ++ "integrity": "sha512-5pzg4FGQNpExhnhT2zlrP1wZFaYCd1K0nYWoFAdcYoYK868IEigqMX3B3f8yIoRlAhAeDWciLI6ZdCKHF9P4Vg==", ++ "license": "MIT", ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-dismissable-layer": { ++ "version": "1.1.19", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.19.tgz", ++ "integrity": "sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w==", + "license": "MIT", + "dependencies": { +- "@floating-ui/react-dom": "^2.0.0", +- "@radix-ui/react-arrow": "1.1.15", ++ "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-context": "1.2.2", + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-use-callback-ref": "1.1.4", +- "@radix-ui/react-use-layout-effect": "1.1.4", +- "@radix-ui/react-use-rect": "1.1.4", +- "@radix-ui/react-use-size": "1.1.4", +- "@radix-ui/rect": "1.1.3" ++ "@radix-ui/react-use-effect-event": "0.0.5" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3111,14 +3286,19 @@ + } + } + }, +- "node_modules/@radix-ui/react-portal": { +- "version": "1.1.17", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.17.tgz", +- "integrity": "sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ==", ++ "node_modules/@radix-ui/react-dropdown-menu": { ++ "version": "2.1.24", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.24.tgz", ++ "integrity": "sha512-geq8l2rJkxvkXsT9RMgtUE3P8pITFpTsvYpbySi1IH4fZEABD/Gp85myayFgxk0ktljGMJnCbeFkyTusvSvv7g==", + "license": "MIT", + "dependencies": { ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-compose-refs": "1.1.5", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-id": "1.1.4", ++ "@radix-ui/react-menu": "2.1.24", + "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-layout-effect": "1.1.4" ++ "@radix-ui/react-use-controllable-state": "1.2.6" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3135,36 +3315,30 @@ + } + } + }, +- "node_modules/@radix-ui/react-presence": { +- "version": "1.1.10", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.10.tgz", +- "integrity": "sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw==", ++ "node_modules/@radix-ui/react-focus-guards": { ++ "version": "1.1.6", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.6.tgz", ++ "integrity": "sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ==", + "license": "MIT", +- "dependencies": { +- "@radix-ui/react-use-layout-effect": "1.1.4" +- }, + "peerDependencies": { + "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true +- }, +- "@types/react-dom": { +- "optional": true + } + } + }, +- "node_modules/@radix-ui/react-primitive": { +- "version": "2.1.10", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.10.tgz", +- "integrity": "sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==", ++ "node_modules/@radix-ui/react-focus-scope": { ++ "version": "1.1.16", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.16.tgz", ++ "integrity": "sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ==", + "license": "MIT", + "dependencies": { +- "@radix-ui/react-slot": "1.3.3" ++ "@radix-ui/react-compose-refs": "1.1.5", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-use-callback-ref": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3181,13 +3355,17 @@ + } + } + }, +- "node_modules/@radix-ui/react-progress": { +- "version": "1.1.16", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.16.tgz", +- "integrity": "sha512-5XnomAsoZZCY+KNTxbIghpGqPruZvKFNlvcAljVAOdDRDsH4/OZQxhtwo5wdtoDM5R6MhJBb2sPnDuRFep3lzg==", ++ "node_modules/@radix-ui/react-form": { ++ "version": "0.1.16", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-form/-/react-form-0.1.16.tgz", ++ "integrity": "sha512-Q4TLEn2A7TAypxwmd6R9EwrlXDvkfYSDMrq9/887AXAGh+G1rH+kYJKSTv+Si9Y0JPKTwKYv6PviAJosysNimA==", + "license": "MIT", + "dependencies": { ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-id": "1.1.4", ++ "@radix-ui/react-label": "2.1.15", + "@radix-ui/react-primitive": "2.1.10" + }, + "peerDependencies": { +@@ -3205,21 +3383,21 @@ + } + } + }, +- "node_modules/@radix-ui/react-radio-group": { +- "version": "1.4.7", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.4.7.tgz", +- "integrity": "sha512-cgYFEkntCxppHZgtSZ+7vh0wbZQ+IC7PPMw8DSnRG27B6kDd32/Zw0OJt7dGDigCoprMuWHjg2PvUn3PYvPFoQ==", ++ "node_modules/@radix-ui/react-hover-card": { ++ "version": "1.1.23", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.23.tgz", ++ "integrity": "sha512-H8qONfZd3ltrU3+jHCIgITbWo6e1iTKvP9DHdrvYbX48ooRM5FjEDTn16AMwdfuOGkWdZEhpl3PLL/Wk/AnHDQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-direction": "1.1.4", ++ "@radix-ui/react-dismissable-layer": "1.1.19", ++ "@radix-ui/react-popper": "1.3.7", ++ "@radix-ui/react-portal": "1.1.17", + "@radix-ui/react-presence": "1.1.10", + "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-roving-focus": "1.1.19", +- "@radix-ui/react-use-controllable-state": "1.2.6", +- "@radix-ui/react-use-size": "1.1.4" ++ "@radix-ui/react-use-controllable-state": "1.2.6" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3236,54 +3414,31 @@ + } + } + }, +- "node_modules/@radix-ui/react-roving-focus": { +- "version": "1.1.19", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.19.tgz", +- "integrity": "sha512-V9jI6hDjT7l3jsCQD9bLNvDLM3tH/gdbOTp7Tefp3hbbgCGQoK7tUvrWiRlcoBHIZ809ElXwNQwVo0B98LuTXQ==", ++ "node_modules/@radix-ui/react-id": { ++ "version": "1.1.4", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.4.tgz", ++ "integrity": "sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==", + "license": "MIT", + "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-collection": "1.1.15", +- "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-direction": "1.1.4", +- "@radix-ui/react-id": "1.1.4", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-callback-ref": "1.1.4", +- "@radix-ui/react-use-controllable-state": "1.2.6", +- "@radix-ui/react-use-is-hydrated": "0.1.3", + "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true +- }, +- "@types/react-dom": { +- "optional": true + } + } + }, +- "node_modules/@radix-ui/react-scroll-area": { +- "version": "1.2.18", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.18.tgz", +- "integrity": "sha512-Zn5Cd171wxsO3Dfg8HaW6RifTb9CYTKQJHs/G4+LN1GfmJpaQMZQyQxMprVPHpaz7QY4l9BxK2JwQuzHsXC8nA==", ++ "node_modules/@radix-ui/react-label": { ++ "version": "2.1.15", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.15.tgz", ++ "integrity": "sha512-o/rdYEwZTTo5tjknnPeyQFU45kUC4i/XyeDPP+HGyi6XqpOP6Zf5Ya5vh/Yfe9Id5JiuWnnAx2XqIeD3UYZt0g==", + "license": "MIT", + "dependencies": { +- "@radix-ui/number": "1.1.3", +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-direction": "1.1.4", +- "@radix-ui/react-presence": "1.1.10", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-callback-ref": "1.1.4", +- "@radix-ui/react-use-layout-effect": "1.1.4" ++ "@radix-ui/react-primitive": "2.1.10" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3300,13 +3455,12 @@ + } + } + }, +- "node_modules/@radix-ui/react-select": { +- "version": "2.3.7", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.3.7.tgz", +- "integrity": "sha512-WFGImkmbzcfxeIwq/+4HvRN0pizBwbwQUED4I13ezQsDdfl38ZntN6TmR8XaSzPBqoCToe8rF75j6NPNDSzhbg==", ++ "node_modules/@radix-ui/react-menu": { ++ "version": "2.1.24", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.24.tgz", ++ "integrity": "sha512-uW7RVuU6Lp/ZtfeY4b3kL32zccgEWvPv1+cf17ubYzHa9cL8AHokmk36cG/XEiH/smbQvumnieXX9j/e9RqJWA==", + "license": "MIT", + "dependencies": { +- "@radix-ui/number": "1.1.3", + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-collection": "1.1.15", + "@radix-ui/react-compose-refs": "1.1.5", +@@ -3320,12 +3474,9 @@ + "@radix-ui/react-portal": "1.1.17", + "@radix-ui/react-presence": "1.1.10", + "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-roving-focus": "1.1.19", + "@radix-ui/react-slot": "1.3.3", + "@radix-ui/react-use-callback-ref": "1.1.4", +- "@radix-ui/react-use-controllable-state": "1.2.6", +- "@radix-ui/react-use-layout-effect": "1.1.4", +- "@radix-ui/react-use-previous": "1.1.4", +- "@radix-ui/react-visually-hidden": "1.2.11", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.7.2" + }, +@@ -3344,13 +3495,22 @@ + } + } + }, +- "node_modules/@radix-ui/react-separator": { +- "version": "1.1.15", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.15.tgz", +- "integrity": "sha512-jOLO4lssEzWpoDu7G+Ze4VjwMRUBt291pnZD0gmalREZipnTX3wadQo7Fy48GCTfe14/YRN6rw/rOJqrE85Wxw==", +- "license": "MIT", +- "dependencies": { +- "@radix-ui/react-primitive": "2.1.10" ++ "node_modules/@radix-ui/react-menubar": { ++ "version": "1.1.24", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.24.tgz", ++ "integrity": "sha512-eeVs0vf7cuqXaM0qLQCPcufImiJNVBXdJDLu7ZGYl2732UH23Qat/foNGrr6vYV3/DdTsBqASoggUFgH14OcZA==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-collection": "1.1.15", ++ "@radix-ui/react-compose-refs": "1.1.5", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-direction": "1.1.4", ++ "@radix-ui/react-id": "1.1.4", ++ "@radix-ui/react-menu": "2.1.24", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-roving-focus": "1.1.19", ++ "@radix-ui/react-use-controllable-state": "1.2.6" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3367,23 +3527,26 @@ + } + } + }, +- "node_modules/@radix-ui/react-slider": { +- "version": "1.4.7", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.4.7.tgz", +- "integrity": "sha512-mTSLf1GC/C0moWjTbvCM6Qn/gBjvlFt1azuWF2v7MN5C3Zq2U2J2lN3ZEYkpujuOU5Ro7A28wkviSxaKnG0BYg==", ++ "node_modules/@radix-ui/react-navigation-menu": { ++ "version": "1.2.22", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.22.tgz", ++ "integrity": "sha512-ou7iLEJ+yrhQndkkA4U21XIdS/CS45F4iXIkTZcb6/Ne9EMsOuDudVmCwmDnfFZZ+y1FZqXRNSIgBy+YMvZVZg==", + "license": "MIT", + "dependencies": { +- "@radix-ui/number": "1.1.3", + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-collection": "1.1.15", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", + "@radix-ui/react-direction": "1.1.4", ++ "@radix-ui/react-dismissable-layer": "1.1.19", ++ "@radix-ui/react-id": "1.1.4", ++ "@radix-ui/react-presence": "1.1.10", + "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-use-callback-ref": "1.1.4", + "@radix-ui/react-use-controllable-state": "1.2.6", + "@radix-ui/react-use-layout-effect": "1.1.4", + "@radix-ui/react-use-previous": "1.1.4", +- "@radix-ui/react-use-size": "1.1.4" ++ "@radix-ui/react-visually-hidden": "1.2.11" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3400,36 +3563,54 @@ + } + } + }, +- "node_modules/@radix-ui/react-slot": { +- "version": "1.3.3", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.3.tgz", +- "integrity": "sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==", ++ "node_modules/@radix-ui/react-one-time-password-field": { ++ "version": "0.1.16", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-one-time-password-field/-/react-one-time-password-field-0.1.16.tgz", ++ "integrity": "sha512-Tj9P6ntAJEw52oq/F0AGknXR4XncxEt7XU47O3xJQOiWfLzEy3d9gtgKfvjSzGxzHkfL+VzvxGu2KTFsloJqXw==", + "license": "MIT", + "dependencies": { +- "@radix-ui/react-compose-refs": "1.1.5" ++ "@radix-ui/number": "1.1.3", ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-collection": "1.1.15", ++ "@radix-ui/react-compose-refs": "1.1.5", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-direction": "1.1.4", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-roving-focus": "1.1.19", ++ "@radix-ui/react-use-controllable-state": "1.2.6", ++ "@radix-ui/react-use-effect-event": "0.0.5", ++ "@radix-ui/react-use-is-hydrated": "0.1.3", ++ "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true + } + } + }, +- "node_modules/@radix-ui/react-switch": { +- "version": "1.3.7", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.3.7.tgz", +- "integrity": "sha512-48tB/4dn2UVLBCYhTu9AuR63IHl73l/qLbLgxd86noTUor4/K4LFDAcYjK+isP5313qxaFpjPVogE7+Y0/V3Kw==", ++ "node_modules/@radix-ui/react-password-toggle-field": { ++ "version": "0.1.11", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-password-toggle-field/-/react-password-toggle-field-0.1.11.tgz", ++ "integrity": "sha512-4gvFnmDXu3dgj21CqsufzIameRvlRd4SBqaWhcrlrNhRo0Y5i/49AmRJYe1fdAM3G2VNBbmin4b0D6cdQocwgw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-primitive": "2.1.10", + "@radix-ui/react-use-controllable-state": "1.2.6", +- "@radix-ui/react-use-size": "1.1.4" ++ "@radix-ui/react-use-effect-event": "0.0.5", ++ "@radix-ui/react-use-is-hydrated": "0.1.3" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3446,20 +3627,27 @@ + } + } + }, +- "node_modules/@radix-ui/react-tabs": { +- "version": "1.1.21", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.21.tgz", +- "integrity": "sha512-UKxJlZid7FVtsk/WTxj4i4uSEgj2Au+KBbS7SQyTlzMhhn+86Cz3tISZdTa87bfEfcuvZezf2ZsxD4xuEKtkog==", ++ "node_modules/@radix-ui/react-popover": { ++ "version": "1.1.23", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.23.tgz", ++ "integrity": "sha512-mw58MrBlyHWFisTOYignD0vf/3gdcgAR+9of1s9G/38CbFiUwH1nCDkc0AUM9IrXFgN5Ue8n45j9WCgyM1sbiQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-direction": "1.1.4", ++ "@radix-ui/react-dismissable-layer": "1.1.19", ++ "@radix-ui/react-focus-guards": "1.1.6", ++ "@radix-ui/react-focus-scope": "1.1.16", + "@radix-ui/react-id": "1.1.4", ++ "@radix-ui/react-popper": "1.3.7", ++ "@radix-ui/react-portal": "1.1.17", + "@radix-ui/react-presence": "1.1.10", + "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-roving-focus": "1.1.19", +- "@radix-ui/react-use-controllable-state": "1.2.6" ++ "@radix-ui/react-slot": "1.3.3", ++ "@radix-ui/react-use-controllable-state": "1.2.6", ++ "aria-hidden": "^1.2.4", ++ "react-remove-scroll": "^2.7.2" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3476,24 +3664,147 @@ + } + } + }, +- "node_modules/@radix-ui/react-toast": { +- "version": "1.2.23", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.23.tgz", +- "integrity": "sha512-ofhyAsYaocRGOs/n0XWdUOSVzEAG6BfrMVM8z0c0kLEWY38w/0WuMFPTJP/HVaZPYkMvHZoKIIhNcjbTCBILPg==", ++ "node_modules/@radix-ui/react-popper": { ++ "version": "1.3.7", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.3.7.tgz", ++ "integrity": "sha512-UsJrrd7w4wuKKTdvd/DNERVlwSlUcyXzjhyDwBk+3aPOsCjOY6ZSbxuw8E6lZTjjfP8Cpd0J8VVkrYUWyGYXyg==", ++ "license": "MIT", ++ "dependencies": { ++ "@floating-ui/react-dom": "^2.0.0", ++ "@radix-ui/react-arrow": "1.1.15", ++ "@radix-ui/react-compose-refs": "1.1.5", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-use-callback-ref": "1.1.4", ++ "@radix-ui/react-use-layout-effect": "1.1.4", ++ "@radix-ui/react-use-rect": "1.1.4", ++ "@radix-ui/react-use-size": "1.1.4", ++ "@radix-ui/rect": "1.1.3" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-portal": { ++ "version": "1.1.17", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.17.tgz", ++ "integrity": "sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-use-layout-effect": "1.1.4" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-presence": { ++ "version": "1.1.10", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.10.tgz", ++ "integrity": "sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/react-use-layout-effect": "1.1.4" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-primitive": { ++ "version": "2.1.10", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.10.tgz", ++ "integrity": "sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/react-slot": "1.3.3" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-progress": { ++ "version": "1.1.16", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.16.tgz", ++ "integrity": "sha512-5XnomAsoZZCY+KNTxbIghpGqPruZvKFNlvcAljVAOdDRDsH4/OZQxhtwo5wdtoDM5R6MhJBb2sPnDuRFep3lzg==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-primitive": "2.1.10" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-radio-group": { ++ "version": "1.4.7", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.4.7.tgz", ++ "integrity": "sha512-cgYFEkntCxppHZgtSZ+7vh0wbZQ+IC7PPMw8DSnRG27B6kDd32/Zw0OJt7dGDigCoprMuWHjg2PvUn3PYvPFoQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-collection": "1.1.15", + "@radix-ui/react-compose-refs": "1.1.5", + "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-dismissable-layer": "1.1.19", +- "@radix-ui/react-portal": "1.1.17", ++ "@radix-ui/react-direction": "1.1.4", + "@radix-ui/react-presence": "1.1.10", + "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-callback-ref": "1.1.4", ++ "@radix-ui/react-roving-focus": "1.1.19", + "@radix-ui/react-use-controllable-state": "1.2.6", +- "@radix-ui/react-use-layout-effect": "1.1.4", +- "@radix-ui/react-visually-hidden": "1.2.11" ++ "@radix-ui/react-use-size": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3510,15 +3821,23 @@ + } + } + }, +- "node_modules/@radix-ui/react-toggle": { +- "version": "1.1.18", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.18.tgz", +- "integrity": "sha512-7lonPlKfSacd20GlOBx2ltuVKz9oqWYZz+oMQyOltw6t1y2nyftj2ZmwwUHYn49kqfDWcp8dNZm5NgV+5Z+mug==", ++ "node_modules/@radix-ui/react-roving-focus": { ++ "version": "1.1.19", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.19.tgz", ++ "integrity": "sha512-V9jI6hDjT7l3jsCQD9bLNvDLM3tH/gdbOTp7Tefp3hbbgCGQoK7tUvrWiRlcoBHIZ809ElXwNQwVo0B98LuTXQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-collection": "1.1.15", ++ "@radix-ui/react-compose-refs": "1.1.5", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-direction": "1.1.4", ++ "@radix-ui/react-id": "1.1.4", + "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-use-controllable-state": "1.2.6" ++ "@radix-ui/react-use-callback-ref": "1.1.4", ++ "@radix-ui/react-use-controllable-state": "1.2.6", ++ "@radix-ui/react-use-is-hydrated": "0.1.3", ++ "@radix-ui/react-use-layout-effect": "1.1.4" + }, + "peerDependencies": { + "@types/react": "*", +@@ -3535,316 +3854,1241 @@ + } + } + }, +- "node_modules/@radix-ui/react-toggle-group": { +- "version": "1.1.19", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.19.tgz", +- "integrity": "sha512-OtnwuSVjd1Ofi+AdnvhsjQdyuhCDwYs1w9RyB5BN/OavXOVQo42SYqQjwUnbPnaiPFBpQ9aX70dWeee+v2oBLA==", ++ "node_modules/@radix-ui/react-scroll-area": { ++ "version": "1.2.18", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.18.tgz", ++ "integrity": "sha512-Zn5Cd171wxsO3Dfg8HaW6RifTb9CYTKQJHs/G4+LN1GfmJpaQMZQyQxMprVPHpaz7QY4l9BxK2JwQuzHsXC8nA==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/number": "1.1.3", ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-compose-refs": "1.1.5", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-direction": "1.1.4", ++ "@radix-ui/react-presence": "1.1.10", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-use-callback-ref": "1.1.4", ++ "@radix-ui/react-use-layout-effect": "1.1.4" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-select": { ++ "version": "2.3.7", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.3.7.tgz", ++ "integrity": "sha512-WFGImkmbzcfxeIwq/+4HvRN0pizBwbwQUED4I13ezQsDdfl38ZntN6TmR8XaSzPBqoCToe8rF75j6NPNDSzhbg==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/number": "1.1.3", ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-collection": "1.1.15", ++ "@radix-ui/react-compose-refs": "1.1.5", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-direction": "1.1.4", ++ "@radix-ui/react-dismissable-layer": "1.1.19", ++ "@radix-ui/react-focus-guards": "1.1.6", ++ "@radix-ui/react-focus-scope": "1.1.16", ++ "@radix-ui/react-id": "1.1.4", ++ "@radix-ui/react-popper": "1.3.7", ++ "@radix-ui/react-portal": "1.1.17", ++ "@radix-ui/react-presence": "1.1.10", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-slot": "1.3.3", ++ "@radix-ui/react-use-callback-ref": "1.1.4", ++ "@radix-ui/react-use-controllable-state": "1.2.6", ++ "@radix-ui/react-use-layout-effect": "1.1.4", ++ "@radix-ui/react-use-previous": "1.1.4", ++ "@radix-ui/react-visually-hidden": "1.2.11", ++ "aria-hidden": "^1.2.4", ++ "react-remove-scroll": "^2.7.2" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-separator": { ++ "version": "1.1.15", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.15.tgz", ++ "integrity": "sha512-jOLO4lssEzWpoDu7G+Ze4VjwMRUBt291pnZD0gmalREZipnTX3wadQo7Fy48GCTfe14/YRN6rw/rOJqrE85Wxw==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/react-primitive": "2.1.10" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-slider": { ++ "version": "1.4.7", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.4.7.tgz", ++ "integrity": "sha512-mTSLf1GC/C0moWjTbvCM6Qn/gBjvlFt1azuWF2v7MN5C3Zq2U2J2lN3ZEYkpujuOU5Ro7A28wkviSxaKnG0BYg==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/number": "1.1.3", ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-collection": "1.1.15", ++ "@radix-ui/react-compose-refs": "1.1.5", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-direction": "1.1.4", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-use-controllable-state": "1.2.6", ++ "@radix-ui/react-use-layout-effect": "1.1.4", ++ "@radix-ui/react-use-previous": "1.1.4", ++ "@radix-ui/react-use-size": "1.1.4" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-slot": { ++ "version": "1.3.3", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.3.3.tgz", ++ "integrity": "sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/react-compose-refs": "1.1.5" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-switch": { ++ "version": "1.3.7", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.3.7.tgz", ++ "integrity": "sha512-48tB/4dn2UVLBCYhTu9AuR63IHl73l/qLbLgxd86noTUor4/K4LFDAcYjK+isP5313qxaFpjPVogE7+Y0/V3Kw==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-compose-refs": "1.1.5", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-use-controllable-state": "1.2.6", ++ "@radix-ui/react-use-size": "1.1.4" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-tabs": { ++ "version": "1.1.21", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.21.tgz", ++ "integrity": "sha512-UKxJlZid7FVtsk/WTxj4i4uSEgj2Au+KBbS7SQyTlzMhhn+86Cz3tISZdTa87bfEfcuvZezf2ZsxD4xuEKtkog==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-direction": "1.1.4", ++ "@radix-ui/react-id": "1.1.4", ++ "@radix-ui/react-presence": "1.1.10", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-roving-focus": "1.1.19", ++ "@radix-ui/react-use-controllable-state": "1.2.6" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-toast": { ++ "version": "1.2.23", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.23.tgz", ++ "integrity": "sha512-ofhyAsYaocRGOs/n0XWdUOSVzEAG6BfrMVM8z0c0kLEWY38w/0WuMFPTJP/HVaZPYkMvHZoKIIhNcjbTCBILPg==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-collection": "1.1.15", ++ "@radix-ui/react-compose-refs": "1.1.5", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-dismissable-layer": "1.1.19", ++ "@radix-ui/react-portal": "1.1.17", ++ "@radix-ui/react-presence": "1.1.10", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-use-callback-ref": "1.1.4", ++ "@radix-ui/react-use-controllable-state": "1.2.6", ++ "@radix-ui/react-use-layout-effect": "1.1.4", ++ "@radix-ui/react-visually-hidden": "1.2.11" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-toggle": { ++ "version": "1.1.18", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.18.tgz", ++ "integrity": "sha512-7lonPlKfSacd20GlOBx2ltuVKz9oqWYZz+oMQyOltw6t1y2nyftj2ZmwwUHYn49kqfDWcp8dNZm5NgV+5Z+mug==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-use-controllable-state": "1.2.6" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-toggle-group": { ++ "version": "1.1.19", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.19.tgz", ++ "integrity": "sha512-OtnwuSVjd1Ofi+AdnvhsjQdyuhCDwYs1w9RyB5BN/OavXOVQo42SYqQjwUnbPnaiPFBpQ9aX70dWeee+v2oBLA==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-direction": "1.1.4", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-roving-focus": "1.1.19", ++ "@radix-ui/react-toggle": "1.1.18", ++ "@radix-ui/react-use-controllable-state": "1.2.6" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-toolbar": { ++ "version": "1.1.19", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.1.19.tgz", ++ "integrity": "sha512-Ph0IvtYw4VB12ZnZg+YtrGs8yJQsnizwo/zu0R4Y/nWugtJzA7Pg1eWeuDR9+LSqn+xjamss+UOSOJJJ4gx8jw==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-direction": "1.1.4", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-roving-focus": "1.1.19", ++ "@radix-ui/react-separator": "1.1.15", ++ "@radix-ui/react-toggle-group": "1.1.19" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-tooltip": { ++ "version": "1.2.16", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.16.tgz", ++ "integrity": "sha512-6EamKFRRnlpdadndbZ6LMwycfwkwPte1B42hs6QA0gYhjaOKqW4PZ4pjaW9UrlDX5eVt/OjncE7BFTPL5nmZhg==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-compose-refs": "1.1.5", ++ "@radix-ui/react-context": "1.2.2", ++ "@radix-ui/react-dismissable-layer": "1.1.19", ++ "@radix-ui/react-id": "1.1.4", ++ "@radix-ui/react-popper": "1.3.7", ++ "@radix-ui/react-portal": "1.1.17", ++ "@radix-ui/react-presence": "1.1.10", ++ "@radix-ui/react-primitive": "2.1.10", ++ "@radix-ui/react-slot": "1.3.3", ++ "@radix-ui/react-use-controllable-state": "1.2.6", ++ "@radix-ui/react-use-layout-effect": "1.1.4", ++ "@radix-ui/react-visually-hidden": "1.2.11" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-use-callback-ref": { ++ "version": "1.1.4", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.4.tgz", ++ "integrity": "sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==", ++ "license": "MIT", ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-use-controllable-state": { ++ "version": "1.2.6", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.6.tgz", ++ "integrity": "sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/primitive": "1.1.7", ++ "@radix-ui/react-use-effect-event": "0.0.5", ++ "@radix-ui/react-use-layout-effect": "1.1.4" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-use-effect-event": { ++ "version": "0.0.5", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.5.tgz", ++ "integrity": "sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/react-use-layout-effect": "1.1.4" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-use-escape-keydown": { ++ "version": "1.1.5", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.5.tgz", ++ "integrity": "sha512-ge3ipobwSXTj4JyVtswQ7qZj0ZHdtbGuOno/LrgAAeSxtsJ6Vs4Gz5IkPH2bmqpjcLUFoqGhA/mueuIf63UXlA==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/react-use-callback-ref": "1.1.4" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-use-is-hydrated": { ++ "version": "0.1.3", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.3.tgz", ++ "integrity": "sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw==", ++ "license": "MIT", ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-use-layout-effect": { ++ "version": "1.1.4", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.4.tgz", ++ "integrity": "sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==", ++ "license": "MIT", ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-use-previous": { ++ "version": "1.1.4", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.4.tgz", ++ "integrity": "sha512-XoSLhbRbqxFtgJoi2fNHA3C6pDlY34x508vUpUGoFZfvePfHXHbE1lC4FYFMnJWgiCRroSTw6fOsXQoVS9RwZg==", ++ "license": "MIT", ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-use-rect": { ++ "version": "1.1.4", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.4.tgz", ++ "integrity": "sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/rect": "1.1.3" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/react-use-size": { ++ "version": "1.1.4", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.4.tgz", ++ "integrity": "sha512-D3anSY15EJoxrihpsXI6SMrmmonnQtR2ni7arO+Lfdg3O95b9hNXxONk8jA5C8ANdF/h5HMAxejgs8PWJ6rlhw==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/react-use-layout-effect": "1.1.4" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ } + } + }, -+ "node_modules/@opentelemetry/api": { -+ "version": "1.9.1", -+ "resolved": "https://sfw.security.sentry.io/npm/@opentelemetry/api/-/api-1.9.1.tgz", -+ "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", ++ "node_modules/@radix-ui/react-visually-hidden": { ++ "version": "1.2.11", ++ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.11.tgz", ++ "integrity": "sha512-NFS86RYYZb4/exihaESBGOpMJFz8MGLAfu3mOBSGByVnVPC9JPASfYubxd/8KbkQK0sYAv8lVQDEQukDX/qXvQ==", ++ "license": "MIT", ++ "dependencies": { ++ "@radix-ui/react-primitive": "2.1.10" ++ }, ++ "peerDependencies": { ++ "@types/react": "*", ++ "@types/react-dom": "*", ++ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", ++ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ }, ++ "peerDependenciesMeta": { ++ "@types/react": { ++ "optional": true ++ }, ++ "@types/react-dom": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@radix-ui/rect": { ++ "version": "1.1.3", ++ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.3.tgz", ++ "integrity": "sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw==", ++ "license": "MIT" ++ }, ++ "node_modules/@react-aria/focus": { ++ "version": "3.22.1", ++ "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.22.1.tgz", ++ "integrity": "sha512-CPxtkyrBi/HYY5P3lE/57sQ6qfa0lN8E55TOm89H0kNGv0lKt+/0zP7lWERzBjRr5IxBVrQX4gFEowBN52LPaA==", + "license": "Apache-2.0", -+ "engines": { -+ "node": ">=8.0.0" - } - }, - "node_modules/@oxlint/binding-android-arm-eabi": { -@@ -3845,6 +4093,664 @@ - "license": "Apache-2.0", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" ++ "dependencies": { ++ "@swc/helpers": "^0.5.0", ++ "react-aria": "^3.48.0" ++ }, ++ "peerDependencies": { ++ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", ++ "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" ++ } ++ }, ++ "node_modules/@react-aria/interactions": { ++ "version": "3.28.1", ++ "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.28.1.tgz", ++ "integrity": "sha512-Bqb+HrD5I5MHS2SKBhISYqo2SW8Y2dfzgF/Y1lIJq7xqLxheo9vzxPGEHhz+XzkgGfoqEJx8A6a3C7uiqS3HWA==", ++ "license": "Apache-2.0", ++ "dependencies": { ++ "@react-types/shared": "^3.34.0", ++ "@swc/helpers": "^0.5.0", ++ "react-aria": "^3.48.0" ++ }, ++ "peerDependencies": { ++ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", ++ "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" ++ } ++ }, ++ "node_modules/@react-types/shared": { ++ "version": "3.36.1", ++ "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.36.1.tgz", ++ "integrity": "sha512-AzsuD9OfxTOZMMvTRhlN3oHBwOmFN7tDh27LzqmHt4+uOgPhJT7ZM7/kVs/8/o0WxayMUIk3hBmCFRHv1FUoag==", ++ "license": "Apache-2.0", ++ "peerDependencies": { ++ "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@rollup/plugin-commonjs": { @@ -1143,253 +3781,482 @@ index 0000000..0000000 100644 + ] + }, + "node_modules/@sentry/browser": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/browser/-/browser-11.0.0-rc.0.tgz", -+ "integrity": "sha512-S/PSQvvoI0vtwJZt1jUMUJau4cxMH1a+rN8Ul5KOvDHP5P8tGkB5fl7GtHVchlil8JPp5xd4bp7PyFHPkvAPPw==", -+ "license": "MIT", -+ "dependencies": { -+ "@sentry/browser-utils": "11.0.0-rc.0", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/browser/-/browser-11.0.0.tgz", ++ "integrity": "sha512-a09jUpx4OBebmY0XLYXLhfvkCIken8xoncjmOmbPIa3ibUHI6ZJVyh3jAzMu56LY9xfJRV5bOfp92yf41Yr6dQ==", + "license": "MIT", + "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-direction": "1.1.4", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-roving-focus": "1.1.19", +- "@radix-ui/react-toggle": "1.1.18", +- "@radix-ui/react-use-controllable-state": "1.2.6" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ "@sentry/browser-utils": "11.0.0", + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0", -+ "@sentry/feedback": "11.0.0-rc.0", -+ "@sentry/replay": "11.0.0-rc.0", -+ "@sentry/replay-canvas": "11.0.0-rc.0" -+ }, ++ "@sentry/core": "11.0.0", ++ "@sentry/feedback": "11.0.0", ++ "@sentry/replay": "11.0.0", ++ "@sentry/replay-canvas": "11.0.0" + }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@radix-ui/react-toolbar": { +- "version": "1.1.19", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.1.19.tgz", +- "integrity": "sha512-Ph0IvtYw4VB12ZnZg+YtrGs8yJQsnizwo/zu0R4Y/nWugtJzA7Pg1eWeuDR9+LSqn+xjamss+UOSOJJJ4gx8jw==", + "node_modules/@sentry/browser-utils": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/browser-utils/-/browser-utils-11.0.0-rc.0.tgz", -+ "integrity": "sha512-Mxate9W4UEkx8Ez+78ygWdxB3KFMVjwXFSd5dwXjHl/Bv/+t375l8JCV1vW5IQ/V5qQBWi/ess/IA4Rq7pmQjQ==", -+ "license": "MIT", -+ "dependencies": { ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/browser-utils/-/browser-utils-11.0.0.tgz", ++ "integrity": "sha512-ZvGyfDoVeSuaAF78vSeYOFcibUCpQfYlUVpqE+B0RANzoSCBg3JimRa+cDYB/rq36PjRwINk4u2viK2JdO320w==", + "license": "MIT", + "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-direction": "1.1.4", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-roving-focus": "1.1.19", +- "@radix-ui/react-separator": "1.1.15", +- "@radix-ui/react-toggle-group": "1.1.19" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0", ++ "@sentry/core": "11.0.0", + "web-vitals": "^6.1.1" -+ }, + }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@radix-ui/react-tooltip": { +- "version": "1.2.16", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.16.tgz", +- "integrity": "sha512-6EamKFRRnlpdadndbZ6LMwycfwkwPte1B42hs6QA0gYhjaOKqW4PZ4pjaW9UrlDX5eVt/OjncE7BFTPL5nmZhg==", + "node_modules/@sentry/bundler-plugins": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/bundler-plugins/-/bundler-plugins-11.0.0-rc.0.tgz", -+ "integrity": "sha512-mfRtTo7MNMgAghHsTzcRV5XwdpV+YqdqA4OGgOSRqLEY5H1jxfO8j+orEjUvLk8pCgR4Y1cORsXKqpVXI4nh3w==", -+ "license": "MIT", -+ "dependencies": { ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/bundler-plugins/-/bundler-plugins-11.0.0.tgz", ++ "integrity": "sha512-Oe4/8CbsYrqdjTt91JFMBQza59IWUfSwPrlHGbbJT+qVCyebX2bykxv3mfa6Ty/Gmt8+gva/DI6Kjcyb9EgXBg==", + "license": "MIT", + "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-compose-refs": "1.1.5", +- "@radix-ui/react-context": "1.2.2", +- "@radix-ui/react-dismissable-layer": "1.1.19", +- "@radix-ui/react-id": "1.1.4", +- "@radix-ui/react-popper": "1.3.7", +- "@radix-ui/react-portal": "1.1.17", +- "@radix-ui/react-presence": "1.1.10", +- "@radix-ui/react-primitive": "2.1.10", +- "@radix-ui/react-slot": "1.3.3", +- "@radix-ui/react-use-controllable-state": "1.2.6", +- "@radix-ui/react-use-layout-effect": "1.1.4", +- "@radix-ui/react-visually-hidden": "1.2.11" + "@babel/core": "^7.18.5", -+ "@sentry/core": "11.0.0-rc.0", ++ "@sentry/core": "11.0.0", + "dotenv": "^17.4.2", + "glob": "^13.0.6", + "magic-string": "~0.30.8", ++ "oxc-parser": "^0.143.0", + "sentry": "^0.44.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ }, -+ "peerDependencies": { + }, + "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "rollup": ">=3.2.0", -+ "webpack": ">=5.0.0" -+ }, -+ "peerDependenciesMeta": { ++ "webpack": ">=5.1.0" + }, + "peerDependenciesMeta": { +- "@types/react": { + "rollup": { -+ "optional": true -+ }, + "optional": true + }, +- "@types/react-dom": { + "webpack": { -+ "optional": true -+ } -+ } -+ }, + "optional": true + } + } + }, +- "node_modules/@radix-ui/react-use-callback-ref": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.4.tgz", +- "integrity": "sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==", + "node_modules/@sentry/conventions": { + "version": "0.23.0", + "resolved": "https://sfw.security.sentry.io/npm/@sentry/conventions/-/conventions-0.23.0.tgz", + "integrity": "sha512-+Euyo7CNVecoOusgUnq27oV97oshifgceKfnGnuKfXrPUVWA/cisvii3E1rlvy2yBrKvl9K1gCEo1Jqog5zjEQ==", -+ "license": "MIT", + "license": "MIT", +- "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- } + "engines": { + "node": ">=14" -+ } -+ }, + } + }, +- "node_modules/@radix-ui/react-use-controllable-state": { +- "version": "1.2.6", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.6.tgz", +- "integrity": "sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ==", + "node_modules/@sentry/core": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/core/-/core-11.0.0-rc.0.tgz", -+ "integrity": "sha512-6KXLKGq1YgysUIzeD0cYQH/8Tg62V+UJV1d9FVNvKb0HnRgbiO9VWCCm1wGyYSENdGPdSa9zOOnk5ZC7WxLaAw==", -+ "license": "MIT", -+ "dependencies": { ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/core/-/core-11.0.0.tgz", ++ "integrity": "sha512-Sdmg21POKmNwZDz8pH/2FtilWeryh3yxhRxbfA1ph8SnX2DkXoqX6G+uXyjCSYagW2pefVklmSNeWHmUlSqioA==", + "license": "MIT", + "dependencies": { +- "@radix-ui/primitive": "1.1.7", +- "@radix-ui/react-use-effect-event": "0.0.5", +- "@radix-ui/react-use-layout-effect": "1.1.4" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "@sentry/conventions": "^0.23.0" -+ }, + }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- } + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@radix-ui/react-use-effect-event": { +- "version": "0.0.5", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.5.tgz", +- "integrity": "sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==", + "node_modules/@sentry/feedback": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/feedback/-/feedback-11.0.0-rc.0.tgz", -+ "integrity": "sha512-jb/xd0kxtYM8XVAZtsMxayv27Agv4aWHBumnVT0jxUSNj2eoX5Tfz0PsinV7lcqITZ8HaLeYkUQcll4ANqjX5w==", -+ "license": "MIT", -+ "dependencies": { -+ "@sentry/core": "11.0.0-rc.0" -+ }, ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/feedback/-/feedback-11.0.0.tgz", ++ "integrity": "sha512-ZdUE6qSfMH4zturLHxg8idfI8cA+JdfrisqUQ6hE6MKaIAAZysNIPvvFysE2WQDjFbj3puS1iZm0jg0ym7kA5g==", + "license": "MIT", + "dependencies": { +- "@radix-ui/react-use-layout-effect": "1.1.4" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ "@sentry/core": "11.0.0" + }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- } + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@radix-ui/react-use-escape-keydown": { +- "version": "1.1.5", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.5.tgz", +- "integrity": "sha512-ge3ipobwSXTj4JyVtswQ7qZj0ZHdtbGuOno/LrgAAeSxtsJ6Vs4Gz5IkPH2bmqpjcLUFoqGhA/mueuIf63UXlA==", + "node_modules/@sentry/nextjs": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/nextjs/-/nextjs-11.0.0-rc.0.tgz", -+ "integrity": "sha512-FCl0MkBVbtHg0m+YMgrYrsjskSbaiBEYlbtClYB2hgfd8d2yNH52xs4V74Z2XnF9tA38Mw7fuDrBIw5Z85jX9g==", -+ "license": "MIT", -+ "dependencies": { ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/nextjs/-/nextjs-11.0.0.tgz", ++ "integrity": "sha512-ZiJrzm0hKf9plrRklaLU1QEGpXwYCPe18AzMEhfSNkorP3qJdi5X9xnZV52ap6zB4ypPru88aXUQtDGBdpl4cQ==", + "license": "MIT", + "dependencies": { +- "@radix-ui/react-use-callback-ref": "1.1.4" + "@opentelemetry/api": "^1.9.1", + "@rollup/plugin-commonjs": "28.0.1", -+ "@sentry/browser-utils": "11.0.0-rc.0", -+ "@sentry/bundler-plugins": "11.0.0-rc.0", ++ "@sentry/browser-utils": "11.0.0", ++ "@sentry/bundler-plugins": "11.0.0", + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0", -+ "@sentry/node": "11.0.0-rc.0", -+ "@sentry/opentelemetry": "11.0.0-rc.0", -+ "@sentry/react": "11.0.0-rc.0", -+ "@sentry/server-runtime-injection": "11.0.0-rc.0", -+ "@sentry/server-utils": "11.0.0-rc.0", -+ "@sentry/vercel-edge": "11.0.0-rc.0", ++ "@sentry/core": "11.0.0", ++ "@sentry/node": "11.0.0", ++ "@sentry/opentelemetry": "11.0.0", ++ "@sentry/react": "11.0.0", ++ "@sentry/server-runtime-injection": "11.0.0", ++ "@sentry/server-utils": "11.0.0", ++ "@sentry/vercel-edge": "11.0.0", + "rollup": "^4.60.3", + "stacktrace-parser": "^0.1.11" -+ }, + }, +- "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ }, -+ "peerDependencies": { + }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- } +- } +- }, +- "node_modules/@radix-ui/react-use-is-hydrated": { +- "version": "0.1.3", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.3.tgz", +- "integrity": "sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw==", +- "license": "MIT", + "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" +- }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- } + "next": "^14.0 || ^15.0.0-rc.0 || ^16.0.0-0" -+ } -+ }, + } + }, +- "node_modules/@radix-ui/react-use-layout-effect": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.4.tgz", +- "integrity": "sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==", + "node_modules/@sentry/node": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/node/-/node-11.0.0-rc.0.tgz", -+ "integrity": "sha512-hztnJEx8Fcyp0wNJgVbrgWIy9jgkefo7A3c7Y7r7wrCwCl5gKwzzo53XYOkY2lf/rjTLaJCG8b21VjHaFldOZw==", -+ "license": "MIT", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/node/-/node-11.0.0.tgz", ++ "integrity": "sha512-ZHk2wYvnKPfaq05YHnva/a6EzZDLTG0EStcWnQdjSae/OxluwCfOfMqwlsKxaY8KDUkyqokTCUPqJITZpUH1Jw==", + "license": "MIT", +- "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "dependencies": { + "@opentelemetry/api": "^1.9.1", -+ "@sentry/bundler-plugins": "11.0.0-rc.0", ++ "@sentry/bundler-plugins": "11.0.0", + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0", -+ "@sentry/opentelemetry": "11.0.0-rc.0", -+ "@sentry/server-runtime-injection": "11.0.0-rc.0", -+ "@sentry/server-utils": "11.0.0-rc.0" -+ }, ++ "@sentry/core": "11.0.0", ++ "@sentry/opentelemetry": "11.0.0", ++ "@sentry/server-runtime-injection": "11.0.0", ++ "@sentry/server-utils": "11.0.0" + }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- } + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@radix-ui/react-use-previous": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.4.tgz", +- "integrity": "sha512-XoSLhbRbqxFtgJoi2fNHA3C6pDlY34x508vUpUGoFZfvePfHXHbE1lC4FYFMnJWgiCRroSTw6fOsXQoVS9RwZg==", + "node_modules/@sentry/opentelemetry": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/opentelemetry/-/opentelemetry-11.0.0-rc.0.tgz", -+ "integrity": "sha512-28Yy+Qoo84Ckxu40f2sB/NE+J2uacVkT+rD/GnK3+ExZfW/o2nV7eotIwKUprhoHM1w8EaMQusjZAMTzHc4geQ==", -+ "license": "MIT", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/opentelemetry/-/opentelemetry-11.0.0.tgz", ++ "integrity": "sha512-m2EtgppTtN6MxW0dKA45aZMI/xoFZYi2I2cvTIenFGTGLfxyjk6+YCbg0Jf/wdUWoZjR0k6kBBBIbv+zpuvTOA==", + "license": "MIT", +- "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "dependencies": { + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0" -+ }, ++ "@sentry/core": "11.0.0" + }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- } + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0" -+ } -+ }, + } + }, +- "node_modules/@radix-ui/react-use-rect": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.4.tgz", +- "integrity": "sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ==", + "node_modules/@sentry/react": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/react/-/react-11.0.0-rc.0.tgz", -+ "integrity": "sha512-IsXgQ5E6DtIVBhoIxZqkZJqyDgFN8RJX/FrUUwDIDjSCXftK1SZnfPXxPWUE/vF9RBrF0UScqstvOKvJJkq1Mw==", -+ "license": "MIT", -+ "dependencies": { -+ "@sentry/browser": "11.0.0-rc.0", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/react/-/react-11.0.0.tgz", ++ "integrity": "sha512-YMF4t9659byD3rYZ9zjE5vdL3NUVFBEQfHzbMJf4kow7h7eyDdQi8GN4K1qsOFBim5C/7/ry0dkP1r4p7qtEWA==", + "license": "MIT", + "dependencies": { +- "@radix-ui/rect": "1.1.3" ++ "@sentry/browser": "11.0.0", + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0" ++ "@sentry/core": "11.0.0" + }, + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ }, -+ "peerDependencies": { + }, + "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "17.x || 18.x || 19.x", + "react-router": "6.x || 7.x || 8.x" -+ }, -+ "peerDependenciesMeta": { + }, + "peerDependenciesMeta": { +- "@types/react": { + "react-router": { -+ "optional": true -+ } -+ } -+ }, + "optional": true + } + } + }, +- "node_modules/@radix-ui/react-use-size": { +- "version": "1.1.4", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.4.tgz", +- "integrity": "sha512-D3anSY15EJoxrihpsXI6SMrmmonnQtR2ni7arO+Lfdg3O95b9hNXxONk8jA5C8ANdF/h5HMAxejgs8PWJ6rlhw==", + "node_modules/@sentry/replay": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/replay/-/replay-11.0.0-rc.0.tgz", -+ "integrity": "sha512-7TIGKTFc0dfmC7uGj4HZ4sRyk25ZuUdvMO8yY4gcflIZfZAE18USE1S9fM+QTmCMlbrPEXgni7Iw2ij4zsxMYQ==", -+ "license": "MIT", -+ "dependencies": { -+ "@sentry/browser-utils": "11.0.0-rc.0", -+ "@sentry/core": "11.0.0-rc.0" -+ }, ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/replay/-/replay-11.0.0.tgz", ++ "integrity": "sha512-4/36Iw288SaWEwLjhpLRjCjL2UmSNEyU0TvLrAlzRAoYdksneEe7iQTSe7WD257buSgop0m+lauGRHQf7fD9qg==", + "license": "MIT", + "dependencies": { +- "@radix-ui/react-use-layout-effect": "1.1.4" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ "@sentry/browser-utils": "11.0.0", ++ "@sentry/core": "11.0.0" + }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- } + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@radix-ui/react-visually-hidden": { +- "version": "1.2.11", +- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.11.tgz", +- "integrity": "sha512-NFS86RYYZb4/exihaESBGOpMJFz8MGLAfu3mOBSGByVnVPC9JPASfYubxd/8KbkQK0sYAv8lVQDEQukDX/qXvQ==", + "node_modules/@sentry/replay-canvas": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/replay-canvas/-/replay-canvas-11.0.0-rc.0.tgz", -+ "integrity": "sha512-7KSOyhmhRjlMg0NX4P+gNsgaT40uAWhJrI+3hsHxSU1dsvBdylhBzHM3/2Qie5QuFvrdBWqJefeQ5tFs7GCPoQ==", -+ "license": "MIT", -+ "dependencies": { -+ "@sentry/core": "11.0.0-rc.0", -+ "@sentry/replay": "11.0.0-rc.0" -+ }, ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/replay-canvas/-/replay-canvas-11.0.0.tgz", ++ "integrity": "sha512-cWAx4Fc+T36w4SwN0Ee35xVLrx+nt2kk2An3gKPqgRU0HwxA1w14fKAxcXfKlJcy/K7nnNMgerznvWKgBObenw==", + "license": "MIT", + "dependencies": { +- "@radix-ui/react-primitive": "2.1.10" +- }, +- "peerDependencies": { +- "@types/react": "*", +- "@types/react-dom": "*", +- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", +- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" ++ "@sentry/core": "11.0.0", ++ "@sentry/replay": "11.0.0" + }, +- "peerDependenciesMeta": { +- "@types/react": { +- "optional": true +- }, +- "@types/react-dom": { +- "optional": true +- } + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@radix-ui/rect": { +- "version": "1.1.3", +- "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.3.tgz", +- "integrity": "sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw==", +- "license": "MIT" +- }, +- "node_modules/@react-aria/focus": { +- "version": "3.22.1", +- "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.22.1.tgz", +- "integrity": "sha512-CPxtkyrBi/HYY5P3lE/57sQ6qfa0lN8E55TOm89H0kNGv0lKt+/0zP7lWERzBjRr5IxBVrQX4gFEowBN52LPaA==", +- "license": "Apache-2.0", + "node_modules/@sentry/server-runtime-injection": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/server-runtime-injection/-/server-runtime-injection-11.0.0-rc.0.tgz", -+ "integrity": "sha512-x8XppxyzDZxweoHlfsW0l12ghquvp79o2UNXOcXETRb+40ud+RF+YdPtnv4yvsrByXScPkNzKVdJSjxevJCcrA==", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/server-runtime-injection/-/server-runtime-injection-11.0.0.tgz", ++ "integrity": "sha512-AE39xdGbi8WmcB9LtITuvJkp+sYxkPAR+3lRG4MYrJLVQS+YeYfn/AaZdEXOhnOagdpozsDbpEneGJn6vD8p6Q==", + "license": "MIT", -+ "dependencies": { -+ "@sentry/core": "11.0.0-rc.0", -+ "@sentry/server-utils": "11.0.0-rc.0" -+ }, + "dependencies": { +- "@swc/helpers": "^0.5.0", +- "react-aria": "^3.48.0" ++ "@sentry/core": "11.0.0", ++ "@sentry/server-utils": "11.0.0" + }, +- "peerDependencies": { +- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", +- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@react-aria/interactions": { +- "version": "3.28.1", +- "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.28.1.tgz", +- "integrity": "sha512-Bqb+HrD5I5MHS2SKBhISYqo2SW8Y2dfzgF/Y1lIJq7xqLxheo9vzxPGEHhz+XzkgGfoqEJx8A6a3C7uiqS3HWA==", +- "license": "Apache-2.0", + "node_modules/@sentry/server-utils": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/server-utils/-/server-utils-11.0.0-rc.0.tgz", -+ "integrity": "sha512-0+nsGmRdz8U+U5Cbe52FVfsBztcSY8v7u37id3lsEOktZQi8uJRQShp7BgvD8+ReXEuoVK/L2w7LxzTdtmxQig==", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/server-utils/-/server-utils-11.0.0.tgz", ++ "integrity": "sha512-XlKDtLoNqOhI+TgCNywan/tFy0yMRzw5+8mdp96KNHtF/YwO9s6c7qZcBG0x8+XDyC0EoNXDlBPJOMEZo5lD4Q==", + "license": "MIT", -+ "dependencies": { + "dependencies": { +- "@react-types/shared": "^3.34.0", +- "@swc/helpers": "^0.5.0", +- "react-aria": "^3.48.0" + "@opentelemetry/api": "^1.9.1", + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0" -+ }, ++ "@sentry/core": "11.0.0" + }, +- "peerDependencies": { +- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", +- "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@react-types/shared": { +- "version": "3.36.1", +- "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.36.1.tgz", +- "integrity": "sha512-AzsuD9OfxTOZMMvTRhlN3oHBwOmFN7tDh27LzqmHt4+uOgPhJT7ZM7/kVs/8/o0WxayMUIk3hBmCFRHv1FUoag==", +- "license": "Apache-2.0", +- "peerDependencies": { +- "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + "node_modules/@sentry/vercel-edge": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/vercel-edge/-/vercel-edge-11.0.0-rc.0.tgz", -+ "integrity": "sha512-uUaF/6UZmtx9wGCaQKF5Y26HyOsdlb1KidnBJCJoqjpsXV5Zocg2k4xN7oPlSqVZ8ITmUAaVtTr5r696KKz40g==", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/vercel-edge/-/vercel-edge-11.0.0.tgz", ++ "integrity": "sha512-tcDbhQygLnTeU9KNBjO4xYiVt5LIx7zsV7ywKznun6hQc+oWnJYbWrEJd+4ERSN5n9S368rX7Q7CDAmb8ioj+g==", + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.9.1", -+ "@sentry/core": "11.0.0-rc.0", -+ "@sentry/server-utils": "11.0.0-rc.0" ++ "@sentry/core": "11.0.0", ++ "@sentry/server-utils": "11.0.0" + }, + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" } }, "node_modules/@shikijs/core": { -@@ -4033,7 +4939,7 @@ +@@ -4033,7 +5277,7 @@ }, "node_modules/@tailwindcss/oxide-android-arm64": { "version": "4.3.3", @@ -1398,7 +4265,7 @@ index 0000000..0000000 100644 "integrity": "sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==", "cpu": [ "arm64" -@@ -4067,7 +4973,7 @@ +@@ -4067,7 +5311,7 @@ }, "node_modules/@tailwindcss/oxide-darwin-x64": { "version": "4.3.3", @@ -1407,7 +4274,7 @@ index 0000000..0000000 100644 "integrity": "sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==", "cpu": [ "x64" -@@ -4084,7 +4990,7 @@ +@@ -4084,7 +5328,7 @@ }, "node_modules/@tailwindcss/oxide-freebsd-x64": { "version": "4.3.3", @@ -1416,7 +4283,7 @@ index 0000000..0000000 100644 "integrity": "sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==", "cpu": [ "x64" -@@ -4101,7 +5007,7 @@ +@@ -4101,7 +5345,7 @@ }, "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { "version": "4.3.3", @@ -1425,7 +4292,7 @@ index 0000000..0000000 100644 "integrity": "sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==", "cpu": [ "arm" -@@ -4118,7 +5024,7 @@ +@@ -4118,7 +5362,7 @@ }, "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { "version": "4.3.3", @@ -1434,7 +4301,7 @@ index 0000000..0000000 100644 "integrity": "sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==", "cpu": [ "arm64" -@@ -4138,7 +5044,7 @@ +@@ -4138,7 +5382,7 @@ }, "node_modules/@tailwindcss/oxide-linux-arm64-musl": { "version": "4.3.3", @@ -1443,7 +4310,7 @@ index 0000000..0000000 100644 "integrity": "sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==", "cpu": [ "arm64" -@@ -4158,7 +5064,7 @@ +@@ -4158,7 +5402,7 @@ }, "node_modules/@tailwindcss/oxide-linux-x64-gnu": { "version": "4.3.3", @@ -1452,7 +4319,7 @@ index 0000000..0000000 100644 "integrity": "sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==", "cpu": [ "x64" -@@ -4178,7 +5084,7 @@ +@@ -4178,7 +5422,7 @@ }, "node_modules/@tailwindcss/oxide-linux-x64-musl": { "version": "4.3.3", @@ -1461,7 +4328,7 @@ index 0000000..0000000 100644 "integrity": "sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==", "cpu": [ "x64" -@@ -4198,7 +5104,7 @@ +@@ -4198,7 +5442,7 @@ }, "node_modules/@tailwindcss/oxide-wasm32-wasi": { "version": "4.3.3", @@ -1470,7 +4337,7 @@ index 0000000..0000000 100644 "integrity": "sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==", "bundleDependencies": [ "@napi-rs/wasm-runtime", -@@ -4228,7 +5134,7 @@ +@@ -4228,7 +5472,7 @@ }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { "version": "4.3.3", @@ -1479,7 +4346,7 @@ index 0000000..0000000 100644 "integrity": "sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==", "cpu": [ "arm64" -@@ -4245,7 +5151,7 @@ +@@ -4245,7 +5489,7 @@ }, "node_modules/@tailwindcss/oxide-win32-x64-msvc": { "version": "4.3.3", @@ -1488,7 +4355,7 @@ index 0000000..0000000 100644 "integrity": "sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==", "cpu": [ "x64" -@@ -4684,7 +5590,7 @@ +@@ -4684,7 +5928,7 @@ }, "node_modules/@typescript/typescript-aix-ppc64": { "version": "7.0.2", @@ -1497,7 +4364,7 @@ index 0000000..0000000 100644 "integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==", "cpu": [ "ppc64" -@@ -4718,7 +5624,7 @@ +@@ -4718,7 +5962,7 @@ }, "node_modules/@typescript/typescript-darwin-x64": { "version": "7.0.2", @@ -1506,7 +4373,7 @@ index 0000000..0000000 100644 "integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==", "cpu": [ "x64" -@@ -4735,7 +5641,7 @@ +@@ -4735,7 +5979,7 @@ }, "node_modules/@typescript/typescript-freebsd-arm64": { "version": "7.0.2", @@ -1515,7 +4382,7 @@ index 0000000..0000000 100644 "integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==", "cpu": [ "arm64" -@@ -4752,7 +5658,7 @@ +@@ -4752,7 +5996,7 @@ }, "node_modules/@typescript/typescript-freebsd-x64": { "version": "7.0.2", @@ -1524,7 +4391,7 @@ index 0000000..0000000 100644 "integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==", "cpu": [ "x64" -@@ -4769,7 +5675,7 @@ +@@ -4769,7 +6013,7 @@ }, "node_modules/@typescript/typescript-linux-arm": { "version": "7.0.2", @@ -1533,7 +4400,7 @@ index 0000000..0000000 100644 "integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==", "cpu": [ "arm" -@@ -4786,7 +5692,7 @@ +@@ -4786,7 +6030,7 @@ }, "node_modules/@typescript/typescript-linux-arm64": { "version": "7.0.2", @@ -1542,7 +4409,7 @@ index 0000000..0000000 100644 "integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==", "cpu": [ "arm64" -@@ -4803,7 +5709,7 @@ +@@ -4803,7 +6047,7 @@ }, "node_modules/@typescript/typescript-linux-loong64": { "version": "7.0.2", @@ -1551,7 +4418,7 @@ index 0000000..0000000 100644 "integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==", "cpu": [ "loong64" -@@ -4820,7 +5726,7 @@ +@@ -4820,7 +6064,7 @@ }, "node_modules/@typescript/typescript-linux-mips64el": { "version": "7.0.2", @@ -1560,7 +4427,7 @@ index 0000000..0000000 100644 "integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==", "cpu": [ "mips64el" -@@ -4837,7 +5743,7 @@ +@@ -4837,7 +6081,7 @@ }, "node_modules/@typescript/typescript-linux-ppc64": { "version": "7.0.2", @@ -1569,7 +4436,7 @@ index 0000000..0000000 100644 "integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==", "cpu": [ "ppc64" -@@ -4854,7 +5760,7 @@ +@@ -4854,7 +6098,7 @@ }, "node_modules/@typescript/typescript-linux-riscv64": { "version": "7.0.2", @@ -1578,7 +4445,7 @@ index 0000000..0000000 100644 "integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==", "cpu": [ "riscv64" -@@ -4871,7 +5777,7 @@ +@@ -4871,7 +6115,7 @@ }, "node_modules/@typescript/typescript-linux-s390x": { "version": "7.0.2", @@ -1587,7 +4454,7 @@ index 0000000..0000000 100644 "integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==", "cpu": [ "s390x" -@@ -4888,7 +5794,7 @@ +@@ -4888,7 +6132,7 @@ }, "node_modules/@typescript/typescript-linux-x64": { "version": "7.0.2", @@ -1596,7 +4463,7 @@ index 0000000..0000000 100644 "integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==", "cpu": [ "x64" -@@ -4905,7 +5811,7 @@ +@@ -4905,7 +6149,7 @@ }, "node_modules/@typescript/typescript-netbsd-arm64": { "version": "7.0.2", @@ -1605,7 +4472,7 @@ index 0000000..0000000 100644 "integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==", "cpu": [ "arm64" -@@ -4922,7 +5828,7 @@ +@@ -4922,7 +6166,7 @@ }, "node_modules/@typescript/typescript-netbsd-x64": { "version": "7.0.2", @@ -1614,7 +4481,7 @@ index 0000000..0000000 100644 "integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==", "cpu": [ "x64" -@@ -4939,7 +5845,7 @@ +@@ -4939,7 +6183,7 @@ }, "node_modules/@typescript/typescript-openbsd-arm64": { "version": "7.0.2", @@ -1623,7 +4490,7 @@ index 0000000..0000000 100644 "integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==", "cpu": [ "arm64" -@@ -4956,7 +5862,7 @@ +@@ -4956,7 +6200,7 @@ }, "node_modules/@typescript/typescript-openbsd-x64": { "version": "7.0.2", @@ -1632,7 +4499,7 @@ index 0000000..0000000 100644 "integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==", "cpu": [ "x64" -@@ -4973,7 +5879,7 @@ +@@ -4973,7 +6217,7 @@ }, "node_modules/@typescript/typescript-sunos-x64": { "version": "7.0.2", @@ -1641,7 +4508,7 @@ index 0000000..0000000 100644 "integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==", "cpu": [ "x64" -@@ -4990,7 +5896,7 @@ +@@ -4990,7 +6234,7 @@ }, "node_modules/@typescript/typescript-win32-arm64": { "version": "7.0.2", @@ -1650,7 +4517,7 @@ index 0000000..0000000 100644 "integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==", "cpu": [ "arm64" -@@ -5007,7 +5913,7 @@ +@@ -5007,7 +6251,7 @@ }, "node_modules/@typescript/typescript-win32-x64": { "version": "7.0.2", @@ -1659,7 +4526,7 @@ index 0000000..0000000 100644 "integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==", "cpu": [ "x64" -@@ -5092,10 +5998,19 @@ +@@ -5092,10 +6336,19 @@ "url": "https://github.com/sponsors/wooorm" } }, @@ -1682,7 +4549,7 @@ index 0000000..0000000 100644 "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" -@@ -5104,6 +6019,51 @@ +@@ -5104,6 +6357,51 @@ "node": ">=6.0.0" } }, @@ -1734,7 +4601,7 @@ index 0000000..0000000 100644 "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", -@@ -5112,9 +6072,9 @@ +@@ -5112,9 +6410,9 @@ "license": "MIT" }, "node_modules/caniuse-lite": { @@ -1747,7 +4614,7 @@ index 0000000..0000000 100644 "funding": [ { "type": "opencollective", -@@ -5234,6 +6194,18 @@ +@@ -5234,6 +6532,18 @@ "url": "https://github.com/sponsors/wooorm" } }, @@ -1766,7 +4633,7 @@ index 0000000..0000000 100644 "node_modules/cose-base": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", -@@ -5867,7 +6839,6 @@ +@@ -5867,7 +7177,6 @@ "version": "17.4.2", "resolved": "https://sfw.security.sentry.io/npm/dotenv/-/dotenv-17.4.2.tgz", "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", @@ -1774,25 +4641,23 @@ index 0000000..0000000 100644 "license": "BSD-2-Clause", "engines": { "node": ">=12" -@@ -6017,6 +6988,12 @@ +@@ -6017,6 +7326,12 @@ } } }, + "node_modules/electron-to-chromium": { -+ "version": "1.5.430", -+ "resolved": "https://sfw.security.sentry.io/npm/electron-to-chromium/-/electron-to-chromium-1.5.430.tgz", -+ "integrity": "sha512-e1QEj72Y4zd8RlNZVmoTg+iCOSVwpk05IOiiQwdrkwCSVlZfPthevErhE+nckGd2YbsXfp1SkisznhGVIXP2NQ==", ++ "version": "1.5.438", ++ "resolved": "https://sfw.security.sentry.io/npm/electron-to-chromium/-/electron-to-chromium-1.5.438.tgz", ++ "integrity": "sha512-AN9xMU1hJiT65LkCUPL1DZm5TCbOPb2Qsm5pYwFLEXp6/qj9SdT4yMiqs7Qqstwvkn1zF7l36SRGt+s6XcJ0FA==", + "license": "ISC" + }, "node_modules/enhanced-resolve": { "version": "5.24.5", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz", -@@ -6094,6 +7071,15 @@ - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", +@@ -6096,6 +7411,15 @@ "@esbuild/win32-x64": "0.25.12" -+ } -+ }, + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://sfw.security.sentry.io/npm/escalade/-/escalade-3.2.0.tgz", @@ -1800,10 +4665,12 @@ index 0000000..0000000 100644 + "license": "MIT", + "engines": { + "node": ">=6" - } - }, ++ } ++ }, "node_modules/escape-string-regexp": { -@@ -6118,6 +7104,12 @@ + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", +@@ -6118,6 +7442,12 @@ "url": "https://opencollective.com/unified" } }, @@ -1816,11 +4683,10 @@ index 0000000..0000000 100644 "node_modules/eventsource-parser": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.1.1.tgz", -@@ -6132,12 +7124,28 @@ - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", +@@ -6133,11 +7463,27 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "license": "MIT" -+ }, + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://sfw.security.sentry.io/npm/fdir/-/fdir-6.5.0.tgz", @@ -1837,7 +4703,7 @@ index 0000000..0000000 100644 + "optional": true + } + } - }, ++ }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -1846,7 +4712,7 @@ index 0000000..0000000 100644 "hasInstallScript": true, "license": "MIT", "optional": true, -@@ -6157,6 +7165,15 @@ +@@ -6157,6 +7503,15 @@ "next": ">=13.2.0" } }, @@ -1862,7 +4728,7 @@ index 0000000..0000000 100644 "node_modules/get-east-asian-width": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", -@@ -6191,6 +7208,23 @@ +@@ -6191,6 +7546,23 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, @@ -1886,11 +4752,10 @@ index 0000000..0000000 100644 "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", -@@ -6203,6 +7237,15 @@ - "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", +@@ -6204,6 +7576,15 @@ "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==", "license": "MIT" -+ }, + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://sfw.security.sentry.io/npm/has-flag/-/has-flag-4.0.0.tgz", @@ -1899,15 +4764,14 @@ index 0000000..0000000 100644 + "engines": { + "node": ">=8" + } - }, ++ }, "node_modules/hast-util-from-dom": { "version": "5.0.1", -@@ -6565,6 +7608,15 @@ - }, - "funding": { + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", +@@ -6567,6 +7948,15 @@ "url": "https://github.com/sponsors/sindresorhus" -+ } -+ }, + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://sfw.security.sentry.io/npm/is-reference/-/is-reference-1.2.1.tgz", @@ -1915,10 +4779,12 @@ index 0000000..0000000 100644 + "license": "MIT", + "dependencies": { + "@types/estree": "*" - } - }, ++ } ++ }, "node_modules/jiti": { -@@ -6577,12 +7629,42 @@ + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", +@@ -6577,12 +7967,42 @@ "jiti": "lib/jiti-cli.mjs" } }, @@ -1961,7 +4827,7 @@ index 0000000..0000000 100644 "node_modules/katex": { "version": "0.16.47", "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.47.tgz", -@@ -6651,7 +7733,7 @@ +@@ -6651,7 +8071,7 @@ }, "node_modules/lightningcss-android-arm64": { "version": "1.32.0", @@ -1970,7 +4836,7 @@ index 0000000..0000000 100644 "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", "cpu": [ "arm64" -@@ -6693,7 +7775,7 @@ +@@ -6693,7 +8113,7 @@ }, "node_modules/lightningcss-darwin-x64": { "version": "1.32.0", @@ -1979,7 +4845,7 @@ index 0000000..0000000 100644 "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", "cpu": [ "x64" -@@ -6714,7 +7796,7 @@ +@@ -6714,7 +8134,7 @@ }, "node_modules/lightningcss-freebsd-x64": { "version": "1.32.0", @@ -1988,7 +4854,7 @@ index 0000000..0000000 100644 "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", "cpu": [ "x64" -@@ -6735,7 +7817,7 @@ +@@ -6735,7 +8155,7 @@ }, "node_modules/lightningcss-linux-arm-gnueabihf": { "version": "1.32.0", @@ -1997,7 +4863,7 @@ index 0000000..0000000 100644 "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", "cpu": [ "arm" -@@ -6756,7 +7838,7 @@ +@@ -6756,7 +8176,7 @@ }, "node_modules/lightningcss-linux-arm64-gnu": { "version": "1.32.0", @@ -2006,7 +4872,7 @@ index 0000000..0000000 100644 "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", "cpu": [ "arm64" -@@ -6780,7 +7862,7 @@ +@@ -6780,7 +8200,7 @@ }, "node_modules/lightningcss-linux-arm64-musl": { "version": "1.32.0", @@ -2015,7 +4881,7 @@ index 0000000..0000000 100644 "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", "cpu": [ "arm64" -@@ -6804,7 +7886,7 @@ +@@ -6804,7 +8224,7 @@ }, "node_modules/lightningcss-linux-x64-gnu": { "version": "1.32.0", @@ -2024,7 +4890,7 @@ index 0000000..0000000 100644 "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", "cpu": [ "x64" -@@ -6828,7 +7910,7 @@ +@@ -6828,7 +8248,7 @@ }, "node_modules/lightningcss-linux-x64-musl": { "version": "1.32.0", @@ -2033,7 +4899,7 @@ index 0000000..0000000 100644 "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", "cpu": [ "x64" -@@ -6852,7 +7934,7 @@ +@@ -6852,7 +8272,7 @@ }, "node_modules/lightningcss-win32-arm64-msvc": { "version": "1.32.0", @@ -2042,7 +4908,7 @@ index 0000000..0000000 100644 "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", "cpu": [ "arm64" -@@ -6873,7 +7955,7 @@ +@@ -6873,7 +8293,7 @@ }, "node_modules/lightningcss-win32-x64-msvc": { "version": "1.32.0", @@ -2051,12 +4917,10 @@ index 0000000..0000000 100644 "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", "cpu": [ "x64" -@@ -6906,6 +7988,15 @@ - "funding": { - "type": "github", +@@ -6908,6 +8328,15 @@ "url": "https://github.com/sponsors/wooorm" -+ } -+ }, + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://sfw.security.sentry.io/npm/lru-cache/-/lru-cache-5.1.1.tgz", @@ -2064,10 +4928,12 @@ index 0000000..0000000 100644 + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" - } - }, ++ } ++ }, "node_modules/lucide-react": { -@@ -6921,7 +8012,6 @@ + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.30.0.tgz", +@@ -6921,7 +8350,6 @@ "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", @@ -2075,7 +4941,7 @@ index 0000000..0000000 100644 "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" -@@ -7965,6 +9055,30 @@ +@@ -7965,6 +9393,30 @@ ], "license": "MIT" }, @@ -2106,23 +4972,66 @@ index 0000000..0000000 100644 "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", -@@ -8095,6 +9209,15 @@ - }, - "engines": { +@@ -8097,6 +9549,15 @@ "node": "^10 || ^12 || >=14" -+ } -+ }, + } + }, + "node_modules/node-releases": { -+ "version": "2.0.56", -+ "resolved": "https://sfw.security.sentry.io/npm/node-releases/-/node-releases-2.0.56.tgz", -+ "integrity": "sha512-x0InOIyzgdk+eyaWaRJFH5snEtiImgBgblZ2CyPrLmqqcuMQkEvcDPHbzqbD8eDsSeJbVOjn+crzyzHaM4D+/A==", ++ "version": "2.0.57", ++ "resolved": "https://sfw.security.sentry.io/npm/node-releases/-/node-releases-2.0.57.tgz", ++ "integrity": "sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==", + "license": "MIT", + "engines": { + "node": ">=18" ++ } ++ }, + "node_modules/oniguruma-parser": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.2.tgz", +@@ -8114,6 +9575,42 @@ + "regex-recursion": "^6.0.2" } }, - "node_modules/oniguruma-parser": { -@@ -8212,6 +9335,31 @@ ++ "node_modules/oxc-parser": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/oxc-parser/-/oxc-parser-0.143.0.tgz", ++ "integrity": "sha512-ov0NzaDCOInknS7mP1cwKdJERt3utPW8ldjtdUXQ8Ty0GEFD08wk422vCUN0d7pST6kqtV7dxoI9w1Zi0l/9TA==", ++ "license": "MIT", ++ "dependencies": { ++ "@oxc-project/types": "^0.143.0" ++ }, ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/Boshen" ++ }, ++ "optionalDependencies": { ++ "@oxc-parser/binding-android-arm-eabi": "0.143.0", ++ "@oxc-parser/binding-android-arm64": "0.143.0", ++ "@oxc-parser/binding-darwin-arm64": "0.143.0", ++ "@oxc-parser/binding-darwin-x64": "0.143.0", ++ "@oxc-parser/binding-freebsd-x64": "0.143.0", ++ "@oxc-parser/binding-linux-arm-gnueabihf": "0.143.0", ++ "@oxc-parser/binding-linux-arm-musleabihf": "0.143.0", ++ "@oxc-parser/binding-linux-arm64-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-arm64-musl": "0.143.0", ++ "@oxc-parser/binding-linux-ppc64-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-riscv64-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-riscv64-musl": "0.143.0", ++ "@oxc-parser/binding-linux-s390x-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-x64-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-x64-musl": "0.143.0", ++ "@oxc-parser/binding-openharmony-arm64": "0.143.0", ++ "@oxc-parser/binding-win32-arm64-msvc": "0.143.0", ++ "@oxc-parser/binding-win32-ia32-msvc": "0.143.0", ++ "@oxc-parser/binding-win32-x64-msvc": "0.143.0" ++ } ++ }, + "node_modules/oxlint": { + "version": "1.78.0", + "resolved": "https://sfw.security.sentry.io/npm/oxlint/-/oxlint-1.78.0.tgz", +@@ -8212,6 +9709,31 @@ "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==", "license": "MIT" }, @@ -2143,9 +5052,9 @@ index 0000000..0000000 100644 + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { -+ "version": "11.5.2", -+ "resolved": "https://sfw.security.sentry.io/npm/lru-cache/-/lru-cache-11.5.2.tgz", -+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", ++ "version": "11.5.3", ++ "resolved": "https://sfw.security.sentry.io/npm/lru-cache/-/lru-cache-11.5.3.tgz", ++ "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" @@ -2154,11 +5063,10 @@ index 0000000..0000000 100644 "node_modules/pg": { "version": "8.23.0", "resolved": "https://sfw.security.sentry.io/npm/pg/-/pg-8.23.0.tgz", -@@ -8306,6 +9454,18 @@ - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", +@@ -8307,6 +9829,18 @@ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" -+ }, + }, + "node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://sfw.security.sentry.io/npm/picomatch/-/picomatch-4.0.7.tgz", @@ -2170,10 +5078,11 @@ index 0000000..0000000 100644 + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } - }, ++ }, "node_modules/pkce-challenge": { "version": "5.0.1", -@@ -8972,6 +10132,51 @@ + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", +@@ -8972,6 +10506,51 @@ "integrity": "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==", "license": "Unlicense" }, @@ -2225,7 +5134,7 @@ index 0000000..0000000 100644 "node_modules/roughjs": { "version": "4.6.6", "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", -@@ -9002,6 +10207,27 @@ +@@ -9002,6 +10581,27 @@ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, @@ -2253,7 +5162,7 @@ index 0000000..0000000 100644 "node_modules/sharp": { "version": "0.35.3", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.3.tgz", -@@ -9140,6 +10366,18 @@ +@@ -9140,6 +10740,18 @@ "node": ">= 10.x" } }, @@ -2272,11 +5181,10 @@ index 0000000..0000000 100644 "node_modules/streamdown": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/streamdown/-/streamdown-2.5.0.tgz", -@@ -9240,6 +10478,21 @@ - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.4.0.tgz", +@@ -9241,6 +10853,21 @@ "integrity": "sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==", "license": "MIT" -+ }, + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://sfw.security.sentry.io/npm/supports-color/-/supports-color-8.1.1.tgz", @@ -2291,10 +5199,11 @@ index 0000000..0000000 100644 + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } - }, ++ }, "node_modules/swr": { "version": "2.5.0", -@@ -9859,6 +11112,15 @@ + "resolved": "https://registry.npmjs.org/swr/-/swr-2.5.0.tgz", +@@ -9859,6 +11486,15 @@ "url": "https://github.com/sponsors/Wombosvideo" } }, @@ -2310,7 +5219,7 @@ index 0000000..0000000 100644 "node_modules/typescript": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz", -@@ -10025,6 +11287,36 @@ +@@ -10025,6 +11661,36 @@ "url": "https://opencollective.com/unified" } }, @@ -2347,7 +5256,7 @@ index 0000000..0000000 100644 "node_modules/use-callback-ref": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", -@@ -10164,6 +11456,12 @@ +@@ -10164,6 +11830,12 @@ "url": "https://github.com/sponsors/wooorm" } }, @@ -2360,7 +5269,7 @@ index 0000000..0000000 100644 "node_modules/xtend": { "version": "4.0.2", "resolved": "https://sfw.security.sentry.io/npm/xtend/-/xtend-4.0.2.tgz", -@@ -10173,6 +11471,12 @@ +@@ -10173,6 +11845,12 @@ "node": ">=0.4" } }, @@ -2377,17 +5286,24 @@ diff --git a/apps/storefront/package.json b/apps/storefront/package.json index 0000000..0000000 100644 --- a/apps/storefront/package.json +++ b/apps/storefront/package.json -@@ -18,6 +18,7 @@ +@@ -18,12 +18,13 @@ "@ai-sdk/react": "4.0.67", "@headlessui/react": "^2.2.0", "@heroicons/react": "^2.2.0", -+ "@sentry/nextjs": "11.0.0-rc.0", ++ "@openrouter/ai-sdk-provider": "3.0.0", ++ "@sentry/nextjs": "11.0.0", "@streamdown/cjk": "^1.0.3", "@streamdown/code": "^1.1.1", "@streamdown/math": "^1.0.2", + "@streamdown/mermaid": "^1.0.2", + "ai": "7.0.64", +- "@openrouter/ai-sdk-provider": "3.0.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", diff --git a/apps/storefront/sentry.server.config.ts b/apps/storefront/sentry.server.config.ts -index 0000000..0000000 new file mode 100644 +index 0000000..0000000 --- /dev/null +++ b/apps/storefront/sentry.server.config.ts @@ -0,0 +1,7 @@ diff --git a/solutions/04-slack-agent/README.md b/solutions/04-slack-agent/README.md index 79820e8..7fd976b 100644 --- a/solutions/04-slack-agent/README.md +++ b/solutions/04-slack-agent/README.md @@ -1,6 +1,6 @@ # Solution: instrument the slack-agent -`instrumentation.patch` adds Sentry (`@sentry/node` 11.0.0-rc.0) to +`instrumentation.patch` adds Sentry (`@sentry/node` 11.0.0) to `apps/slack-agent`, wired for agent tracing on the Vercel AI SDK call. ## Files it adds or changes @@ -23,7 +23,7 @@ - `README.md` — adds a Sentry section. - `package.json` / `package-lock.json` — adds the `@sentry/node` dependency. -SDK: @sentry/node 11.0.0-rc.0 +SDK: @sentry/node 11.0.0 ## Env vars it needs diff --git a/solutions/04-slack-agent/instrumentation.patch b/solutions/04-slack-agent/instrumentation.patch index 0d74b7c..dc606fc 100644 --- a/solutions/04-slack-agent/instrumentation.patch +++ b/solutions/04-slack-agent/instrumentation.patch @@ -1,5 +1,5 @@ diff --git a/apps/slack-agent/.env.example b/apps/slack-agent/.env.example -index 9e69a32..6a2175c 100644 +index 0000000..0000000 100644 --- a/apps/slack-agent/.env.example +++ b/apps/slack-agent/.env.example @@ -14,3 +14,10 @@ DATABASE_URL= @@ -14,7 +14,7 @@ index 9e69a32..6a2175c 100644 +# Optional. Read automatically by the SDK; not passed to Sentry.init. +SENTRY_RELEASE= diff --git a/apps/slack-agent/README.md b/apps/slack-agent/README.md -index d1eb232..6006d4a 100644 +index 0000000..0000000 100644 --- a/apps/slack-agent/README.md +++ b/apps/slack-agent/README.md @@ -43,4 +43,12 @@ app created from an older manifest must have its manifest replaced on the App @@ -32,14 +32,14 @@ index d1eb232..6006d4a 100644 +as `db.query` spans. The Sentry user is the Slack user who sent the message. +Errors go to Sentry as issues. diff --git a/apps/slack-agent/package-lock.json b/apps/slack-agent/package-lock.json -index d4fa987..3e333f9 100644 +index 0000000..0000000 100644 --- a/apps/slack-agent/package-lock.json +++ b/apps/slack-agent/package-lock.json @@ -7,6 +7,7 @@ "name": "slack-agent", "dependencies": { "@openrouter/ai-sdk-provider": "3.0.0", -+ "@sentry/node": "11.0.0-rc.0", ++ "@sentry/node": "11.0.0", "@slack/bolt": "^4.4.0", "ai": "7.0.64", "dotenv": "17.4.2", @@ -240,9 +240,9 @@ index d4fa987..3e333f9 100644 + } + }, + "node_modules/@babel/parser": { -+ "version": "7.29.8", -+ "resolved": "https://sfw.security.sentry.io/npm/@babel/parser/-/parser-7.29.8.tgz", -+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", ++ "version": "7.29.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@babel/parser/-/parser-7.29.9.tgz", ++ "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" @@ -300,10 +300,52 @@ index d4fa987..3e333f9 100644 } }, "node_modules/@esbuild/aix-ppc64": { -@@ -514,6 +739,51 @@ +@@ -480,51 +705,555 @@ "node": ">=18" } }, +- "node_modules/@esbuild/win32-ia32": { +- "version": "0.28.2", +- "resolved": "https://sfw.security.sentry.io/npm/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", +- "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", +- "cpu": [ +- "ia32" +- ], +- "dev": true, ++ "node_modules/@esbuild/win32-ia32": { ++ "version": "0.28.2", ++ "resolved": "https://sfw.security.sentry.io/npm/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", ++ "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", ++ "cpu": [ ++ "ia32" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": ">=18" ++ } ++ }, ++ "node_modules/@esbuild/win32-x64": { ++ "version": "0.28.2", ++ "resolved": "https://sfw.security.sentry.io/npm/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", ++ "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": ">=18" ++ } ++ }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://sfw.security.sentry.io/npm/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -349,13 +391,19 @@ index d4fa987..3e333f9 100644 + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, - "node_modules/@openrouter/ai-sdk-provider": { - "version": "3.0.0", - "resolved": "https://sfw.security.sentry.io/npm/@openrouter/ai-sdk-provider/-/ai-sdk-provider-3.0.0.tgz", -@@ -527,6 +797,127 @@ - "zod": "^3.25.76 || ^4.1.8" - } - }, ++ "node_modules/@openrouter/ai-sdk-provider": { ++ "version": "3.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@openrouter/ai-sdk-provider/-/ai-sdk-provider-3.0.0.tgz", ++ "integrity": "sha512-m9XTSWoODH2RM5OsZpaGiN7QRR8cdP5paBWq699Tu3JVmGPBKT8xF8XwV0ZBVVsjikD/JgWfak4VSsTR4wAVbg==", ++ "license": "Apache-2.0", ++ "engines": { ++ "node": ">=22" ++ }, ++ "peerDependencies": { ++ "ai": "^7.0.0", ++ "zod": "^3.25.76 || ^4.1.8" ++ } ++ }, + "node_modules/@opentelemetry/api": { + "version": "1.9.1", + "resolved": "https://sfw.security.sentry.io/npm/@opentelemetry/api/-/api-1.9.1.tgz", @@ -365,17 +413,355 @@ index d4fa987..3e333f9 100644 + "node": ">=8.0.0" + } + }, ++ "node_modules/@oxc-parser/binding-android-arm-eabi": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.143.0.tgz", ++ "integrity": "sha512-n9uozULWflPqBtdmI8lAabLqGKNgLVNN0ZH8HfgCwpKGNtzRzauB76jTiW/3YLkcA7N1zskpi9GdVnZuu1SAvg==", ++ "cpu": [ ++ "arm" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "android" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-android-arm64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.143.0.tgz", ++ "integrity": "sha512-9BbdjHETk6O3zH/DDid9IgBtF0GlpLabNKN231uraXpRDSfY+iiZxTP5bk1Z63GBownVdhdINFIeddmMz4MzpQ==", ++ "cpu": [ ++ "arm64" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "android" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-darwin-arm64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.143.0.tgz", ++ "integrity": "sha512-gh+6ecoHUy4/sUcolBl/1qPXKBbYNxFY0Pk0ujgQvINTMSftJY7o4yb8gOkDJPeZeB8+a+u7xTe6umoP8N5HFA==", ++ "cpu": [ ++ "arm64" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "darwin" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-darwin-x64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.143.0.tgz", ++ "integrity": "sha512-qd1hl2d+lXgHv/VQ/M9qm8TrMC5T4RqDBwtOnl+1D0QMjwcz+8AaB4JSg8STgeag0GP6a6L74XEGAsrTSJWNzQ==", ++ "cpu": [ ++ "x64" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "darwin" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-freebsd-x64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.143.0.tgz", ++ "integrity": "sha512-M5XXcNa7aOqLPKTR41msfghKu2yQ4xWvCm11/gwU0JzOzHNk5sgW//rVEjJ+LO48+VDAMzXTSzurUVxIDKwozw==", ++ "cpu": [ ++ "x64" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "freebsd" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.143.0.tgz", ++ "integrity": "sha512-T/GXusuOkPNQhCQCSBbcU/N8j0rAypuDBl1IyFK+lyYT594XsVz80clPC/OtbSSpBGyJxj8uYEfctxVuxVYoww==", ++ "cpu": [ ++ "arm" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-linux-arm-musleabihf": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.143.0.tgz", ++ "integrity": "sha512-oKu4RcBlXSqo3OC62dp6YTnQaZIurNDpCX3BnAM3+bJxt7s8J2TJKMnC0UYer1qhlRaDCg6wkTaTw+2IlsZ12w==", ++ "cpu": [ ++ "arm" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-linux-arm64-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.143.0.tgz", ++ "integrity": "sha512-WJBbD186AZmMGaSIhlktC+rPl8L3peCTXAh88Ih9uEvK0en2mPojGyCGYiL6mHtV1RPV3JyfJW5t6n5hh0lXhA==", ++ "cpu": [ ++ "arm64" ++ ], ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-linux-arm64-musl": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.143.0.tgz", ++ "integrity": "sha512-t1AcYOwEzgceadT4v5e+vaCCb0AncCA3v5AyzfBAz/tMq11qzVccXKzNHtkWdjBsgvTKwRkaUF3QvT4kot8vcQ==", ++ "cpu": [ ++ "arm64" ++ ], ++ "libc": [ ++ "musl" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-linux-ppc64-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.143.0.tgz", ++ "integrity": "sha512-RsnO/NoD8376LMJq8JS8TwI0ieNaFRTuNe2GVJntQg6gwZNMENZsEbknHdVwjpOmxdGLGodcwaGSbAeRr5Bgjw==", ++ "cpu": [ ++ "ppc64" ++ ], ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-linux-riscv64-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.143.0.tgz", ++ "integrity": "sha512-48fSVfR9TZi5CASZFyv0VC6z6BCoeihFsX031mAD/oSH7d9PYsPgIqza7d9mjP7Z2KTEpTFyH6SIu0Ui6R1vdg==", ++ "cpu": [ ++ "riscv64" ++ ], ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-linux-riscv64-musl": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.143.0.tgz", ++ "integrity": "sha512-T8CpdD+SfE01DnIOD4HpVxu0ZJOfMJ/VhCvikKfaXAxkZ+9veyLM/D2hpi7Y2hFUyPmVQO3FNZHmYzV/WlVR4g==", ++ "cpu": [ ++ "riscv64" ++ ], ++ "libc": [ ++ "musl" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-linux-s390x-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.143.0.tgz", ++ "integrity": "sha512-QLdeMsCcacenPEFsfxnBUDF1y6opyz5+fmOz9bfD5Y7fiGCMupUCuB3KTPQhNwshIG1P9fPqar9MHxuBDd4bwQ==", ++ "cpu": [ ++ "s390x" ++ ], ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-linux-x64-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.143.0.tgz", ++ "integrity": "sha512-659ujfqLy6k7cuH3sbzhd8b+ztSq+i6E2E9pG78Q0BmHjAExfGIdgc8cGgMdwAozDXeZFHkJ+LXYJdWsaGdgyw==", ++ "cpu": [ ++ "x64" ++ ], ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-linux-x64-musl": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.143.0.tgz", ++ "integrity": "sha512-/Mw/9j4TfZcnKphPrzOE6t4MMknXadcAAuVUlDRTF/ETWB5xOgQvOJV2Mh9We/bWxZdoxaGAdc+hy4GuYwQ2yQ==", ++ "cpu": [ ++ "x64" ++ ], ++ "libc": [ ++ "musl" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-openharmony-arm64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.143.0.tgz", ++ "integrity": "sha512-8rIKWR2BFuifbIK/1XB9wTaSdtuJ25dlE7ZQYDnEwj/2xH2vHsxnvIjHT3ZjSVuLLwGGlSslIG/fbOJ8TV8rTw==", ++ "cpu": [ ++ "arm64" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "openharmony" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-win32-arm64-msvc": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.143.0.tgz", ++ "integrity": "sha512-5U9kQYMfRRI6Zq7KDxgbIP0RMnKrfn3gLepRMgJuRkPSUALTiRCk9d/uyhb4lGDjUdzwK7mBkKqhLgzBPCmLpQ==", ++ "cpu": [ ++ "arm64" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-win32-ia32-msvc": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.143.0.tgz", ++ "integrity": "sha512-25P7AaHk4R88Yv2XH4gToDVmh0cOu+bEURQU10CRrmvgabfRArSGAP5osmwUKeSUHj0VS50upbpbRWWW/m7mHA==", ++ "cpu": [ ++ "ia32" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-parser/binding-win32-x64-msvc": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.143.0.tgz", ++ "integrity": "sha512-ORMh3JE1s6V7ySicdRK7vgaDQnn5o+UHg9ct989PlWHbel8O9ARrmWXM6kZjrBMtNucxNayQ8g69G0VfWzhANw==", ++ "cpu": [ ++ "x64" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxc-project/types": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-project/types/-/types-0.143.0.tgz", ++ "integrity": "sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==", ++ "license": "MIT", ++ "funding": { ++ "url": "https://github.com/sponsors/Boshen" ++ } ++ }, + "node_modules/@sentry/bundler-plugins": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/bundler-plugins/-/bundler-plugins-11.0.0-rc.0.tgz", -+ "integrity": "sha512-mfRtTo7MNMgAghHsTzcRV5XwdpV+YqdqA4OGgOSRqLEY5H1jxfO8j+orEjUvLk8pCgR4Y1cORsXKqpVXI4nh3w==", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/bundler-plugins/-/bundler-plugins-11.0.0.tgz", ++ "integrity": "sha512-Oe4/8CbsYrqdjTt91JFMBQza59IWUfSwPrlHGbbJT+qVCyebX2bykxv3mfa6Ty/Gmt8+gva/DI6Kjcyb9EgXBg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.18.5", -+ "@sentry/core": "11.0.0-rc.0", ++ "@sentry/core": "11.0.0", + "dotenv": "^17.4.2", + "glob": "^13.0.6", + "magic-string": "~0.30.8", ++ "oxc-parser": "^0.143.0", + "sentry": "^0.44.0", + "supports-color": "^8.1.1" + }, @@ -384,7 +770,7 @@ index d4fa987..3e333f9 100644 + }, + "peerDependencies": { + "rollup": ">=3.2.0", -+ "webpack": ">=5.0.0" ++ "webpack": ">=5.1.0" + }, + "peerDependenciesMeta": { + "rollup": { @@ -405,82 +791,106 @@ index d4fa987..3e333f9 100644 + } + }, + "node_modules/@sentry/core": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/core/-/core-11.0.0-rc.0.tgz", -+ "integrity": "sha512-6KXLKGq1YgysUIzeD0cYQH/8Tg62V+UJV1d9FVNvKb0HnRgbiO9VWCCm1wGyYSENdGPdSa9zOOnk5ZC7WxLaAw==", -+ "license": "MIT", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/core/-/core-11.0.0.tgz", ++ "integrity": "sha512-Sdmg21POKmNwZDz8pH/2FtilWeryh3yxhRxbfA1ph8SnX2DkXoqX6G+uXyjCSYagW2pefVklmSNeWHmUlSqioA==", + "license": "MIT", +- "optional": true, +- "os": [ +- "win32" +- ], + "dependencies": { + "@sentry/conventions": "^0.23.0" + }, -+ "engines": { + "engines": { +- "node": ">=18" + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@esbuild/win32-x64": { +- "version": "0.28.2", +- "resolved": "https://sfw.security.sentry.io/npm/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", +- "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", +- "cpu": [ +- "x64" +- ], +- "dev": true, + "node_modules/@sentry/node": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/node/-/node-11.0.0-rc.0.tgz", -+ "integrity": "sha512-hztnJEx8Fcyp0wNJgVbrgWIy9jgkefo7A3c7Y7r7wrCwCl5gKwzzo53XYOkY2lf/rjTLaJCG8b21VjHaFldOZw==", -+ "license": "MIT", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/node/-/node-11.0.0.tgz", ++ "integrity": "sha512-ZHk2wYvnKPfaq05YHnva/a6EzZDLTG0EStcWnQdjSae/OxluwCfOfMqwlsKxaY8KDUkyqokTCUPqJITZpUH1Jw==", + "license": "MIT", +- "optional": true, +- "os": [ +- "win32" +- ], + "dependencies": { + "@opentelemetry/api": "^1.9.1", -+ "@sentry/bundler-plugins": "11.0.0-rc.0", ++ "@sentry/bundler-plugins": "11.0.0", + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0", -+ "@sentry/opentelemetry": "11.0.0-rc.0", -+ "@sentry/server-runtime-injection": "11.0.0-rc.0", -+ "@sentry/server-utils": "11.0.0-rc.0" ++ "@sentry/core": "11.0.0", ++ "@sentry/opentelemetry": "11.0.0", ++ "@sentry/server-runtime-injection": "11.0.0", ++ "@sentry/server-utils": "11.0.0" + }, -+ "engines": { + "engines": { +- "node": ">=18" + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@openrouter/ai-sdk-provider": { +- "version": "3.0.0", +- "resolved": "https://sfw.security.sentry.io/npm/@openrouter/ai-sdk-provider/-/ai-sdk-provider-3.0.0.tgz", +- "integrity": "sha512-m9XTSWoODH2RM5OsZpaGiN7QRR8cdP5paBWq699Tu3JVmGPBKT8xF8XwV0ZBVVsjikD/JgWfak4VSsTR4wAVbg==", +- "license": "Apache-2.0", + "node_modules/@sentry/opentelemetry": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/opentelemetry/-/opentelemetry-11.0.0-rc.0.tgz", -+ "integrity": "sha512-28Yy+Qoo84Ckxu40f2sB/NE+J2uacVkT+rD/GnK3+ExZfW/o2nV7eotIwKUprhoHM1w8EaMQusjZAMTzHc4geQ==", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/opentelemetry/-/opentelemetry-11.0.0.tgz", ++ "integrity": "sha512-m2EtgppTtN6MxW0dKA45aZMI/xoFZYi2I2cvTIenFGTGLfxyjk6+YCbg0Jf/wdUWoZjR0k6kBBBIbv+zpuvTOA==", + "license": "MIT", + "dependencies": { + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0" ++ "@sentry/core": "11.0.0" + }, -+ "engines": { + "engines": { +- "node": ">=22" + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ }, -+ "peerDependencies": { + }, + "peerDependencies": { +- "ai": "^7.0.0", +- "zod": "^3.25.76 || ^4.1.8" + "@opentelemetry/api": "^1.9.0" + } + }, + "node_modules/@sentry/server-runtime-injection": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/server-runtime-injection/-/server-runtime-injection-11.0.0-rc.0.tgz", -+ "integrity": "sha512-x8XppxyzDZxweoHlfsW0l12ghquvp79o2UNXOcXETRb+40ud+RF+YdPtnv4yvsrByXScPkNzKVdJSjxevJCcrA==", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/server-runtime-injection/-/server-runtime-injection-11.0.0.tgz", ++ "integrity": "sha512-AE39xdGbi8WmcB9LtITuvJkp+sYxkPAR+3lRG4MYrJLVQS+YeYfn/AaZdEXOhnOagdpozsDbpEneGJn6vD8p6Q==", + "license": "MIT", + "dependencies": { -+ "@sentry/core": "11.0.0-rc.0", -+ "@sentry/server-utils": "11.0.0-rc.0" ++ "@sentry/core": "11.0.0", ++ "@sentry/server-utils": "11.0.0" + }, + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" + } + }, + "node_modules/@sentry/server-utils": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/server-utils/-/server-utils-11.0.0-rc.0.tgz", -+ "integrity": "sha512-0+nsGmRdz8U+U5Cbe52FVfsBztcSY8v7u37id3lsEOktZQi8uJRQShp7BgvD8+ReXEuoVK/L2w7LxzTdtmxQig==", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/server-utils/-/server-utils-11.0.0.tgz", ++ "integrity": "sha512-XlKDtLoNqOhI+TgCNywan/tFy0yMRzw5+8mdp96KNHtF/YwO9s6c7qZcBG0x8+XDyC0EoNXDlBPJOMEZo5lD4Q==", + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.9.1", + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0" ++ "@sentry/core": "11.0.0" + }, + "engines": { + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, "node_modules/@slack/bolt": { - "version": "4.7.3", - "resolved": "https://sfw.security.sentry.io/npm/@slack/bolt/-/bolt-4.7.3.tgz", -@@ -1177,25 +1568,6 @@ +@@ -1177,25 +1906,6 @@ "zod": "^3.25.76 || ^4.1.8" } }, @@ -506,7 +916,7 @@ index d4fa987..3e333f9 100644 "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://sfw.security.sentry.io/npm/asynckit/-/asynckit-0.4.0.tgz", -@@ -1214,6 +1586,27 @@ +@@ -1214,6 +1924,27 @@ "proxy-from-env": "^2.1.0" } }, @@ -534,7 +944,7 @@ index d4fa987..3e333f9 100644 "node_modules/body-parser": { "version": "2.3.0", "resolved": "https://sfw.security.sentry.io/npm/body-parser/-/body-parser-2.3.0.tgz", -@@ -1251,6 +1644,51 @@ +@@ -1251,6 +1982,51 @@ "url": "https://opencollective.com/express" } }, @@ -586,7 +996,7 @@ index d4fa987..3e333f9 100644 "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://sfw.security.sentry.io/npm/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", -@@ -1295,6 +1733,26 @@ +@@ -1295,6 +2071,26 @@ "url": "https://github.com/sponsors/ljharb" } }, @@ -613,7 +1023,7 @@ index d4fa987..3e333f9 100644 "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://sfw.security.sentry.io/npm/combined-stream/-/combined-stream-1.0.8.tgz", -@@ -1329,6 +1787,12 @@ +@@ -1329,6 +2125,12 @@ "node": ">= 0.6" } }, @@ -626,20 +1036,20 @@ index d4fa987..3e333f9 100644 "node_modules/cookie": { "version": "0.7.2", "resolved": "https://sfw.security.sentry.io/npm/cookie/-/cookie-0.7.2.tgz", -@@ -1548,6 +2012,12 @@ +@@ -1548,6 +2350,12 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, + "node_modules/electron-to-chromium": { -+ "version": "1.5.430", -+ "resolved": "https://sfw.security.sentry.io/npm/electron-to-chromium/-/electron-to-chromium-1.5.430.tgz", -+ "integrity": "sha512-e1QEj72Y4zd8RlNZVmoTg+iCOSVwpk05IOiiQwdrkwCSVlZfPthevErhE+nckGd2YbsXfp1SkisznhGVIXP2NQ==", ++ "version": "1.5.438", ++ "resolved": "https://sfw.security.sentry.io/npm/electron-to-chromium/-/electron-to-chromium-1.5.438.tgz", ++ "integrity": "sha512-AN9xMU1hJiT65LkCUPL1DZm5TCbOPb2Qsm5pYwFLEXp6/qj9SdT4yMiqs7Qqstwvkn1zF7l36SRGt+s6XcJ0FA==", + "license": "ISC" + }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://sfw.security.sentry.io/npm/encodeurl/-/encodeurl-2.0.0.tgz", -@@ -1644,6 +2114,15 @@ +@@ -1644,6 +2452,15 @@ "@esbuild/win32-x64": "0.28.2" } }, @@ -655,7 +1065,7 @@ index d4fa987..3e333f9 100644 "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://sfw.security.sentry.io/npm/escape-html/-/escape-html-1.0.3.tgz", -@@ -1837,6 +2316,15 @@ +@@ -1837,6 +2654,15 @@ "url": "https://github.com/sponsors/ljharb" } }, @@ -671,7 +1081,7 @@ index d4fa987..3e333f9 100644 "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://sfw.security.sentry.io/npm/get-intrinsic/-/get-intrinsic-1.3.0.tgz", -@@ -1874,6 +2362,23 @@ +@@ -1874,6 +2700,23 @@ "node": ">= 0.4" } }, @@ -695,7 +1105,7 @@ index d4fa987..3e333f9 100644 "node_modules/gopd": { "version": "1.2.0", "resolved": "https://sfw.security.sentry.io/npm/gopd/-/gopd-1.2.0.tgz", -@@ -1886,6 +2391,15 @@ +@@ -1886,6 +2729,15 @@ "url": "https://github.com/sponsors/ljharb" } }, @@ -711,7 +1121,7 @@ index d4fa987..3e333f9 100644 "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://sfw.security.sentry.io/npm/has-symbols/-/has-symbols-1.1.0.tgz", -@@ -2013,12 +2527,42 @@ +@@ -2013,12 +2865,42 @@ "url": "https://github.com/sponsors/sindresorhus" } }, @@ -754,7 +1164,7 @@ index d4fa987..3e333f9 100644 "node_modules/jsonwebtoken": { "version": "9.0.3", "resolved": "https://sfw.security.sentry.io/npm/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", -@@ -2041,6 +2585,18 @@ +@@ -2041,6 +2923,18 @@ "npm": ">=6" } }, @@ -773,7 +1183,7 @@ index d4fa987..3e333f9 100644 "node_modules/jwa": { "version": "2.0.1", "resolved": "https://sfw.security.sentry.io/npm/jwa/-/jwa-2.0.1.tgz", -@@ -2104,6 +2660,24 @@ +@@ -2104,6 +2998,24 @@ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "license": "MIT" }, @@ -798,7 +1208,7 @@ index d4fa987..3e333f9 100644 "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://sfw.security.sentry.io/npm/math-intrinsics/-/math-intrinsics-1.1.0.tgz", -@@ -2163,6 +2737,30 @@ +@@ -2163,6 +3075,30 @@ "url": "https://opencollective.com/express" } }, @@ -829,14 +1239,14 @@ index d4fa987..3e333f9 100644 "node_modules/ms": { "version": "2.1.3", "resolved": "https://sfw.security.sentry.io/npm/ms/-/ms-2.1.3.tgz", -@@ -2198,6 +2796,15 @@ +@@ -2198,6 +3134,15 @@ "url": "https://opencollective.com/express" } }, + "node_modules/node-releases": { -+ "version": "2.0.56", -+ "resolved": "https://sfw.security.sentry.io/npm/node-releases/-/node-releases-2.0.56.tgz", -+ "integrity": "sha512-x0InOIyzgdk+eyaWaRJFH5snEtiImgBgblZ2CyPrLmqqcuMQkEvcDPHbzqbD8eDsSeJbVOjn+crzyzHaM4D+/A==", ++ "version": "2.0.57", ++ "resolved": "https://sfw.security.sentry.io/npm/node-releases/-/node-releases-2.0.57.tgz", ++ "integrity": "sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==", + "license": "MIT", + "engines": { + "node": ">=18" @@ -845,7 +1255,50 @@ index d4fa987..3e333f9 100644 "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://sfw.security.sentry.io/npm/object-inspect/-/object-inspect-1.13.4.tgz", -@@ -2296,6 +2903,31 @@ +@@ -2231,6 +3176,42 @@ + "wrappy": "1" + } + }, ++ "node_modules/oxc-parser": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/oxc-parser/-/oxc-parser-0.143.0.tgz", ++ "integrity": "sha512-ov0NzaDCOInknS7mP1cwKdJERt3utPW8ldjtdUXQ8Ty0GEFD08wk422vCUN0d7pST6kqtV7dxoI9w1Zi0l/9TA==", ++ "license": "MIT", ++ "dependencies": { ++ "@oxc-project/types": "^0.143.0" ++ }, ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/Boshen" ++ }, ++ "optionalDependencies": { ++ "@oxc-parser/binding-android-arm-eabi": "0.143.0", ++ "@oxc-parser/binding-android-arm64": "0.143.0", ++ "@oxc-parser/binding-darwin-arm64": "0.143.0", ++ "@oxc-parser/binding-darwin-x64": "0.143.0", ++ "@oxc-parser/binding-freebsd-x64": "0.143.0", ++ "@oxc-parser/binding-linux-arm-gnueabihf": "0.143.0", ++ "@oxc-parser/binding-linux-arm-musleabihf": "0.143.0", ++ "@oxc-parser/binding-linux-arm64-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-arm64-musl": "0.143.0", ++ "@oxc-parser/binding-linux-ppc64-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-riscv64-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-riscv64-musl": "0.143.0", ++ "@oxc-parser/binding-linux-s390x-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-x64-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-x64-musl": "0.143.0", ++ "@oxc-parser/binding-openharmony-arm64": "0.143.0", ++ "@oxc-parser/binding-win32-arm64-msvc": "0.143.0", ++ "@oxc-parser/binding-win32-ia32-msvc": "0.143.0", ++ "@oxc-parser/binding-win32-x64-msvc": "0.143.0" ++ } ++ }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://sfw.security.sentry.io/npm/p-finally/-/p-finally-1.0.0.tgz", +@@ -2296,6 +3277,31 @@ "node": ">= 0.8" } }, @@ -866,9 +1319,9 @@ index d4fa987..3e333f9 100644 + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { -+ "version": "11.5.2", -+ "resolved": "https://sfw.security.sentry.io/npm/lru-cache/-/lru-cache-11.5.2.tgz", -+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", ++ "version": "11.5.3", ++ "resolved": "https://sfw.security.sentry.io/npm/lru-cache/-/lru-cache-11.5.3.tgz", ++ "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" @@ -877,7 +1330,7 @@ index d4fa987..3e333f9 100644 "node_modules/path-to-regexp": { "version": "8.4.2", "resolved": "https://sfw.security.sentry.io/npm/path-to-regexp/-/path-to-regexp-8.4.2.tgz", -@@ -2395,6 +3027,12 @@ +@@ -2395,6 +3401,12 @@ "split2": "^4.1.0" } }, @@ -890,7 +1343,7 @@ index d4fa987..3e333f9 100644 "node_modules/postgres-array": { "version": "2.0.0", "resolved": "https://sfw.security.sentry.io/npm/postgres-array/-/postgres-array-2.0.0.tgz", -@@ -2556,15 +3194,12 @@ +@@ -2556,15 +3568,12 @@ "license": "MIT" }, "node_modules/semver": { @@ -909,7 +1362,7 @@ index d4fa987..3e333f9 100644 } }, "node_modules/send": { -@@ -2593,6 +3228,18 @@ +@@ -2593,6 +3602,18 @@ "url": "https://opencollective.com/express" } }, @@ -928,7 +1381,7 @@ index d4fa987..3e333f9 100644 "node_modules/serve-static": { "version": "2.2.1", "resolved": "https://sfw.security.sentry.io/npm/serve-static/-/serve-static-2.2.1.tgz", -@@ -2708,6 +3355,21 @@ +@@ -2708,6 +3729,21 @@ "node": ">= 0.8" } }, @@ -950,7 +1403,7 @@ index d4fa987..3e333f9 100644 "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://sfw.security.sentry.io/npm/toidentifier/-/toidentifier-1.0.1.tgz", -@@ -2835,6 +3497,36 @@ +@@ -2835,6 +3871,36 @@ "node": ">= 0.8" } }, @@ -987,7 +1440,7 @@ index d4fa987..3e333f9 100644 "node_modules/vary": { "version": "1.1.2", "resolved": "https://sfw.security.sentry.io/npm/vary/-/vary-1.1.2.tgz", -@@ -2880,6 +3572,12 @@ +@@ -2880,6 +3946,12 @@ "node": ">=0.4" } }, @@ -1001,19 +1454,19 @@ index d4fa987..3e333f9 100644 "version": "4.4.3", "resolved": "https://sfw.security.sentry.io/npm/zod/-/zod-4.4.3.tgz", diff --git a/apps/slack-agent/package.json b/apps/slack-agent/package.json -index d5c89ef..751dc93 100644 +index 0000000..0000000 100644 --- a/apps/slack-agent/package.json +++ b/apps/slack-agent/package.json @@ -12,6 +12,7 @@ }, "dependencies": { "@openrouter/ai-sdk-provider": "3.0.0", -+ "@sentry/node": "11.0.0-rc.0", ++ "@sentry/node": "11.0.0", "@slack/bolt": "^4.4.0", "ai": "7.0.64", "dotenv": "17.4.2", diff --git a/apps/slack-agent/src/app.ts b/apps/slack-agent/src/app.ts -index e8e0b53..214b31b 100644 +index 0000000..0000000 100644 --- a/apps/slack-agent/src/app.ts +++ b/apps/slack-agent/src/app.ts @@ -1,3 +1,5 @@ @@ -1251,7 +1704,7 @@ index e8e0b53..214b31b 100644 app.event( diff --git a/apps/slack-agent/src/instrument.ts b/apps/slack-agent/src/instrument.ts new file mode 100644 -index 0000000..bddd1e5 +index 0000000..0000000 --- /dev/null +++ b/apps/slack-agent/src/instrument.ts @@ -0,0 +1,6 @@ diff --git a/solutions/05-pr-reviewer/README.md b/solutions/05-pr-reviewer/README.md index 36cbcb3..52047fa 100644 --- a/solutions/05-pr-reviewer/README.md +++ b/solutions/05-pr-reviewer/README.md @@ -1,6 +1,6 @@ # Solution: instrument the pr-reviewer -`instrumentation.patch` adds Sentry (`@sentry/node@11.0.0-rc.0`, +`instrumentation.patch` adds Sentry (`@sentry/node@11.0.0`, `@flue/opentelemetry@2.0.3`) to `apps/pr-reviewer`, wired through Flue's OpenTelemetry adapter. @@ -23,7 +23,7 @@ OpenTelemetry adapter. - `README.md` — adds a Sentry section. - `package.json` / `package-lock.json` — adds the two dependencies. -SDK: @sentry/node 11.0.0-rc.0 +SDK: @sentry/node 11.0.0 ## Env vars it needs diff --git a/solutions/05-pr-reviewer/instrumentation.patch b/solutions/05-pr-reviewer/instrumentation.patch index e8644ed..f3f18e2 100644 --- a/solutions/05-pr-reviewer/instrumentation.patch +++ b/solutions/05-pr-reviewer/instrumentation.patch @@ -1,3 +1,13 @@ +diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml +index 0000000..0000000 100644 +--- a/.github/workflows/review.yml ++++ b/.github/workflows/review.yml +@@ -42,4 +42,5 @@ jobs: + GITHUB_REPOSITORY: ${{ github.repository }} + PR_NUMBER: ${{ github.event.pull_request.number }} + PR_DESCRIPTION: ${{ github.event.pull_request.body }} ++ SENTRY_DSN: ${{ secrets.SENTRY_DSN }} + run: npx flue run src/agents/review.ts --message 'Review the diff at fixtures/latest.diff and post your review.' diff --git a/apps/pr-reviewer/.env.example b/apps/pr-reviewer/.env.example index 0000000..0000000 100644 --- a/apps/pr-reviewer/.env.example @@ -10,21 +20,11 @@ index 0000000..0000000 100644 + # GITHUB_REPOSITORY, GITHUB_TOKEN, PR_NUMBER, and PR_DESCRIPTION come from # GitHub Actions (see .github/workflows/review.yml) and are not set locally. -diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml -index 0000000..0000000 100644 ---- a/.github/workflows/review.yml -+++ b/.github/workflows/review.yml -@@ -43,4 +43,5 @@ jobs: - GITHUB_REPOSITORY: ${{ github.repository }} - PR_NUMBER: ${{ github.event.pull_request.number }} - PR_DESCRIPTION: ${{ github.event.pull_request.body }} -+ SENTRY_DSN: ${{ secrets.SENTRY_DSN }} - run: npx flue run src/agents/review.ts --message 'Review the diff at fixtures/latest.diff and post your review.' diff --git a/apps/pr-reviewer/README.md b/apps/pr-reviewer/README.md index 0000000..0000000 100644 --- a/apps/pr-reviewer/README.md +++ b/apps/pr-reviewer/README.md -@@ -30,5 +30,10 @@ to `review.md` instead of posted to a pull request. +@@ -43,5 +43,10 @@ root, copy the workflow, and remove the `paths` filter and the ## Sentry @@ -47,8 +47,8 @@ index 0000000..0000000 100644 "dependencies": { + "@flue/opentelemetry": "2.0.3", "@flue/runtime": "2.0.3", -+ "@opentelemetry/api": "^1.9.0", -+ "@sentry/node": "11.0.0-rc.0", ++ "@opentelemetry/api": "1.9.0", ++ "@sentry/node": "11.0.0", "valibot": "1.4.2" }, "devDependencies": { @@ -127,9 +127,9 @@ index 0000000..0000000 100644 + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/parser": { -+ "version": "7.29.8", -+ "resolved": "https://sfw.security.sentry.io/npm/@babel/parser/-/parser-7.29.8.tgz", -+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", ++ "version": "7.29.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@babel/parser/-/parser-7.29.9.tgz", ++ "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" @@ -272,21 +272,1157 @@ index 0000000..0000000 100644 "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", -@@ -2359,6 +2538,381 @@ - "dev": true, - "license": "MIT" +@@ -1634,24 +1813,13 @@ + "node": ">=14" + } + }, +- "node_modules/@oxc-project/types": { +- "version": "0.150.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxc-project/types/-/types-0.150.0.tgz", +- "integrity": "sha512-rDS5/31E9HfPl/CIzGrn0DOlvBbXFseQ5URJ9sYMfstbKLD/c6Gm9vmRzRGDdAXyOIL4zmO37lc9RIwYqVruZw==", +- "dev": true, +- "license": "MIT", +- "funding": { +- "url": "https://github.com/sponsors/oxc-project" +- } +- }, +- "node_modules/@oxlint/binding-android-arm-eabi": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.78.0.tgz", +- "integrity": "sha512-Bu819lmAfZMUHErrpe0cEWj3iaefuUODHSU8+UbXy67V/r7/7f4K3FL0NmbD85E+wiFLDYuhP8Zlv0XnVeXshw==", ++ "node_modules/@oxc-parser/binding-android-arm-eabi": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.143.0.tgz", ++ "integrity": "sha512-n9uozULWflPqBtdmI8lAabLqGKNgLVNN0ZH8HfgCwpKGNtzRzauB76jTiW/3YLkcA7N1zskpi9GdVnZuu1SAvg==", + "cpu": [ + "arm" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -1661,14 +1829,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-android-arm64": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-android-arm64/-/binding-android-arm64-1.78.0.tgz", +- "integrity": "sha512-CDfxZgB61B7buRdY2FJoAYYPPXCZ1EoC1LKscnC5dg3kjobdxiconvAvvN1BmHyW4PyFT3jRLDag/BY/roSNBQ==", ++ "node_modules/@oxc-parser/binding-android-arm64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.143.0.tgz", ++ "integrity": "sha512-9BbdjHETk6O3zH/DDid9IgBtF0GlpLabNKN231uraXpRDSfY+iiZxTP5bk1Z63GBownVdhdINFIeddmMz4MzpQ==", + "cpu": [ + "arm64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -1678,14 +1845,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-darwin-arm64": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.78.0.tgz", +- "integrity": "sha512-2Y2U9Ahrz+OO0Ej88f9SJYq51/jUBp1Mc7iZu0ukrbeeZ3gpRGfzIFnoqfHDY96xr0GEfNrPUBFEy0nN5aD7HA==", ++ "node_modules/@oxc-parser/binding-darwin-arm64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.143.0.tgz", ++ "integrity": "sha512-gh+6ecoHUy4/sUcolBl/1qPXKBbYNxFY0Pk0ujgQvINTMSftJY7o4yb8gOkDJPeZeB8+a+u7xTe6umoP8N5HFA==", + "cpu": [ + "arm64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -1695,14 +1861,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-darwin-x64": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.78.0.tgz", +- "integrity": "sha512-rpych6eJq6m9jDRypTEaPD1xysaEW5h9+xuxhGK/QhOg+/xaqPZrCrTNoIl/f3nEjuJeCEmstNDlrE9rJi/3/g==", ++ "node_modules/@oxc-parser/binding-darwin-x64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.143.0.tgz", ++ "integrity": "sha512-qd1hl2d+lXgHv/VQ/M9qm8TrMC5T4RqDBwtOnl+1D0QMjwcz+8AaB4JSg8STgeag0GP6a6L74XEGAsrTSJWNzQ==", + "cpu": [ + "x64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -1712,14 +1877,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-freebsd-x64": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.78.0.tgz", +- "integrity": "sha512-IcMGrQT3QizkOESUJd5et+rOhVqSkNDfNik1cvrKDqIbzqx9KMtRswpFgkCuNTSwylCFLKhGUu8KmqY1ZnC0Dg==", ++ "node_modules/@oxc-parser/binding-freebsd-x64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.143.0.tgz", ++ "integrity": "sha512-M5XXcNa7aOqLPKTR41msfghKu2yQ4xWvCm11/gwU0JzOzHNk5sgW//rVEjJ+LO48+VDAMzXTSzurUVxIDKwozw==", + "cpu": [ + "x64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -1729,14 +1893,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-arm-gnueabihf": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.78.0.tgz", +- "integrity": "sha512-/uLdoJ0IXE6vo/0f0LKjinQAp+re+VMaCWaNT8ENIv2EOCkSsc8SGaflXAuW0Jua2dq5+GLVWm1NQK7P3UFSNQ==", ++ "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.143.0.tgz", ++ "integrity": "sha512-T/GXusuOkPNQhCQCSBbcU/N8j0rAypuDBl1IyFK+lyYT594XsVz80clPC/OtbSSpBGyJxj8uYEfctxVuxVYoww==", + "cpu": [ + "arm" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -1746,14 +1909,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-arm-musleabihf": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.78.0.tgz", +- "integrity": "sha512-7xi4Wb/O8NRJhLoUXmDJMUVpNYvB5kefdhFU1Jb8rtae4QoXlTiLwI14X4YvAXVZLNZChP8m5qO9SQAlWQTbkQ==", ++ "node_modules/@oxc-parser/binding-linux-arm-musleabihf": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.143.0.tgz", ++ "integrity": "sha512-oKu4RcBlXSqo3OC62dp6YTnQaZIurNDpCX3BnAM3+bJxt7s8J2TJKMnC0UYer1qhlRaDCg6wkTaTw+2IlsZ12w==", + "cpu": [ + "arm" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -1763,14 +1925,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-arm64-gnu": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.78.0.tgz", +- "integrity": "sha512-4hFW0+fVXa3OIh1Y4A5SPkmvI4wuuBSrCVKzOyE7PTjhc7yEqZ1pmvEEeS5Lj/MaqvegFxXyF33N+6jkehxdyg==", ++ "node_modules/@oxc-parser/binding-linux-arm64-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.143.0.tgz", ++ "integrity": "sha512-WJBbD186AZmMGaSIhlktC+rPl8L3peCTXAh88Ih9uEvK0en2mPojGyCGYiL6mHtV1RPV3JyfJW5t6n5hh0lXhA==", + "cpu": [ + "arm64" + ], +- "dev": true, + "libc": [ + "glibc" + ], +@@ -1783,14 +1944,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-arm64-musl": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.78.0.tgz", +- "integrity": "sha512-oC0mvsgBJjlMijSDEhx9KuvR9zYeHXceA9MjbuXB1F8NSR78Yj2unOBrstEvTVaq+pko+kuue6DajC00eqvTdg==", ++ "node_modules/@oxc-parser/binding-linux-arm64-musl": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.143.0.tgz", ++ "integrity": "sha512-t1AcYOwEzgceadT4v5e+vaCCb0AncCA3v5AyzfBAz/tMq11qzVccXKzNHtkWdjBsgvTKwRkaUF3QvT4kot8vcQ==", + "cpu": [ + "arm64" + ], +- "dev": true, + "libc": [ + "musl" + ], +@@ -1803,14 +1963,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-ppc64-gnu": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.78.0.tgz", +- "integrity": "sha512-XAllT5SUZS+ohjuZ3/5S0cwe0r7eboiuigeStCZ5DXRYx/2KVM2UvQXvAfyzXEimtQjAB7cDQ2YxDe2Zl2WNQQ==", ++ "node_modules/@oxc-parser/binding-linux-ppc64-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.143.0.tgz", ++ "integrity": "sha512-RsnO/NoD8376LMJq8JS8TwI0ieNaFRTuNe2GVJntQg6gwZNMENZsEbknHdVwjpOmxdGLGodcwaGSbAeRr5Bgjw==", + "cpu": [ + "ppc64" + ], +- "dev": true, + "libc": [ + "glibc" + ], +@@ -1823,14 +1982,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-riscv64-gnu": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.78.0.tgz", +- "integrity": "sha512-trucMER/0QtecoXvc1y/UVqE3kwJipDwrx4oHfj+nNm3dq2zjP44WT0CfHNDPM3G1DXIkx/gY6lAD21NSCZVhA==", ++ "node_modules/@oxc-parser/binding-linux-riscv64-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.143.0.tgz", ++ "integrity": "sha512-48fSVfR9TZi5CASZFyv0VC6z6BCoeihFsX031mAD/oSH7d9PYsPgIqza7d9mjP7Z2KTEpTFyH6SIu0Ui6R1vdg==", + "cpu": [ + "riscv64" + ], +- "dev": true, + "libc": [ + "glibc" + ], +@@ -1843,14 +2001,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-riscv64-musl": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.78.0.tgz", +- "integrity": "sha512-cm3O4F/HQbdzOUX5mKHqG5KDL6E5w0pnlZ+fbBy2rmLryPOowkuLagFHTopQsEIpjcaZoPOrL+BmmAytAG9HFg==", ++ "node_modules/@oxc-parser/binding-linux-riscv64-musl": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.143.0.tgz", ++ "integrity": "sha512-T8CpdD+SfE01DnIOD4HpVxu0ZJOfMJ/VhCvikKfaXAxkZ+9veyLM/D2hpi7Y2hFUyPmVQO3FNZHmYzV/WlVR4g==", + "cpu": [ + "riscv64" + ], +- "dev": true, + "libc": [ + "musl" + ], +@@ -1863,14 +2020,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-s390x-gnu": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.78.0.tgz", +- "integrity": "sha512-33wRf6HqGNsybJ3qX4cGaQN2ODPxNmc1rMa0mrTmx3eFq1VzOnvQooi9bIGVYakW8a/wmqVx1mgsUm8R2xfTiw==", ++ "node_modules/@oxc-parser/binding-linux-s390x-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.143.0.tgz", ++ "integrity": "sha512-QLdeMsCcacenPEFsfxnBUDF1y6opyz5+fmOz9bfD5Y7fiGCMupUCuB3KTPQhNwshIG1P9fPqar9MHxuBDd4bwQ==", + "cpu": [ + "s390x" + ], +- "dev": true, + "libc": [ + "glibc" + ], +@@ -1883,14 +2039,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-x64-gnu": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.78.0.tgz", +- "integrity": "sha512-rRdISSYegj6VganMZ9tjRjijowfHJ09IZU01i0toBAqr6n5LEtwHq2IeS4FjW2RoskOHlb6efB26H5izYb3GEQ==", ++ "node_modules/@oxc-parser/binding-linux-x64-gnu": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.143.0.tgz", ++ "integrity": "sha512-659ujfqLy6k7cuH3sbzhd8b+ztSq+i6E2E9pG78Q0BmHjAExfGIdgc8cGgMdwAozDXeZFHkJ+LXYJdWsaGdgyw==", + "cpu": [ + "x64" + ], +- "dev": true, + "libc": [ + "glibc" + ], +@@ -1903,14 +2058,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-linux-x64-musl": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.78.0.tgz", +- "integrity": "sha512-GmsP4rW0xTL6u5CVdcDsaN5Fbc7hBc382Wmar1kttbnwSEviM+rSINKOMQ+UQ6iH+AGwC+8gaAiwu134Tgh6Lg==", ++ "node_modules/@oxc-parser/binding-linux-x64-musl": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.143.0.tgz", ++ "integrity": "sha512-/Mw/9j4TfZcnKphPrzOE6t4MMknXadcAAuVUlDRTF/ETWB5xOgQvOJV2Mh9We/bWxZdoxaGAdc+hy4GuYwQ2yQ==", + "cpu": [ + "x64" + ], +- "dev": true, + "libc": [ + "musl" + ], +@@ -1923,14 +2077,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-openharmony-arm64": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.78.0.tgz", +- "integrity": "sha512-sy9yeYuADc8a+n4TLBayzMCZiHPW78DcIFVpOXTmdKHWQeM9xe5uzkqIIZmi326D5hY9XVwacipEB1p7tQjPAg==", ++ "node_modules/@oxc-parser/binding-openharmony-arm64": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.143.0.tgz", ++ "integrity": "sha512-8rIKWR2BFuifbIK/1XB9wTaSdtuJ25dlE7ZQYDnEwj/2xH2vHsxnvIjHT3ZjSVuLLwGGlSslIG/fbOJ8TV8rTw==", + "cpu": [ + "arm64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -1940,14 +2093,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-win32-arm64-msvc": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.78.0.tgz", +- "integrity": "sha512-rjc2hF1KfMi8fZj1X/m3AmnHbdsF3rL0v6KQg0Uc880Yb2khjz+3U14sfdZ7jWTpRnN1m1NQa/TT7uU9lJWPrA==", ++ "node_modules/@oxc-parser/binding-win32-arm64-msvc": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.143.0.tgz", ++ "integrity": "sha512-5U9kQYMfRRI6Zq7KDxgbIP0RMnKrfn3gLepRMgJuRkPSUALTiRCk9d/uyhb4lGDjUdzwK7mBkKqhLgzBPCmLpQ==", + "cpu": [ + "arm64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -1957,14 +2109,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-win32-ia32-msvc": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.78.0.tgz", +- "integrity": "sha512-zcuXFVrEFHIafRfkCQT8w/Xe41o07ozl/vwHq7p94vB29xVzsB0sZGYORU1jhcYKv3Lr0J3HbJ2T4fHH5rWmvA==", ++ "node_modules/@oxc-parser/binding-win32-ia32-msvc": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.143.0.tgz", ++ "integrity": "sha512-25P7AaHk4R88Yv2XH4gToDVmh0cOu+bEURQU10CRrmvgabfRArSGAP5osmwUKeSUHj0VS50upbpbRWWW/m7mHA==", + "cpu": [ + "ia32" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -1974,14 +2125,13 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@oxlint/binding-win32-x64-msvc": { +- "version": "1.78.0", +- "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.78.0.tgz", +- "integrity": "sha512-Sb5ocmLSuYeOuXd+CFOToGKp/gjXUEWDnvIGwhnh8aq8wY4TMmEnKnvbogSW7RdMZv77JSARduS7/gv+khYEjA==", ++ "node_modules/@oxc-parser/binding-win32-x64-msvc": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.143.0.tgz", ++ "integrity": "sha512-ORMh3JE1s6V7ySicdRK7vgaDQnn5o+UHg9ct989PlWHbel8O9ARrmWXM6kZjrBMtNucxNayQ8g69G0VfWzhANw==", + "cpu": [ + "x64" + ], +- "dev": true, + "license": "MIT", + "optional": true, + "os": [ +@@ -1991,67 +2141,20 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@protobufjs/aspromise": { +- "version": "1.1.2", +- "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", +- "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", +- "license": "BSD-3-Clause" +- }, +- "node_modules/@protobufjs/base64": { +- "version": "1.1.2", +- "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/base64/-/base64-1.1.2.tgz", +- "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", +- "license": "BSD-3-Clause" +- }, +- "node_modules/@protobufjs/codegen": { +- "version": "2.0.5", +- "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/codegen/-/codegen-2.0.5.tgz", +- "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", +- "license": "BSD-3-Clause" +- }, +- "node_modules/@protobufjs/eventemitter": { +- "version": "1.1.1", +- "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", +- "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", +- "license": "BSD-3-Clause" +- }, +- "node_modules/@protobufjs/fetch": { +- "version": "1.1.1", +- "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/fetch/-/fetch-1.1.1.tgz", +- "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", +- "license": "BSD-3-Clause", +- "dependencies": { +- "@protobufjs/aspromise": "^1.1.1" ++ "node_modules/@oxc-project/types": { ++ "version": "0.150.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-project/types/-/types-0.150.0.tgz", ++ "integrity": "sha512-rDS5/31E9HfPl/CIzGrn0DOlvBbXFseQ5URJ9sYMfstbKLD/c6Gm9vmRzRGDdAXyOIL4zmO37lc9RIwYqVruZw==", ++ "dev": true, ++ "license": "MIT", ++ "funding": { ++ "url": "https://github.com/sponsors/oxc-project" + } + }, +- "node_modules/@protobufjs/float": { +- "version": "1.0.2", +- "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/float/-/float-1.0.2.tgz", +- "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", +- "license": "BSD-3-Clause" +- }, +- "node_modules/@protobufjs/path": { +- "version": "1.1.2", +- "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/path/-/path-1.1.2.tgz", +- "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", +- "license": "BSD-3-Clause" +- }, +- "node_modules/@protobufjs/pool": { +- "version": "1.1.0", +- "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/pool/-/pool-1.1.0.tgz", +- "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", +- "license": "BSD-3-Clause" +- }, +- "node_modules/@protobufjs/utf8": { +- "version": "1.1.2", +- "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/utf8/-/utf8-1.1.2.tgz", +- "integrity": "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==", +- "license": "BSD-3-Clause" +- }, +- "node_modules/@rolldown/binding-android-arm-eabi": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.9.tgz", +- "integrity": "sha512-tNISae1QEf/vkb3xkRcjV5SEdzPE97We5IVaa2Z8jSszQPZ8U60B/YCYpw4QI7VidYsBtKavczXf+DyDs9WGxw==", ++ "node_modules/@oxlint/binding-android-arm-eabi": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.78.0.tgz", ++ "integrity": "sha512-Bu819lmAfZMUHErrpe0cEWj3iaefuUODHSU8+UbXy67V/r7/7f4K3FL0NmbD85E+wiFLDYuhP8Zlv0XnVeXshw==", + "cpu": [ + "arm" + ], +@@ -2065,10 +2168,10 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@rolldown/binding-android-arm64": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.9.tgz", +- "integrity": "sha512-YC8YsI30o606GTZi0VyzYlsDKFP8W61i/QzayHDkLbNEz/IShqAmTa+hsJRj13xTHA0H+6fk4b2UmGn+Q/cMlg==", ++ "node_modules/@oxlint/binding-android-arm64": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-android-arm64/-/binding-android-arm64-1.78.0.tgz", ++ "integrity": "sha512-CDfxZgB61B7buRdY2FJoAYYPPXCZ1EoC1LKscnC5dg3kjobdxiconvAvvN1BmHyW4PyFT3jRLDag/BY/roSNBQ==", + "cpu": [ + "arm64" + ], +@@ -2082,10 +2185,10 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@rolldown/binding-darwin-arm64": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.9.tgz", +- "integrity": "sha512-IwhlH3qK5urrY8hZiEgGkHKEFN901p/p2bjxCxJlr4GyNnF7wYpUvK+Y43uaRYuC4hpfjzbR3SJC3arX1jGvmw==", ++ "node_modules/@oxlint/binding-darwin-arm64": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.78.0.tgz", ++ "integrity": "sha512-2Y2U9Ahrz+OO0Ej88f9SJYq51/jUBp1Mc7iZu0ukrbeeZ3gpRGfzIFnoqfHDY96xr0GEfNrPUBFEy0nN5aD7HA==", + "cpu": [ + "arm64" + ], +@@ -2099,10 +2202,10 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@rolldown/binding-darwin-x64": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.9.tgz", +- "integrity": "sha512-XxpJfVzFh+jilRxIXUqcfYAYcunIc/XEzIizsOL1fcJee5Sf7H3mH8WlLmfHfluz5amqR88QQo9izKtmMlavAw==", ++ "node_modules/@oxlint/binding-darwin-x64": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.78.0.tgz", ++ "integrity": "sha512-rpych6eJq6m9jDRypTEaPD1xysaEW5h9+xuxhGK/QhOg+/xaqPZrCrTNoIl/f3nEjuJeCEmstNDlrE9rJi/3/g==", + "cpu": [ + "x64" + ], +@@ -2116,10 +2219,10 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@rolldown/binding-freebsd-x64": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.9.tgz", +- "integrity": "sha512-kSfvhmgeWyfkbT3p/1s5vSgboogoah2zkm9fX2zjg2hHxSV7T4KhMWRUUaRk4OXNqoD3QAUeRqLcs1aZOK4U1g==", ++ "node_modules/@oxlint/binding-freebsd-x64": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.78.0.tgz", ++ "integrity": "sha512-IcMGrQT3QizkOESUJd5et+rOhVqSkNDfNik1cvrKDqIbzqx9KMtRswpFgkCuNTSwylCFLKhGUu8KmqY1ZnC0Dg==", + "cpu": [ + "x64" + ], +@@ -2133,10 +2236,10 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@rolldown/binding-linux-arm-gnueabihf": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.9.tgz", +- "integrity": "sha512-1RVzG17pxqbTfYLC352JlLt6kKLG+6Hr30n8DlIJqsnV5luUDd2Qdx9Ayw1Cabfyb1K9k0jXEZ7evxkRoT+uiw==", ++ "node_modules/@oxlint/binding-linux-arm-gnueabihf": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.78.0.tgz", ++ "integrity": "sha512-/uLdoJ0IXE6vo/0f0LKjinQAp+re+VMaCWaNT8ENIv2EOCkSsc8SGaflXAuW0Jua2dq5+GLVWm1NQK7P3UFSNQ==", + "cpu": [ + "arm" + ], +@@ -2150,10 +2253,27 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@rolldown/binding-linux-arm64-gnu": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.9.tgz", +- "integrity": "sha512-BXqPvZ2drqVD+/Z8UpKwcs4Mp7grM+eGFku4CAEKrEtcbAsUpzREphK1sogCRZGreVPiMkiiBtw0n3TPteuqvw==", ++ "node_modules/@oxlint/binding-linux-arm-musleabihf": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.78.0.tgz", ++ "integrity": "sha512-7xi4Wb/O8NRJhLoUXmDJMUVpNYvB5kefdhFU1Jb8rtae4QoXlTiLwI14X4YvAXVZLNZChP8m5qO9SQAlWQTbkQ==", ++ "cpu": [ ++ "arm" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxlint/binding-linux-arm64-gnu": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.78.0.tgz", ++ "integrity": "sha512-4hFW0+fVXa3OIh1Y4A5SPkmvI4wuuBSrCVKzOyE7PTjhc7yEqZ1pmvEEeS5Lj/MaqvegFxXyF33N+6jkehxdyg==", + "cpu": [ + "arm64" + ], +@@ -2170,10 +2290,10 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@rolldown/binding-linux-arm64-musl": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.9.tgz", +- "integrity": "sha512-11vWvo8YDwLzukt27J3aYDWU+gg2P7J+ZOmiJ0hkF5BXZDW7pVya7r40MXDy6ya0i9KamoENSVKIugvJNgFXIA==", ++ "node_modules/@oxlint/binding-linux-arm64-musl": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.78.0.tgz", ++ "integrity": "sha512-oC0mvsgBJjlMijSDEhx9KuvR9zYeHXceA9MjbuXB1F8NSR78Yj2unOBrstEvTVaq+pko+kuue6DajC00eqvTdg==", + "cpu": [ + "arm64" + ], +@@ -2190,10 +2310,10 @@ + "node": "^20.19.0 || >=22.12.0" + } + }, +- "node_modules/@rolldown/binding-linux-ppc64-gnu": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.9.tgz", +- "integrity": "sha512-a1tijMkdwsIARtc0F39ApURROkf3NwqinI6TOiSSWCTR7dT96dffNvMUtDHnq64wKNTIZOIlzKrFvvFUznJiyw==", ++ "node_modules/@oxlint/binding-linux-ppc64-gnu": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.78.0.tgz", ++ "integrity": "sha512-XAllT5SUZS+ohjuZ3/5S0cwe0r7eboiuigeStCZ5DXRYx/2KVM2UvQXvAfyzXEimtQjAB7cDQ2YxDe2Zl2WNQQ==", + "cpu": [ + "ppc64" + ], +@@ -2210,154 +2330,917 @@ + "node": "^20.19.0 || >=22.12.0" + } }, +- "node_modules/@rolldown/binding-linux-s390x-gnu": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.9.tgz", +- "integrity": "sha512-x6SQNdAvv4c3hWqTMaWuawzMX9myaCs/yEmlGsxJzkdClnHW7FbrjQuSiRDhuSYzEYoEMhsaJy9qHG/XNemJPQ==", +- "cpu": [ +- "s390x" +- ], +- "dev": true, +- "libc": [ +- "glibc" +- ], ++ "node_modules/@oxlint/binding-linux-riscv64-gnu": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.78.0.tgz", ++ "integrity": "sha512-trucMER/0QtecoXvc1y/UVqE3kwJipDwrx4oHfj+nNm3dq2zjP44WT0CfHNDPM3G1DXIkx/gY6lAD21NSCZVhA==", ++ "cpu": [ ++ "riscv64" ++ ], ++ "dev": true, ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxlint/binding-linux-riscv64-musl": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.78.0.tgz", ++ "integrity": "sha512-cm3O4F/HQbdzOUX5mKHqG5KDL6E5w0pnlZ+fbBy2rmLryPOowkuLagFHTopQsEIpjcaZoPOrL+BmmAytAG9HFg==", ++ "cpu": [ ++ "riscv64" ++ ], ++ "dev": true, ++ "libc": [ ++ "musl" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxlint/binding-linux-s390x-gnu": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.78.0.tgz", ++ "integrity": "sha512-33wRf6HqGNsybJ3qX4cGaQN2ODPxNmc1rMa0mrTmx3eFq1VzOnvQooi9bIGVYakW8a/wmqVx1mgsUm8R2xfTiw==", ++ "cpu": [ ++ "s390x" ++ ], ++ "dev": true, ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxlint/binding-linux-x64-gnu": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.78.0.tgz", ++ "integrity": "sha512-rRdISSYegj6VganMZ9tjRjijowfHJ09IZU01i0toBAqr6n5LEtwHq2IeS4FjW2RoskOHlb6efB26H5izYb3GEQ==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxlint/binding-linux-x64-musl": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.78.0.tgz", ++ "integrity": "sha512-GmsP4rW0xTL6u5CVdcDsaN5Fbc7hBc382Wmar1kttbnwSEviM+rSINKOMQ+UQ6iH+AGwC+8gaAiwu134Tgh6Lg==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "libc": [ ++ "musl" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxlint/binding-openharmony-arm64": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.78.0.tgz", ++ "integrity": "sha512-sy9yeYuADc8a+n4TLBayzMCZiHPW78DcIFVpOXTmdKHWQeM9xe5uzkqIIZmi326D5hY9XVwacipEB1p7tQjPAg==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "openharmony" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxlint/binding-win32-arm64-msvc": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.78.0.tgz", ++ "integrity": "sha512-rjc2hF1KfMi8fZj1X/m3AmnHbdsF3rL0v6KQg0Uc880Yb2khjz+3U14sfdZ7jWTpRnN1m1NQa/TT7uU9lJWPrA==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxlint/binding-win32-ia32-msvc": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.78.0.tgz", ++ "integrity": "sha512-zcuXFVrEFHIafRfkCQT8w/Xe41o07ozl/vwHq7p94vB29xVzsB0sZGYORU1jhcYKv3Lr0J3HbJ2T4fHH5rWmvA==", ++ "cpu": [ ++ "ia32" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@oxlint/binding-win32-x64-msvc": { ++ "version": "1.78.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.78.0.tgz", ++ "integrity": "sha512-Sb5ocmLSuYeOuXd+CFOToGKp/gjXUEWDnvIGwhnh8aq8wY4TMmEnKnvbogSW7RdMZv77JSARduS7/gv+khYEjA==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@protobufjs/aspromise": { ++ "version": "1.1.2", ++ "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", ++ "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", ++ "license": "BSD-3-Clause" ++ }, ++ "node_modules/@protobufjs/base64": { ++ "version": "1.1.2", ++ "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/base64/-/base64-1.1.2.tgz", ++ "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", ++ "license": "BSD-3-Clause" ++ }, ++ "node_modules/@protobufjs/codegen": { ++ "version": "2.0.5", ++ "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/codegen/-/codegen-2.0.5.tgz", ++ "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", ++ "license": "BSD-3-Clause" ++ }, ++ "node_modules/@protobufjs/eventemitter": { ++ "version": "1.1.1", ++ "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", ++ "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", ++ "license": "BSD-3-Clause" ++ }, ++ "node_modules/@protobufjs/fetch": { ++ "version": "1.1.1", ++ "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/fetch/-/fetch-1.1.1.tgz", ++ "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", ++ "license": "BSD-3-Clause", ++ "dependencies": { ++ "@protobufjs/aspromise": "^1.1.1" ++ } ++ }, ++ "node_modules/@protobufjs/float": { ++ "version": "1.0.2", ++ "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/float/-/float-1.0.2.tgz", ++ "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", ++ "license": "BSD-3-Clause" ++ }, ++ "node_modules/@protobufjs/path": { ++ "version": "1.1.2", ++ "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/path/-/path-1.1.2.tgz", ++ "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", ++ "license": "BSD-3-Clause" ++ }, ++ "node_modules/@protobufjs/pool": { ++ "version": "1.1.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/pool/-/pool-1.1.0.tgz", ++ "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", ++ "license": "BSD-3-Clause" ++ }, ++ "node_modules/@protobufjs/utf8": { ++ "version": "1.1.2", ++ "resolved": "https://sfw.security.sentry.io/npm/@protobufjs/utf8/-/utf8-1.1.2.tgz", ++ "integrity": "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==", ++ "license": "BSD-3-Clause" ++ }, ++ "node_modules/@rolldown/binding-android-arm-eabi": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.9.tgz", ++ "integrity": "sha512-tNISae1QEf/vkb3xkRcjV5SEdzPE97We5IVaa2Z8jSszQPZ8U60B/YCYpw4QI7VidYsBtKavczXf+DyDs9WGxw==", ++ "cpu": [ ++ "arm" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "android" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-android-arm64": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.9.tgz", ++ "integrity": "sha512-YC8YsI30o606GTZi0VyzYlsDKFP8W61i/QzayHDkLbNEz/IShqAmTa+hsJRj13xTHA0H+6fk4b2UmGn+Q/cMlg==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "android" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-darwin-arm64": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.9.tgz", ++ "integrity": "sha512-IwhlH3qK5urrY8hZiEgGkHKEFN901p/p2bjxCxJlr4GyNnF7wYpUvK+Y43uaRYuC4hpfjzbR3SJC3arX1jGvmw==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "darwin" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-darwin-x64": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.9.tgz", ++ "integrity": "sha512-XxpJfVzFh+jilRxIXUqcfYAYcunIc/XEzIizsOL1fcJee5Sf7H3mH8WlLmfHfluz5amqR88QQo9izKtmMlavAw==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "darwin" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-freebsd-x64": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.9.tgz", ++ "integrity": "sha512-kSfvhmgeWyfkbT3p/1s5vSgboogoah2zkm9fX2zjg2hHxSV7T4KhMWRUUaRk4OXNqoD3QAUeRqLcs1aZOK4U1g==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "freebsd" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-linux-arm-gnueabihf": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.9.tgz", ++ "integrity": "sha512-1RVzG17pxqbTfYLC352JlLt6kKLG+6Hr30n8DlIJqsnV5luUDd2Qdx9Ayw1Cabfyb1K9k0jXEZ7evxkRoT+uiw==", ++ "cpu": [ ++ "arm" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-linux-arm64-gnu": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.9.tgz", ++ "integrity": "sha512-BXqPvZ2drqVD+/Z8UpKwcs4Mp7grM+eGFku4CAEKrEtcbAsUpzREphK1sogCRZGreVPiMkiiBtw0n3TPteuqvw==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-linux-arm64-musl": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.9.tgz", ++ "integrity": "sha512-11vWvo8YDwLzukt27J3aYDWU+gg2P7J+ZOmiJ0hkF5BXZDW7pVya7r40MXDy6ya0i9KamoENSVKIugvJNgFXIA==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "libc": [ ++ "musl" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-linux-ppc64-gnu": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.9.tgz", ++ "integrity": "sha512-a1tijMkdwsIARtc0F39ApURROkf3NwqinI6TOiSSWCTR7dT96dffNvMUtDHnq64wKNTIZOIlzKrFvvFUznJiyw==", ++ "cpu": [ ++ "ppc64" ++ ], ++ "dev": true, ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-linux-s390x-gnu": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.9.tgz", ++ "integrity": "sha512-x6SQNdAvv4c3hWqTMaWuawzMX9myaCs/yEmlGsxJzkdClnHW7FbrjQuSiRDhuSYzEYoEMhsaJy9qHG/XNemJPQ==", ++ "cpu": [ ++ "s390x" ++ ], ++ "dev": true, ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-linux-x64-gnu": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.9.tgz", ++ "integrity": "sha512-9s0AZ8BFK5/n7B/TBoa2yJE3gI3KURrbXcPBlsAsvjU4VeJKgE90y1YtNxyEUIcHPQkg6/yfF3qihUrcM/Kf0Q==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "libc": [ ++ "glibc" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-linux-x64-musl": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.9.tgz", ++ "integrity": "sha512-P7VWAmV+WdJluH7ovnRGoiv2i8To7GAZ+kGzfGup635cyL7SyYl3lSUaA3Gp5THf0n/Co5EyEqb2zbqq+nMOHQ==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "libc": [ ++ "musl" ++ ], ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "linux" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-openharmony-arm64": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.9.tgz", ++ "integrity": "sha512-1qixtsE4BK8h+yS3BfmZ09UhA7O/N4IACva6YBr7EBvCJraByTuRcgOTaiA62Tm0vey3UcKXLOaoGHtYmNGEVg==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "openharmony" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-win32-arm64-msvc": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.9.tgz", ++ "integrity": "sha512-ok8IQjcEPs1AKZfuEUznVBrJw+gK4soq+bx8b1X2XoMqVClarc1q5JDmVtWXY1xfr6ZuHTAsPXHTgTrqKTZeww==", ++ "cpu": [ ++ "arm64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/binding-win32-x64-msvc": { ++ "version": "1.2.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.9.tgz", ++ "integrity": "sha512-Ip2mXoU0hM0boq3Rf+ekuT653OROSo6aSYcPT1VHE4q52KvyxgFkQgrgb/IEsxOuvQ2fZZbs8khJAyCEPM24/g==", ++ "cpu": [ ++ "x64" ++ ], ++ "dev": true, ++ "license": "MIT", ++ "optional": true, ++ "os": [ ++ "win32" ++ ], ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ } ++ }, ++ "node_modules/@rolldown/plugin-babel": { ++ "version": "0.2.4", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/plugin-babel/-/plugin-babel-0.2.4.tgz", ++ "integrity": "sha512-ygmm2j/mN+aCvstHo0x3IOu4uc6LqXT9SJ3q4kpfG/+Yhfz0B+E47FITcC0FljZADwUFARP6E2kiE+Lc26D8wg==", ++ "dev": true, ++ "license": "MIT", ++ "dependencies": { ++ "picomatch": "^4.0.7" ++ }, ++ "engines": { ++ "node": ">=22.12.0 || ^24.0.0" ++ }, ++ "peerDependencies": { ++ "@babel/core": "^7.29.0 || ^8.0.0-rc.1", ++ "@babel/plugin-transform-runtime": "^7.29.0 || ^8.0.0-rc.1", ++ "@babel/runtime": "^7.27.0 || ^8.0.0-rc.1", ++ "rolldown": "^1.0.0-rc.5", ++ "vite": "^8.0.0" ++ }, ++ "peerDependenciesMeta": { ++ "@babel/plugin-transform-runtime": { ++ "optional": true ++ }, ++ "@babel/runtime": { ++ "optional": true ++ }, ++ "vite": { ++ "optional": true ++ } ++ } ++ }, ++ "node_modules/@rolldown/pluginutils": { ++ "version": "1.0.1", ++ "resolved": "https://sfw.security.sentry.io/npm/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", ++ "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", ++ "dev": true, ++ "license": "MIT" ++ }, + "node_modules/@sentry/bundler-plugins": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/bundler-plugins/-/bundler-plugins-11.0.0-rc.0.tgz", -+ "integrity": "sha512-mfRtTo7MNMgAghHsTzcRV5XwdpV+YqdqA4OGgOSRqLEY5H1jxfO8j+orEjUvLk8pCgR4Y1cORsXKqpVXI4nh3w==", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/bundler-plugins/-/bundler-plugins-11.0.0.tgz", ++ "integrity": "sha512-Oe4/8CbsYrqdjTt91JFMBQza59IWUfSwPrlHGbbJT+qVCyebX2bykxv3mfa6Ty/Gmt8+gva/DI6Kjcyb9EgXBg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.18.5", -+ "@sentry/core": "11.0.0-rc.0", ++ "@sentry/core": "11.0.0", + "dotenv": "^17.4.2", + "glob": "^13.0.6", + "magic-string": "~0.30.8", ++ "oxc-parser": "^0.143.0", + "sentry": "^0.44.0", + "supports-color": "^8.1.1" + }, @@ -295,7 +1431,7 @@ index 0000000..0000000 100644 + }, + "peerDependencies": { + "rollup": ">=3.2.0", -+ "webpack": ">=5.0.0" ++ "webpack": ">=5.1.0" + }, + "peerDependenciesMeta": { + "rollup": { @@ -458,9 +1594,9 @@ index 0000000..0000000 100644 + } + }, + "node_modules/@sentry/bundler-plugins/node_modules/@babel/parser": { -+ "version": "7.29.8", -+ "resolved": "https://sfw.security.sentry.io/npm/@babel/parser/-/parser-7.29.8.tgz", -+ "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", ++ "version": "7.29.9", ++ "resolved": "https://sfw.security.sentry.io/npm/@babel/parser/-/parser-7.29.9.tgz", ++ "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" @@ -555,93 +1691,201 @@ index 0000000..0000000 100644 + "version": "0.23.0", + "resolved": "https://sfw.security.sentry.io/npm/@sentry/conventions/-/conventions-0.23.0.tgz", + "integrity": "sha512-+Euyo7CNVecoOusgUnq27oV97oshifgceKfnGnuKfXrPUVWA/cisvii3E1rlvy2yBrKvl9K1gCEo1Jqog5zjEQ==", -+ "license": "MIT", -+ "engines": { + "license": "MIT", +- "optional": true, +- "os": [ +- "linux" +- ], + "engines": { +- "node": "^20.19.0 || >=22.12.0" + "node": ">=14" -+ } -+ }, + } + }, +- "node_modules/@rolldown/binding-linux-x64-gnu": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.9.tgz", +- "integrity": "sha512-9s0AZ8BFK5/n7B/TBoa2yJE3gI3KURrbXcPBlsAsvjU4VeJKgE90y1YtNxyEUIcHPQkg6/yfF3qihUrcM/Kf0Q==", +- "cpu": [ +- "x64" +- ], +- "dev": true, +- "libc": [ +- "glibc" +- ], + "node_modules/@sentry/core": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/core/-/core-11.0.0-rc.0.tgz", -+ "integrity": "sha512-6KXLKGq1YgysUIzeD0cYQH/8Tg62V+UJV1d9FVNvKb0HnRgbiO9VWCCm1wGyYSENdGPdSa9zOOnk5ZC7WxLaAw==", -+ "license": "MIT", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/core/-/core-11.0.0.tgz", ++ "integrity": "sha512-Sdmg21POKmNwZDz8pH/2FtilWeryh3yxhRxbfA1ph8SnX2DkXoqX6G+uXyjCSYagW2pefVklmSNeWHmUlSqioA==", + "license": "MIT", +- "optional": true, +- "os": [ +- "linux" +- ], + "dependencies": { + "@sentry/conventions": "^0.23.0" + }, -+ "engines": { + "engines": { +- "node": "^20.19.0 || >=22.12.0" + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@rolldown/binding-linux-x64-musl": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.9.tgz", +- "integrity": "sha512-P7VWAmV+WdJluH7ovnRGoiv2i8To7GAZ+kGzfGup635cyL7SyYl3lSUaA3Gp5THf0n/Co5EyEqb2zbqq+nMOHQ==", +- "cpu": [ +- "x64" +- ], +- "dev": true, +- "libc": [ +- "musl" +- ], + "node_modules/@sentry/node": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/node/-/node-11.0.0-rc.0.tgz", -+ "integrity": "sha512-hztnJEx8Fcyp0wNJgVbrgWIy9jgkefo7A3c7Y7r7wrCwCl5gKwzzo53XYOkY2lf/rjTLaJCG8b21VjHaFldOZw==", -+ "license": "MIT", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/node/-/node-11.0.0.tgz", ++ "integrity": "sha512-ZHk2wYvnKPfaq05YHnva/a6EzZDLTG0EStcWnQdjSae/OxluwCfOfMqwlsKxaY8KDUkyqokTCUPqJITZpUH1Jw==", + "license": "MIT", +- "optional": true, +- "os": [ +- "linux" +- ], + "dependencies": { + "@opentelemetry/api": "^1.9.1", -+ "@sentry/bundler-plugins": "11.0.0-rc.0", ++ "@sentry/bundler-plugins": "11.0.0", + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0", -+ "@sentry/opentelemetry": "11.0.0-rc.0", -+ "@sentry/server-runtime-injection": "11.0.0-rc.0", -+ "@sentry/server-utils": "11.0.0-rc.0" ++ "@sentry/core": "11.0.0", ++ "@sentry/opentelemetry": "11.0.0", ++ "@sentry/server-runtime-injection": "11.0.0", ++ "@sentry/server-utils": "11.0.0" + }, -+ "engines": { + "engines": { +- "node": "^20.19.0 || >=22.12.0" + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@rolldown/binding-openharmony-arm64": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.9.tgz", +- "integrity": "sha512-1qixtsE4BK8h+yS3BfmZ09UhA7O/N4IACva6YBr7EBvCJraByTuRcgOTaiA62Tm0vey3UcKXLOaoGHtYmNGEVg==", +- "cpu": [ +- "arm64" +- ], +- "dev": true, +- "license": "MIT", +- "optional": true, +- "os": [ +- "openharmony" +- ], + "node_modules/@sentry/node/node_modules/@opentelemetry/api": { + "version": "1.9.1", + "resolved": "https://sfw.security.sentry.io/npm/@opentelemetry/api/-/api-1.9.1.tgz", + "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", + "license": "Apache-2.0", -+ "engines": { + "engines": { +- "node": "^20.19.0 || >=22.12.0" + "node": ">=8.0.0" -+ } -+ }, + } + }, +- "node_modules/@rolldown/binding-win32-arm64-msvc": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.9.tgz", +- "integrity": "sha512-ok8IQjcEPs1AKZfuEUznVBrJw+gK4soq+bx8b1X2XoMqVClarc1q5JDmVtWXY1xfr6ZuHTAsPXHTgTrqKTZeww==", +- "cpu": [ +- "arm64" +- ], +- "dev": true, + "node_modules/@sentry/opentelemetry": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/opentelemetry/-/opentelemetry-11.0.0-rc.0.tgz", -+ "integrity": "sha512-28Yy+Qoo84Ckxu40f2sB/NE+J2uacVkT+rD/GnK3+ExZfW/o2nV7eotIwKUprhoHM1w8EaMQusjZAMTzHc4geQ==", -+ "license": "MIT", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/opentelemetry/-/opentelemetry-11.0.0.tgz", ++ "integrity": "sha512-m2EtgppTtN6MxW0dKA45aZMI/xoFZYi2I2cvTIenFGTGLfxyjk6+YCbg0Jf/wdUWoZjR0k6kBBBIbv+zpuvTOA==", + "license": "MIT", +- "optional": true, +- "os": [ +- "win32" +- ], + "dependencies": { + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0" ++ "@sentry/core": "11.0.0" + }, -+ "engines": { + "engines": { +- "node": "^20.19.0 || >=22.12.0" + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0" -+ } -+ }, + } + }, +- "node_modules/@rolldown/binding-win32-x64-msvc": { +- "version": "1.2.9", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.9.tgz", +- "integrity": "sha512-Ip2mXoU0hM0boq3Rf+ekuT653OROSo6aSYcPT1VHE4q52KvyxgFkQgrgb/IEsxOuvQ2fZZbs8khJAyCEPM24/g==", +- "cpu": [ +- "x64" +- ], +- "dev": true, + "node_modules/@sentry/server-runtime-injection": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/server-runtime-injection/-/server-runtime-injection-11.0.0-rc.0.tgz", -+ "integrity": "sha512-x8XppxyzDZxweoHlfsW0l12ghquvp79o2UNXOcXETRb+40ud+RF+YdPtnv4yvsrByXScPkNzKVdJSjxevJCcrA==", -+ "license": "MIT", ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/server-runtime-injection/-/server-runtime-injection-11.0.0.tgz", ++ "integrity": "sha512-AE39xdGbi8WmcB9LtITuvJkp+sYxkPAR+3lRG4MYrJLVQS+YeYfn/AaZdEXOhnOagdpozsDbpEneGJn6vD8p6Q==", + "license": "MIT", +- "optional": true, +- "os": [ +- "win32" +- ], + "dependencies": { -+ "@sentry/core": "11.0.0-rc.0", -+ "@sentry/server-utils": "11.0.0-rc.0" ++ "@sentry/core": "11.0.0", ++ "@sentry/server-utils": "11.0.0" + }, -+ "engines": { + "engines": { +- "node": "^20.19.0 || >=22.12.0" + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@rolldown/plugin-babel": { +- "version": "0.2.4", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/plugin-babel/-/plugin-babel-0.2.4.tgz", +- "integrity": "sha512-ygmm2j/mN+aCvstHo0x3IOu4uc6LqXT9SJ3q4kpfG/+Yhfz0B+E47FITcC0FljZADwUFARP6E2kiE+Lc26D8wg==", +- "dev": true, + "node_modules/@sentry/server-utils": { -+ "version": "11.0.0-rc.0", -+ "resolved": "https://sfw.security.sentry.io/npm/@sentry/server-utils/-/server-utils-11.0.0-rc.0.tgz", -+ "integrity": "sha512-0+nsGmRdz8U+U5Cbe52FVfsBztcSY8v7u37id3lsEOktZQi8uJRQShp7BgvD8+ReXEuoVK/L2w7LxzTdtmxQig==", -+ "license": "MIT", -+ "dependencies": { ++ "version": "11.0.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@sentry/server-utils/-/server-utils-11.0.0.tgz", ++ "integrity": "sha512-XlKDtLoNqOhI+TgCNywan/tFy0yMRzw5+8mdp96KNHtF/YwO9s6c7qZcBG0x8+XDyC0EoNXDlBPJOMEZo5lD4Q==", + "license": "MIT", + "dependencies": { +- "picomatch": "^4.0.7" + "@opentelemetry/api": "^1.9.1", + "@sentry/conventions": "^0.23.0", -+ "@sentry/core": "11.0.0-rc.0" -+ }, -+ "engines": { ++ "@sentry/core": "11.0.0" + }, + "engines": { +- "node": ">=22.12.0 || ^24.0.0" +- }, +- "peerDependencies": { +- "@babel/core": "^7.29.0 || ^8.0.0-rc.1", +- "@babel/plugin-transform-runtime": "^7.29.0 || ^8.0.0-rc.1", +- "@babel/runtime": "^7.27.0 || ^8.0.0-rc.1", +- "rolldown": "^1.0.0-rc.5", +- "vite": "^8.0.0" +- }, +- "peerDependenciesMeta": { +- "@babel/plugin-transform-runtime": { +- "optional": true +- }, +- "@babel/runtime": { +- "optional": true +- }, +- "vite": { +- "optional": true +- } + "node": ">=20.19.0 <22.0.0 || >=22.12.0 <23.0.0 || >=23.2.0" -+ } -+ }, + } + }, +- "node_modules/@rolldown/pluginutils": { +- "version": "1.0.1", +- "resolved": "https://sfw.security.sentry.io/npm/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", +- "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", +- "dev": true, +- "license": "MIT" + "node_modules/@sentry/server-utils/node_modules/@opentelemetry/api": { + "version": "1.9.1", + "resolved": "https://sfw.security.sentry.io/npm/@opentelemetry/api/-/api-1.9.1.tgz", @@ -650,11 +1894,10 @@ index 0000000..0000000 100644 + "engines": { + "node": ">=8.0.0" + } -+ }, + }, "node_modules/@smithy/core": { "version": "3.34.1", - "resolved": "https://sfw.security.sentry.io/npm/@smithy/core/-/core-3.34.1.tgz", -@@ -2999,6 +3553,15 @@ +@@ -2999,6 +3882,15 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, @@ -670,7 +1913,7 @@ index 0000000..0000000 100644 "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://sfw.security.sentry.io/npm/base64-js/-/base64-js-1.5.1.tgz", -@@ -3023,9 +3586,7 @@ +@@ -3023,9 +3915,7 @@ "version": "2.11.24", "resolved": "https://sfw.security.sentry.io/npm/baseline-browser-mapping/-/baseline-browser-mapping-2.11.24.tgz", "integrity": "sha512-hYrgxie335U08WqICoGqKRzV1HFXv6zdxwJE4ekCb80CM9a0SVVsN4QPwT67RraRo+9h8IATk6uxHJw7QSkdOg==", @@ -680,7 +1923,7 @@ index 0000000..0000000 100644 "bin": { "baseline-browser-mapping": "dist/cli.cjs" }, -@@ -3089,11 +3650,22 @@ +@@ -3089,11 +3979,22 @@ "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", "license": "MIT" }, @@ -704,7 +1947,7 @@ index 0000000..0000000 100644 "funding": [ { "type": "opencollective", -@@ -3109,7 +3681,6 @@ +@@ -3109,7 +4010,6 @@ } ], "license": "MIT", @@ -712,7 +1955,7 @@ index 0000000..0000000 100644 "dependencies": { "baseline-browser-mapping": "^2.11.23", "caniuse-lite": "^1.0.30001810", -@@ -3188,7 +3759,6 @@ +@@ -3188,7 +4088,6 @@ "version": "1.0.30001810", "resolved": "https://sfw.security.sentry.io/npm/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz", "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==", @@ -720,7 +1963,7 @@ index 0000000..0000000 100644 "funding": [ { "type": "opencollective", -@@ -3203,8 +3773,7 @@ +@@ -3203,8 +4102,7 @@ "url": "https://github.com/sponsors/ai" } ], @@ -730,7 +1973,7 @@ index 0000000..0000000 100644 }, "node_modules/cliui": { "version": "9.0.1", -@@ -3269,9 +3838,7 @@ +@@ -3269,9 +4167,7 @@ "version": "2.0.0", "resolved": "https://sfw.security.sentry.io/npm/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", @@ -741,7 +1984,7 @@ index 0000000..0000000 100644 }, "node_modules/cookie": { "version": "0.7.2", -@@ -3409,6 +3976,18 @@ +@@ -3409,6 +4305,18 @@ "node": ">=0.3.1" } }, @@ -760,7 +2003,7 @@ index 0000000..0000000 100644 "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://sfw.security.sentry.io/npm/dunder-proto/-/dunder-proto-1.0.1.tgz", -@@ -3446,9 +4025,7 @@ +@@ -3446,9 +4354,7 @@ "version": "1.5.430", "resolved": "https://sfw.security.sentry.io/npm/electron-to-chromium/-/electron-to-chromium-1.5.430.tgz", "integrity": "sha512-e1QEj72Y4zd8RlNZVmoTg+iCOSVwpk05IOiiQwdrkwCSVlZfPthevErhE+nckGd2YbsXfp1SkisznhGVIXP2NQ==", @@ -771,7 +2014,7 @@ index 0000000..0000000 100644 }, "node_modules/emoji-regex": { "version": "10.6.0", -@@ -3561,7 +4138,6 @@ +@@ -3561,7 +4467,6 @@ "version": "3.2.0", "resolved": "https://sfw.security.sentry.io/npm/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", @@ -779,7 +2022,7 @@ index 0000000..0000000 100644 "license": "MIT", "engines": { "node": ">=6" -@@ -3868,9 +4444,7 @@ +@@ -3868,9 +4773,7 @@ "version": "1.0.0-beta.2", "resolved": "https://sfw.security.sentry.io/npm/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", @@ -789,7 +2032,7 @@ index 0000000..0000000 100644 "engines": { "node": ">=6.9.0" } -@@ -3939,6 +4513,23 @@ +@@ -3939,6 +4842,23 @@ "node": ">= 0.4" } }, @@ -813,7 +2056,7 @@ index 0000000..0000000 100644 "node_modules/google-auth-library": { "version": "10.9.1", "resolved": "https://sfw.security.sentry.io/npm/google-auth-library/-/google-auth-library-10.9.1.tgz", -@@ -3979,6 +4570,15 @@ +@@ -3979,6 +4899,15 @@ "url": "https://github.com/sponsors/ljharb" } }, @@ -829,7 +2072,7 @@ index 0000000..0000000 100644 "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://sfw.security.sentry.io/npm/has-symbols/-/has-symbols-1.1.0.tgz", -@@ -4196,7 +4796,6 @@ +@@ -4196,7 +5125,6 @@ "version": "3.1.0", "resolved": "https://sfw.security.sentry.io/npm/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", @@ -837,7 +2080,7 @@ index 0000000..0000000 100644 "license": "MIT", "bin": { "jsesc": "bin/jsesc" -@@ -4247,9 +4846,7 @@ +@@ -4247,9 +5175,7 @@ "version": "2.2.3", "resolved": "https://sfw.security.sentry.io/npm/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", @@ -847,7 +2090,7 @@ index 0000000..0000000 100644 "bin": { "json5": "lib/cli.js" }, -@@ -4577,9 +5174,7 @@ +@@ -4577,9 +5503,7 @@ "version": "11.5.2", "resolved": "https://sfw.security.sentry.io/npm/lru-cache/-/lru-cache-11.5.2.tgz", "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", @@ -857,7 +2100,7 @@ index 0000000..0000000 100644 "engines": { "node": "20 || >=22" } -@@ -4703,6 +5298,30 @@ +@@ -4703,6 +5627,30 @@ "node": ">= 0.6" } }, @@ -888,7 +2131,7 @@ index 0000000..0000000 100644 "node_modules/minisearch": { "version": "7.2.0", "resolved": "https://sfw.security.sentry.io/npm/minisearch/-/minisearch-7.2.0.tgz", -@@ -4810,9 +5429,7 @@ +@@ -4810,9 +5758,7 @@ "version": "2.0.56", "resolved": "https://sfw.security.sentry.io/npm/node-releases/-/node-releases-2.0.56.tgz", "integrity": "sha512-x0InOIyzgdk+eyaWaRJFH5snEtiImgBgblZ2CyPrLmqqcuMQkEvcDPHbzqbD8eDsSeJbVOjn+crzyzHaM4D+/A==", @@ -898,7 +2141,59 @@ index 0000000..0000000 100644 "engines": { "node": ">=18" } -@@ -5021,6 +5638,22 @@ +@@ -4902,6 +5848,51 @@ + } + } + }, ++ "node_modules/oxc-parser": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/oxc-parser/-/oxc-parser-0.143.0.tgz", ++ "integrity": "sha512-ov0NzaDCOInknS7mP1cwKdJERt3utPW8ldjtdUXQ8Ty0GEFD08wk422vCUN0d7pST6kqtV7dxoI9w1Zi0l/9TA==", ++ "license": "MIT", ++ "dependencies": { ++ "@oxc-project/types": "^0.143.0" ++ }, ++ "engines": { ++ "node": "^20.19.0 || >=22.12.0" ++ }, ++ "funding": { ++ "url": "https://github.com/sponsors/Boshen" ++ }, ++ "optionalDependencies": { ++ "@oxc-parser/binding-android-arm-eabi": "0.143.0", ++ "@oxc-parser/binding-android-arm64": "0.143.0", ++ "@oxc-parser/binding-darwin-arm64": "0.143.0", ++ "@oxc-parser/binding-darwin-x64": "0.143.0", ++ "@oxc-parser/binding-freebsd-x64": "0.143.0", ++ "@oxc-parser/binding-linux-arm-gnueabihf": "0.143.0", ++ "@oxc-parser/binding-linux-arm-musleabihf": "0.143.0", ++ "@oxc-parser/binding-linux-arm64-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-arm64-musl": "0.143.0", ++ "@oxc-parser/binding-linux-ppc64-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-riscv64-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-riscv64-musl": "0.143.0", ++ "@oxc-parser/binding-linux-s390x-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-x64-gnu": "0.143.0", ++ "@oxc-parser/binding-linux-x64-musl": "0.143.0", ++ "@oxc-parser/binding-openharmony-arm64": "0.143.0", ++ "@oxc-parser/binding-win32-arm64-msvc": "0.143.0", ++ "@oxc-parser/binding-win32-ia32-msvc": "0.143.0", ++ "@oxc-parser/binding-win32-x64-msvc": "0.143.0" ++ } ++ }, ++ "node_modules/oxc-parser/node_modules/@oxc-project/types": { ++ "version": "0.143.0", ++ "resolved": "https://sfw.security.sentry.io/npm/@oxc-project/types/-/types-0.143.0.tgz", ++ "integrity": "sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==", ++ "license": "MIT", ++ "funding": { ++ "url": "https://github.com/sponsors/Boshen" ++ } ++ }, + "node_modules/oxlint": { + "version": "1.78.0", + "resolved": "https://sfw.security.sentry.io/npm/oxlint/-/oxlint-1.78.0.tgz", +@@ -5021,6 +6012,22 @@ "node": ">=8" } }, @@ -921,7 +2216,7 @@ index 0000000..0000000 100644 "node_modules/path-to-regexp": { "version": "8.4.2", "resolved": "https://sfw.security.sentry.io/npm/path-to-regexp/-/path-to-regexp-8.4.2.tgz", -@@ -5037,7 +5670,6 @@ +@@ -5037,7 +6044,6 @@ "version": "1.1.1", "resolved": "https://sfw.security.sentry.io/npm/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", @@ -929,7 +2224,7 @@ index 0000000..0000000 100644 "license": "ISC" }, "node_modules/picomatch": { -@@ -5327,6 +5959,15 @@ +@@ -5327,6 +6333,15 @@ "license": "MIT", "peer": true }, @@ -945,7 +2240,7 @@ index 0000000..0000000 100644 "node_modules/send": { "version": "1.2.1", "resolved": "https://sfw.security.sentry.io/npm/send/-/send-1.2.1.tgz", -@@ -5355,6 +5996,18 @@ +@@ -5355,6 +6370,18 @@ "url": "https://opencollective.com/express" } }, @@ -964,7 +2259,7 @@ index 0000000..0000000 100644 "node_modules/serve-static": { "version": "2.2.1", "resolved": "https://sfw.security.sentry.io/npm/serve-static/-/serve-static-2.2.1.tgz", -@@ -5546,6 +6199,21 @@ +@@ -5546,6 +6573,21 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, @@ -986,7 +2281,7 @@ index 0000000..0000000 100644 "node_modules/tinyglobby": { "version": "0.2.17", "resolved": "https://sfw.security.sentry.io/npm/tinyglobby/-/tinyglobby-0.2.17.tgz", -@@ -5695,7 +6363,6 @@ +@@ -5695,7 +6737,6 @@ "version": "1.3.3", "resolved": "https://sfw.security.sentry.io/npm/update-browserslist-db/-/update-browserslist-db-1.3.3.tgz", "integrity": "sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==", @@ -994,7 +2289,7 @@ index 0000000..0000000 100644 "funding": [ { "type": "opencollective", -@@ -5711,7 +6378,6 @@ +@@ -5711,7 +6752,6 @@ } ], "license": "MIT", @@ -1002,7 +2297,7 @@ index 0000000..0000000 100644 "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" -@@ -5938,6 +6604,12 @@ +@@ -5938,6 +6978,12 @@ "node": ">=10" } }, @@ -1019,17 +2314,48 @@ diff --git a/apps/pr-reviewer/package.json b/apps/pr-reviewer/package.json index 0000000..0000000 100644 --- a/apps/pr-reviewer/package.json +++ b/apps/pr-reviewer/package.json -@@ -12,7 +12,10 @@ +@@ -13,7 +13,10 @@ "typecheck": "tsc --noEmit" }, "dependencies": { + "@flue/opentelemetry": "2.0.3", "@flue/runtime": "2.0.3", + "@opentelemetry/api": "1.9.0", -+ "@sentry/node": "11.0.0-rc.0", ++ "@sentry/node": "11.0.0", "valibot": "1.4.2" }, "devDependencies": { +diff --git a/apps/pr-reviewer/review.md b/apps/pr-reviewer/review.md +new file mode 100644 +index 0000000..0000000 +--- /dev/null ++++ b/apps/pr-reviewer/review.md +@@ -0,0 +1,25 @@ ++**Verdict: Request changes — the retry loop has an off-by-one bug and the HTTP error check was dropped, both of which undermine the feature's purpose.** ++ ++### Correctness (blocking) ++ ++1. **Off-by-one in retry loop (`src/lib/retry.ts`)** — `for (let i = 1; i < options.attempts; i++)` only executes `attempts - 1` times. With `attempts: 3` (as used in `http.ts`), `fn()` is called just twice, not three times. The loop should start at `i = 0` (or use `<=`) to actually perform `attempts` calls. ++ ++2. **`throw undefined` for small `attempts`** — If `attempts <= 1`, the loop body never runs, so `lastError` stays `undefined` and the function throws `undefined` instead of calling `fn` at all or producing a meaningful error. There's no guard against `attempts <= 0`/`1`. ++ ++3. **Dropped HTTP status check (`src/lib/http.ts`)** — The original `if (!response.ok) throw ...` was removed. Now non-OK responses (404/500/etc.) are passed straight to `response.json()` and resolved successfully instead of throwing. This means: ++ - Callers no longer get an error on failed requests; they may receive an error-page body parsed as JSON, or a JSON parse exception unrelated to the real failure. ++ - The whole point of wrapping the call in `retry` is defeated for server errors — retry only triggers on network failures or JSON-parse exceptions, not HTTP failure statuses. This is a functional regression, not just a missed enhancement. ++ ++4. **Undocumented backoff formula** — `options.delayMs * i * i` produces quadratic backoff (e.g., 250ms, then 1000ms for `delayMs: 250`). This is a nontrivial, unexplained behavior; should be documented or made explicit/configurable. ++ ++### Style / clarity (non-blocking, but worth fixing) ++ ++- `var lastError: unknown;` should be `let`, consistent with the rest of the modern TS code. ++- The loop variable/semantics are confusing given the off-by-one issue — consider renaming and adding a doc comment on `RetryOptions.attempts` clarifying whether it counts total tries or retries. ++- The backoff math (`delayMs * i * i`) is magic; extract into a named helper (e.g. `computeBackoffDelay`) or add a comment. ++- The inline `{ attempts: 3, delayMs: 250 }` in `http.ts` is a magic literal — consider a named constant (e.g. `DEFAULT_RETRY_OPTIONS`) for reuse/clarity. ++- The exported name `retry` is quite generic for a shared lib module; consider `retryAsync`/`withRetry` to reduce collision risk. ++- No JSDoc on `RetryOptions` fields or the `retry` function itself. ++ ++### Summary ++The intent (add retry-with-backoff to `getJson`) is reasonable, but the implementation has two real bugs (off-by-one attempt count, and loss of HTTP-status error signaling) that mean the retry logic won't actually protect against the failures it's meant to handle. These should be fixed before merge; the style items are minor polish. diff --git a/apps/pr-reviewer/src/agents/review.ts b/apps/pr-reviewer/src/agents/review.ts index 0000000..0000000 100644 --- a/apps/pr-reviewer/src/agents/review.ts @@ -1110,7 +2436,7 @@ index 0000000..0000000 + +// Sentry's transport sends every span envelope inside `suppressTracing`, and +// on Node 22 that suppressed scope leaks into Flue's model-stream callbacks -+// (Sentry 11.0.0-rc.0): every span started after the first envelope is dropped ++// (still present in Sentry 11.0.0): every span started after the first envelope is dropped +// as unsampled. Clearing the flag before the adapter handles each event keeps +// the run in one trace. +const SUPPRESS_TRACING_KEY = '__SENTRY_SUPPRESS_TRACING__'; From 3f5e4d4dcc2cab20aa2b443fde8eaaa0ed0d64cb Mon Sep 17 00:00:00 2001 From: Sergiy Dybskiy Date: Wed, 23 Sep 2026 19:17:27 +0200 Subject: [PATCH 2/3] Drop the CLI scope refresh from setup; the login default covers every lab Sentry's dashboards endpoint accepts org:read, so org:write was never required. The earlier 403 came from the CLI being logged in as an account outside the org. Setup now says to check sentry auth status instead. Co-authored-by: Claude --- RUNSHEET.md | 14 +++++++------- labs/00-setup.md | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/RUNSHEET.md b/RUNSHEET.md index 5218bcb..79e8fd7 100644 --- a/RUNSHEET.md +++ b/RUNSHEET.md @@ -169,13 +169,13 @@ applied with `scripts/solution.sh `. Time on the day: 55 minutes. the new dashboard. Say why there is no per-conversation alert: the detector API refuses `groupBy` ("Group by Metric Alerts feature must be enabled"), so the top-ten table is the answer. -- **Pitfall.** Dashboard creation needs the `org:write` CLI scope; - `sentry auth login` alone gives 403 on `POST dashboards/`. `sentry auth - refresh --scope` replaces the whole scope set, so a refresh with only - `org:write` leaves `sentry issue` on 403. Setup passes the login default - plus `org:write` in one comma-separated `--scope`. Also check `sentry auth - status`: a 403 on every project command with the right scopes means the - CLI is logged in as an account that is not a member of the org. +- **Pitfall.** A 403 from the CLI is almost always the account, not the + scopes. The `sentry auth login` default scope set covers every lab + (`event:write` for Seer, `alerts:write` for the detectors, `org:read` for + dashboards). Check `sentry auth status`: a 403 on every command means the + CLI is logged in as an account that is not a member of the org. Do not + pass `--scope` to `sentry auth refresh` to fix it; that replaces the whole + scope set with what you pass. - **Takeaway.** Start from the path that costs money, not the metric the tool offers. Alerts and dashboards are prompts too. The attribute names are in the trace. diff --git a/labs/00-setup.md b/labs/00-setup.md index 1232ab1..c09d7eb 100644 --- a/labs/00-setup.md +++ b/labs/00-setup.md @@ -30,7 +30,7 @@ your organization name. - Node 22 or newer: `node --version` - git -- The `sentry` CLI: `curl https://cli.sentry.dev/install -fsS | bash`, then `sentry auth login` and `sentry auth refresh --scope org:read,org:write,project:read,project:write,event:read,event:write,member:read,team:read,alerts:read,alerts:write` (`--scope` replaces the whole scope set, so this is the login default plus `org:write`; lab 3 needs `event:write` for Seer and lab 6 needs `org:write` for dashboards) +- The `sentry` CLI: `curl https://cli.sentry.dev/install -fsS | bash`, then `sentry auth login`. Pick the account that is a member of your Sentry org; `sentry auth status` shows which one is logged in. ## 4. Clone and run the setup script From 47ef88a869f055ab9cc026b53f8a73ad2fcd7aec Mon Sep 17 00:00:00 2001 From: Sergiy Dybskiy Date: Wed, 23 Sep 2026 19:19:10 +0200 Subject: [PATCH 3/3] Plain-language pass on the new lab 3, lab 6, and runsheet text Co-authored-by: Claude --- RUNSHEET.md | 11 +++++------ labs/03-debug-refund.md | 12 ++++++------ labs/06-critical-paths.md | 7 +++---- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/RUNSHEET.md b/RUNSHEET.md index 79e8fd7..a166ff3 100644 --- a/RUNSHEET.md +++ b/RUNSHEET.md @@ -62,9 +62,8 @@ applied with `scripts/solution.sh `. Time on the day: 55 minutes. `analyze_issue_with_seer`, `update_issue`; the `sentry-debug-issue` skill is the script the agent follows. CLI: `sentry issue list`, `view --spans all`, `explain`, `resolve`. Seer refuses a project with no connected - repository, so link the fork first or skip the Seer comparison. The - point: debugging is tool calls, and they - run from any agent and from CI. + repository, so link the fork first or skip the Seer comparison. Debugging + is tool calls, and tool calls run from any agent and from CI. - **Prompt.** In the chat: "Show me my recent orders", then "Refund order 1029" (1029 has no payment row; 1036 and 1042 refund fine). Then the two lab 3 prompts: diagnose without changing code, then apply the fix. @@ -172,10 +171,10 @@ applied with `scripts/solution.sh `. Time on the day: 55 minutes. - **Pitfall.** A 403 from the CLI is almost always the account, not the scopes. The `sentry auth login` default scope set covers every lab (`event:write` for Seer, `alerts:write` for the detectors, `org:read` for - dashboards). Check `sentry auth status`: a 403 on every command means the + dashboards). Check `sentry auth status`. A 403 on every command means the CLI is logged in as an account that is not a member of the org. Do not - pass `--scope` to `sentry auth refresh` to fix it; that replaces the whole - scope set with what you pass. + pass `--scope` to `sentry auth refresh` to fix it. That flag replaces the + whole scope set with what you pass. - **Takeaway.** Start from the path that costs money, not the metric the tool offers. Alerts and dashboards are prompts too. The attribute names are in the trace. diff --git a/labs/03-debug-refund.md b/labs/03-debug-refund.md index 2e8400f..3f1e2ef 100644 --- a/labs/03-debug-refund.md +++ b/labs/03-debug-refund.md @@ -38,11 +38,11 @@ tool throws instead of telling the model so. ### What did the work -Your agent used Sentry's MCP server, with the `sentry-debug-issue` skill as -its guide when it has the plugin: `search_issues` found the issue, +Your agent used Sentry's MCP server. With the plugin installed, the +`sentry-debug-issue` skill was its script. `search_issues` found the issue, `get_trace_details` pulled the span tree, and `get_sentry_resource` fetched -the replay. Ask it to list the Sentry tools it called and you see these -names. +the replay. Ask the agent to list the Sentry tools it called and these +names come back. The `sentry` CLI shows the same issue from a terminal, and works in CI: @@ -79,8 +79,8 @@ two are: sentry issue explain sentry issue resolve -A commit message that contains `Fixes ` does the last step on its -own when the release that contains it goes out. +A commit message with `Fixes ` in it does the last step for you. +Sentry resolves the issue when the release with that commit goes out. Seer only runs on a project with a connected repository. If it answers "requires repositories to be connected", link your fork under Project diff --git a/labs/06-critical-paths.md b/labs/06-critical-paths.md index 406573b..45dc92f 100644 --- a/labs/06-critical-paths.md +++ b/labs/06-critical-paths.md @@ -93,10 +93,9 @@ to your agent while you wait for the email: This is Lab 3 again, started by an alert instead of a person: `search_issues`, `get_trace_details`, `analyze_issue_with_seer`, -`update_issue`. Take the person out and the same loop is an automated -triage workflow: the alert's workflow can call a webhook, and a scheduled -coding agent can run this prompt over -`sentry issue list --query "is:unresolved firstSeen:-1h"`. +`update_issue`. Take the person out and the same loop runs on its own. The +alert's workflow can call a webhook, or a scheduled coding agent can run +this prompt over `sentry issue list --query "is:unresolved firstSeen:-1h"`. ## Checkpoint