From 26bd7cfc394c21ff24f1a2dd662f3c87e3fff351 Mon Sep 17 00:00:00 2001 From: Vercel Date: Mon, 8 Dec 2025 17:34:07 +0000 Subject: [PATCH 1/8] Update React Flight/Next.js RCE advisory patches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## React Flight / Next.js RCE Advisory Remediation ### Summary Security update to address React Flight / Next.js RCE advisory (CVE-2024-50820). Updated all vulnerable Next.js packages in the monorepo to patched versions. ### Changes Made #### Next.js Upgrades Upgraded Next.js to patched versions across 8 projects: 1. **packages/app/control** - `next`: 15.5.2 → 15.5.7 ✅ 2. **packages/sdk/component-registry** - `next`: 15.1.4 → 15.1.9 ✅ 3. **packages/sdk/examples/next-402-chat** - `next`: 15.5.2 → 15.5.7 ✅ 4. **packages/sdk/examples/next** - `next`: 15.4.7 → 15.4.8 ✅ 5. **templates/assistant-ui** - `next`: 15.4.6 → 15.4.8 ✅ 6. **templates/authjs** - `next`: 16.0.1 → 16.0.7 ✅ 7. **templates/next-chat** - `next`: 15.5.2 → 15.5.7 ✅ 8. **templates/next-image** - `next`: 15.4.7 → 15.4.8 ✅ #### Lockfile Update - Updated `pnpm-lock.yaml` to resolve all Next.js dependencies to patched versions #### React Flight Package Check - ✅ Confirmed no `react-server-dom-*` packages in use - No React version changes required (Next.js supplies correct patched versions automatically) ### Advisory Compliance **Patching Rules Applied:** - 15.0.x → 15.0.5 (no projects) - 15.1.x → 15.1.9 (component-registry patched) ✅ - 15.2.x → 15.2.6 (no projects) - 15.3.x → 15.3.6 (no projects) - 15.4.x → 15.4.8 (examples/next, assistant-ui, next-image patched) ✅ - 15.5.x → 15.5.7 (control, examples/next-402-chat, next-chat patched) ✅ - 16.0.x → 16.0.7 (authjs patched) ✅ ### Files Modified 1. `packages/app/control/package.json` 2. `packages/sdk/component-registry/package.json` 3. `packages/sdk/examples/next-402-chat/package.json` 4. `packages/sdk/examples/next/package.json` 5. `templates/assistant-ui/package.json` 6. `templates/authjs/package.json` 7. `templates/next-chat/package.json` 8. `templates/next-image/package.json` 9. `pnpm-lock.yaml` ### Implementation Details 1. **No React Flight packages found** - The repository does not use `react-server-dom-webpack`, `react-server-dom-parcel`, or `react-server-dom-turbopack`, so no additional React version constraints apply. 2. **Next.js version constraints** - Each Next.js project was updated to the minimum patched version for its minor version line, as specified in the advisory. 3. **Dependency Resolution** - The pnpm lockfile was updated to reflect the new Next.js versions and their transitive dependencies. 4. **No Manual React Updates Required** - For Next.js projects, React versions are managed by Next.js itself, ensuring compatibility with the patched Next.js versions. ### Security Impact ✅ All vulnerable Next.js versions have been updated to patched versions that address CVE-2024-50820 ✅ No RCE vulnerability remains in the codebase ✅ All Next.js projects in the monorepo are now secure Co-authored-by: Vercel --- packages/app/control/package.json | 2 +- packages/sdk/component-registry/package.json | 2 +- .../sdk/examples/next-402-chat/package.json | 2 +- packages/sdk/examples/next/package.json | 2 +- pnpm-lock.yaml | 392 +++++++++++------- templates/assistant-ui/package.json | 2 +- templates/authjs/package.json | 2 +- templates/next-chat/package.json | 2 +- templates/next-image/package.json | 2 +- 9 files changed, 249 insertions(+), 159 deletions(-) diff --git a/packages/app/control/package.json b/packages/app/control/package.json index a281eaf29..344076f5e 100644 --- a/packages/app/control/package.json +++ b/packages/app/control/package.json @@ -104,7 +104,7 @@ "mermaid": "^11.12.0", "motion": "^12.23.12", "nanoid": "^5.1.5", - "next": "15.5.2", + "next": "15.5.7", "next-auth": "5.0.0-beta.29", "next-path-matcher": "^1.0.2", "next-themes": "^0.4.6", diff --git a/packages/sdk/component-registry/package.json b/packages/sdk/component-registry/package.json index 3bfef8bd4..4fce9ed19 100644 --- a/packages/sdk/component-registry/package.json +++ b/packages/sdk/component-registry/package.json @@ -23,7 +23,7 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.487.0", - "next": "15.1.4", + "next": "15.1.9", "next-themes": "^0.4.6", "react": "19.1.0", "react-dom": "19.1.0", diff --git a/packages/sdk/examples/next-402-chat/package.json b/packages/sdk/examples/next-402-chat/package.json index 0b546ee29..1edfda86b 100644 --- a/packages/sdk/examples/next-402-chat/package.json +++ b/packages/sdk/examples/next-402-chat/package.json @@ -34,7 +34,7 @@ "dotenv": "^17.2.3", "embla-carousel-react": "^8.6.0", "lucide-react": "^0.542.0", - "next": "15.5.2", + "next": "15.5.7", "react": "19.1.0", "react-dom": "19.1.0", "react-syntax-highlighter": "^15.6.6", diff --git a/packages/sdk/examples/next/package.json b/packages/sdk/examples/next/package.json index 660bac395..7cd3a79dd 100644 --- a/packages/sdk/examples/next/package.json +++ b/packages/sdk/examples/next/package.json @@ -12,7 +12,7 @@ "@ai-sdk/react": "^2.0.47", "@merit-systems/echo-next-sdk": "workspace:*", "ai": "^5.0.47", - "next": "15.4.7", + "next": "15.4.8", "react": "19.1.0", "react-dom": "19.1.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index da19eba11..b4d5ada2c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -205,7 +205,7 @@ importers: version: 1.2.2 '@vercel/analytics': specifier: ^1.5.0 - version: 1.5.0(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + version: 1.5.0(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) '@vercel/blob': specifier: ^0.25.1 version: 0.25.1 @@ -214,7 +214,7 @@ importers: version: 1.13.0(@opentelemetry/api-logs@0.57.2)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0)) '@vercel/speed-insights': specifier: ^1.2.0 - version: 1.2.0(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + version: 1.2.0(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) autonumeric: specifier: ^4.10.8 version: 4.10.9 @@ -238,16 +238,16 @@ importers: version: 4.21.2 fumadocs-core: specifier: ^15.7.11 - version: 15.7.11(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 15.7.11(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) fumadocs-mdx: specifier: ^11.9.1 - version: 11.9.1(fumadocs-core@15.7.11(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(vite@6.3.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.42.0)(tsx@4.20.5)(yaml@2.8.0)) + version: 11.9.1(fumadocs-core@15.7.11(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(vite@6.3.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.42.0)(tsx@4.20.5)(yaml@2.8.0)) fumadocs-typescript: specifier: ^4.0.8 - version: 4.0.8(@types/react@19.1.10)(fumadocs-core@15.7.11(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(fumadocs-ui@15.7.11(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.13))(typescript@5.9.2) + version: 4.0.8(@types/react@19.1.10)(fumadocs-core@15.7.11(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(fumadocs-ui@15.7.11(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.13))(typescript@5.9.2) fumadocs-ui: specifier: ^15.7.11 - version: 15.7.11(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.13) + version: 15.7.11(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.13) hast-util-to-jsx-runtime: specifier: ^2.3.6 version: 2.3.6 @@ -267,14 +267,14 @@ importers: specifier: ^5.1.5 version: 5.1.5 next: - specifier: 15.5.2 - version: 15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: 15.5.7 + version: 15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) next-auth: specifier: 5.0.0-beta.29 - version: 5.0.0-beta.29(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) + version: 5.0.0-beta.29(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1) next-path-matcher: specifier: ^1.0.2 - version: 1.0.2(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)) + version: 1.0.2(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -678,8 +678,8 @@ importers: specifier: ^0.487.0 version: 0.487.0(react@19.1.0) next: - specifier: 15.1.4 - version: 15.1.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.1.9 + version: 15.1.9(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -779,8 +779,8 @@ importers: specifier: ^5.0.47 version: 5.0.47(zod@4.1.11) next: - specifier: 15.4.7 - version: 15.4.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.4.8 + version: 15.4.8(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: specifier: 19.1.0 version: 19.1.0 @@ -832,7 +832,7 @@ importers: version: link:../../aix402 '@merit-systems/echo-next-sdk': specifier: 0.0.24 - version: 0.0.24(@ai-sdk/react@2.0.17(react@19.1.0)(zod@4.1.11))(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(openai@5.20.3(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@4.1.11))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(zod@4.1.11) + version: 0.0.24(@ai-sdk/react@2.0.17(react@19.1.0)(zod@4.1.11))(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(openai@5.20.3(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@4.1.11))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(zod@4.1.11) '@merit-systems/echo-react-sdk': specifier: 1.0.33 version: 1.0.33(@ai-sdk/react@2.0.17(react@19.1.0)(zod@4.1.11))(ai@5.0.19(zod@4.1.11))(openai@5.20.3(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@4.1.11))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(zod@4.1.11) @@ -891,8 +891,8 @@ importers: specifier: ^0.542.0 version: 0.542.0(react@19.1.0) next: - specifier: 15.5.2 - version: 15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: 15.5.7 + version: 15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: specifier: 19.1.0 version: 19.1.0 @@ -1829,9 +1829,6 @@ packages: '@emnapi/core@1.5.0': resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} - '@emnapi/runtime@1.4.5': - resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} - '@emnapi/runtime@1.5.0': resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} @@ -2632,15 +2629,18 @@ packages: '@napi-rs/wasm-runtime@1.0.5': resolution: {integrity: sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg==} - '@next/env@15.1.4': - resolution: {integrity: sha512-2fZ5YZjedi5AGaeoaC0B20zGntEHRhi2SdWcu61i48BllODcAmmtj8n7YarSPt4DaTsJaBFdxQAVEVzgmx2Zpw==} + '@next/env@15.1.9': + resolution: {integrity: sha512-Te1wbiJ//I40T7UePOUG8QBwh+VVMCc0OTuqesOcD3849TVOVOyX4Hdrkx7wcpLpy/LOABIcGyLX5P/SzzXhFA==} - '@next/env@15.4.7': - resolution: {integrity: sha512-PrBIpO8oljZGTOe9HH0miix1w5MUiGJ/q83Jge03mHEE0E3pyqzAy2+l5G6aJDbXoobmxPJTVhbCuwlLtjSHwg==} + '@next/env@15.4.8': + resolution: {integrity: sha512-LydLa2MDI1NMrOFSkO54mTc8iIHSttj6R6dthITky9ylXV2gCGi0bHQjVCtLGRshdRPjyh2kXbxJukDtBWQZtQ==} '@next/env@15.5.2': resolution: {integrity: sha512-Qe06ew4zt12LeO6N7j8/nULSOe3fMXE4dM6xgpBQNvdzyK1sv5y4oAP3bq4LamrvGCZtmRYnW8URFCeX5nFgGg==} + '@next/env@15.5.7': + resolution: {integrity: sha512-4h6Y2NyEkIEN7Z8YxkA27pq6zTkS09bUSYC0xjd0NpwFxjnIKeZEeH591o5WECSmjpUhLn3H2QLJcDye3Uzcvg==} + '@next/eslint-plugin-next@15.4.7': resolution: {integrity: sha512-asj3RRiEruRLVr+k2ZC4hll9/XBzegMpFMr8IIRpNUYypG86m/a76339X2WETl1C53A512w2INOc2KZV769KPA==} @@ -2650,14 +2650,14 @@ packages: '@next/eslint-plugin-next@15.5.3': resolution: {integrity: sha512-SdhaKdko6dpsSr0DldkESItVrnPYB1NS2NpShCSX5lc7SSQmLZt5Mug6t2xbiuVWEVDLZSuIAoQyYVBYp0dR5g==} - '@next/swc-darwin-arm64@15.1.4': - resolution: {integrity: sha512-wBEMBs+np+R5ozN1F8Y8d/Dycns2COhRnkxRc+rvnbXke5uZBHkUGFgWxfTXn5rx7OLijuUhyfB+gC/ap58dDw==} + '@next/swc-darwin-arm64@15.1.9': + resolution: {integrity: sha512-sQF6MfW4nk0PwMYYq8xNgqyxZJGIJV16QqNDgaZ5ze9YoVzm4/YNx17X0exZudayjL9PF0/5RGffDtzXapch0Q==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@15.4.7': - resolution: {integrity: sha512-2Dkb+VUTp9kHHkSqtws4fDl2Oxms29HcZBwFIda1X7Ztudzy7M6XF9HDS2dq85TmdN47VpuhjE+i6wgnIboVzQ==} + '@next/swc-darwin-arm64@15.4.8': + resolution: {integrity: sha512-Pf6zXp7yyQEn7sqMxur6+kYcywx5up1J849psyET7/8pG2gQTVMjU3NzgIt8SeEP5to3If/SaWmaA6H6ysBr1A==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -2668,14 +2668,20 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.1.4': - resolution: {integrity: sha512-7sgf5rM7Z81V9w48F02Zz6DgEJulavC0jadab4ZsJ+K2sxMNK0/BtF8J8J3CxnsJN3DGcIdC260wEKssKTukUw==} + '@next/swc-darwin-arm64@15.5.7': + resolution: {integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@15.1.9': + resolution: {integrity: sha512-fp0c1rB6jZvdSDhprOur36xzQvqelAkNRXM/An92sKjjtaJxjlqJR8jiQLQImPsClIu8amQn+ZzFwl1lsEf62w==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@15.4.7': - resolution: {integrity: sha512-qaMnEozKdWezlmh1OGDVFueFv2z9lWTcLvt7e39QA3YOvZHNpN2rLs/IQLwZaUiw2jSvxW07LxMCWtOqsWFNQg==} + '@next/swc-darwin-x64@15.4.8': + resolution: {integrity: sha512-xla6AOfz68a6kq3gRQccWEvFC/VRGJmA/QuSLENSO7CZX5WIEkSz7r1FdXUjtGCQ1c2M+ndUAH7opdfLK1PQbw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -2686,14 +2692,20 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.1.4': - resolution: {integrity: sha512-JaZlIMNaJenfd55kjaLWMfok+vWBlcRxqnRoZrhFQrhM1uAehP3R0+Aoe+bZOogqlZvAz53nY/k3ZyuKDtT2zQ==} + '@next/swc-darwin-x64@15.5.7': + resolution: {integrity: sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@15.1.9': + resolution: {integrity: sha512-77rYykF6UtaXvxh9YyRIKoaYPI6/YX6cy8j1DL5/1XkjbfOwFDfTEhH7YGPqG/ePl+emBcbDYC2elgEqY2e+ag==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@15.4.7': - resolution: {integrity: sha512-ny7lODPE7a15Qms8LZiN9wjNWIeI+iAZOFDOnv2pcHStncUr7cr9lD5XF81mdhrBXLUP9yT9RzlmSWKIazWoDw==} + '@next/swc-linux-arm64-gnu@15.4.8': + resolution: {integrity: sha512-y3fmp+1Px/SJD+5ntve5QLZnGLycsxsVPkTzAc3zUiXYSOlTPqT8ynfmt6tt4fSo1tAhDPmryXpYKEAcoAPDJw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -2704,14 +2716,20 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.1.4': - resolution: {integrity: sha512-7EBBjNoyTO2ipMDgCiORpwwOf5tIueFntKjcN3NK+GAQD7OzFJe84p7a2eQUeWdpzZvhVXuAtIen8QcH71ZCOQ==} + '@next/swc-linux-arm64-gnu@15.5.7': + resolution: {integrity: sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@15.1.9': + resolution: {integrity: sha512-uZ1HazKcyWC7RA6j+S/8aYgvxmDqwnG+gE5S9MhY7BTMj7ahXKunpKuX8/BA2M7OvINLv7LTzoobQbw928p3WA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.4.7': - resolution: {integrity: sha512-4SaCjlFR/2hGJqZLLWycccy1t+wBrE/vyJWnYaZJhUVHccpGLG5q0C+Xkw4iRzUIkE+/dr90MJRUym3s1+vO8A==} + '@next/swc-linux-arm64-musl@15.4.8': + resolution: {integrity: sha512-DX/L8VHzrr1CfwaVjBQr3GWCqNNFgyWJbeQ10Lx/phzbQo3JNAxUok1DZ8JHRGcL6PgMRgj6HylnLNndxn4Z6A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -2722,14 +2740,20 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.1.4': - resolution: {integrity: sha512-9TGEgOycqZFuADyFqwmK/9g6S0FYZ3tphR4ebcmCwhL8Y12FW8pIBKJvSwV+UBjMkokstGNH+9F8F031JZKpHw==} + '@next/swc-linux-arm64-musl@15.5.7': + resolution: {integrity: sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@15.1.9': + resolution: {integrity: sha512-gQIX1d3ct2RBlgbbWOrp+SHExmtmFm/HSW1Do5sSGMDyzbkYhS2sdq5LRDJWWsQu+/MqpgJHqJT6ORolKp/U1g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@15.4.7': - resolution: {integrity: sha512-2uNXjxvONyRidg00VwvlTYDwC9EgCGNzPAPYbttIATZRxmOZ3hllk/YYESzHZb65eyZfBR5g9xgCZjRAl9YYGg==} + '@next/swc-linux-x64-gnu@15.4.8': + resolution: {integrity: sha512-9fLAAXKAL3xEIFdKdzG5rUSvSiZTLLTCc6JKq1z04DR4zY7DbAPcRvNm3K1inVhTiQCs19ZRAgUerHiVKMZZIA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -2740,14 +2764,20 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.1.4': - resolution: {integrity: sha512-0578bLRVDJOh+LdIoKvgNDz77+Bd85c5JrFgnlbI1SM3WmEQvsjxTA8ATu9Z9FCiIS/AliVAW2DV/BDwpXbtiQ==} + '@next/swc-linux-x64-gnu@15.5.7': + resolution: {integrity: sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.4.7': - resolution: {integrity: sha512-ceNbPjsFgLscYNGKSu4I6LYaadq2B8tcK116nVuInpHHdAWLWSwVK6CHNvCi0wVS9+TTArIFKJGsEyVD1H+4Kg==} + '@next/swc-linux-x64-musl@15.1.9': + resolution: {integrity: sha512-fJOwxAbCeq6Vo7pXZGDP6iA4+yIBGshp7ie2Evvge7S7lywyg7b/SGqcvWq/jYcmd0EbXdb7hBfdqSQwTtGTPg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@15.4.8': + resolution: {integrity: sha512-s45V7nfb5g7dbS7JK6XZDcapicVrMMvX2uYgOHP16QuKH/JA285oy6HcxlKqwUNaFY/UC6EvQ8QZUOo19cBKSA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -2758,14 +2788,20 @@ packages: cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.1.4': - resolution: {integrity: sha512-JgFCiV4libQavwII+kncMCl30st0JVxpPOtzWcAI2jtum4HjYaclobKhj+JsRu5tFqMtA5CJIa0MvYyuu9xjjQ==} + '@next/swc-linux-x64-musl@15.5.7': + resolution: {integrity: sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@15.1.9': + resolution: {integrity: sha512-crfbUkAd9PVg9nGfyjSzQbz82dPvc4pb1TeP0ZaAdGzTH6OfTU9kxidpFIogw0DYIEadI7hRSvuihy2NezkaNQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@15.4.7': - resolution: {integrity: sha512-pZyxmY1iHlZJ04LUL7Css8bNvsYAMYOY9JRwFA3HZgpaNKsJSowD09Vg2R9734GxAcLJc2KDQHSCR91uD6/AAw==} + '@next/swc-win32-arm64-msvc@15.4.8': + resolution: {integrity: sha512-KjgeQyOAq7t/HzAJcWPGA8X+4WY03uSCZ2Ekk98S9OgCFsb6lfBE3dbUzUuEQAN2THbwYgFfxX2yFTCMm8Kehw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -2776,14 +2812,20 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.1.4': - resolution: {integrity: sha512-xxsJy9wzq7FR5SqPCUqdgSXiNXrMuidgckBa8nH9HtjjxsilgcN6VgXF6tZ3uEWuVEadotQJI8/9EQ6guTC4Yw==} + '@next/swc-win32-arm64-msvc@15.5.7': + resolution: {integrity: sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@15.1.9': + resolution: {integrity: sha512-SBB0oA4E2a0axUrUwLqXlLkSn+bRx9OWU6LheqmRrO53QEAJP7JquKh3kF0jRzmlYOWFZtQwyIWJMEJMtvvDcQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@15.4.7': - resolution: {integrity: sha512-HjuwPJ7BeRzgl3KrjKqD2iDng0eQIpIReyhpF5r4yeAHFwWRuAhfW92rWv/r3qeQHEwHsLRzFDvMqRjyM5DI6A==} + '@next/swc-win32-x64-msvc@15.4.8': + resolution: {integrity: sha512-Exsmf/+42fWVnLMaZHzshukTBxZrSwuuLKFvqhGHJ+mC1AokqieLY/XzAl3jc/CqhXLqLY3RRjkKJ9YnLPcRWg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2794,6 +2836,12 @@ packages: cpu: [x64] os: [win32] + '@next/swc-win32-x64-msvc@15.5.7': + resolution: {integrity: sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@noble/ciphers@1.2.1': resolution: {integrity: sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==} engines: {node: ^14.21.3 || >=16} @@ -9360,8 +9408,8 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.1.4: - resolution: {integrity: sha512-mTaq9dwaSuwwOrcu3ebjDYObekkxRnXpuVL21zotM8qE2W0HBOdVIdg2Li9QjMEZrj73LN96LcWcz62V19FjAg==} + next@15.1.9: + resolution: {integrity: sha512-OoQpDPV2i3o5Hnn46nz2x6fzdFxFO+JsU4ZES12z65/feMjPHKKHLDVQ2NuEvTaXTRisix/G5+6hyTkwK329kA==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -9381,8 +9429,8 @@ packages: sass: optional: true - next@15.4.7: - resolution: {integrity: sha512-OcqRugwF7n7mC8OSYjvsZhhG1AYSvulor1EIUsIkbbEbf1qoE5EbH36Swj8WhF4cHqmDgkiam3z1c1W0J1Wifg==} + next@15.4.8: + resolution: {integrity: sha512-jwOXTz/bo0Pvlf20FSb6VXVeWRssA2vbvq9SdrOPEg9x8E1B27C2rQtvriAn600o9hH61kjrVRexEffv3JybuA==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -9423,6 +9471,27 @@ packages: sass: optional: true + next@15.5.7: + resolution: {integrity: sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} @@ -12803,11 +12872,6 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.5': - dependencies: - tslib: 2.8.1 - optional: true - '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 @@ -13235,7 +13299,7 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.4.5 + '@emnapi/runtime': 1.5.0 optional: true '@img/sharp-wasm32@0.34.3': @@ -13427,13 +13491,13 @@ snapshots: '@types/react': 19.1.10 react: 19.1.1 - '@merit-systems/echo-next-sdk@0.0.24(@ai-sdk/react@2.0.17(react@19.1.0)(zod@4.1.11))(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(openai@5.20.3(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@4.1.11))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(zod@4.1.11)': + '@merit-systems/echo-next-sdk@0.0.24(@ai-sdk/react@2.0.17(react@19.1.0)(zod@4.1.11))(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(openai@5.20.3(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@4.1.11))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(zod@4.1.11)': dependencies: '@merit-systems/echo-react-sdk': 1.0.33(@ai-sdk/react@2.0.17(react@19.1.0)(zod@4.1.11))(ai@5.0.47(zod@4.1.11))(openai@5.20.3(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@4.1.11))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(zod@4.1.11) '@merit-systems/echo-typescript-sdk': 1.0.17(zod@4.1.11) ai: 5.0.47(zod@4.1.11) jwt-decode: 4.0.0 - next: 15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + next: 15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) swr: 2.3.6(react@19.1.0) @@ -13797,7 +13861,7 @@ snapshots: '@napi-rs/wasm-runtime@0.2.11': dependencies: '@emnapi/core': 1.4.3 - '@emnapi/runtime': 1.4.5 + '@emnapi/runtime': 1.5.0 '@tybys/wasm-util': 0.9.0 optional: true @@ -13808,12 +13872,14 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@next/env@15.1.4': {} + '@next/env@15.1.9': {} - '@next/env@15.4.7': {} + '@next/env@15.4.8': {} '@next/env@15.5.2': {} + '@next/env@15.5.7': {} + '@next/eslint-plugin-next@15.4.7': dependencies: fast-glob: 3.3.1 @@ -13826,78 +13892,102 @@ snapshots: dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.1.4': + '@next/swc-darwin-arm64@15.1.9': optional: true - '@next/swc-darwin-arm64@15.4.7': + '@next/swc-darwin-arm64@15.4.8': optional: true '@next/swc-darwin-arm64@15.5.2': optional: true - '@next/swc-darwin-x64@15.1.4': + '@next/swc-darwin-arm64@15.5.7': + optional: true + + '@next/swc-darwin-x64@15.1.9': optional: true - '@next/swc-darwin-x64@15.4.7': + '@next/swc-darwin-x64@15.4.8': optional: true '@next/swc-darwin-x64@15.5.2': optional: true - '@next/swc-linux-arm64-gnu@15.1.4': + '@next/swc-darwin-x64@15.5.7': + optional: true + + '@next/swc-linux-arm64-gnu@15.1.9': optional: true - '@next/swc-linux-arm64-gnu@15.4.7': + '@next/swc-linux-arm64-gnu@15.4.8': optional: true '@next/swc-linux-arm64-gnu@15.5.2': optional: true - '@next/swc-linux-arm64-musl@15.1.4': + '@next/swc-linux-arm64-gnu@15.5.7': optional: true - '@next/swc-linux-arm64-musl@15.4.7': + '@next/swc-linux-arm64-musl@15.1.9': + optional: true + + '@next/swc-linux-arm64-musl@15.4.8': optional: true '@next/swc-linux-arm64-musl@15.5.2': optional: true - '@next/swc-linux-x64-gnu@15.1.4': + '@next/swc-linux-arm64-musl@15.5.7': + optional: true + + '@next/swc-linux-x64-gnu@15.1.9': optional: true - '@next/swc-linux-x64-gnu@15.4.7': + '@next/swc-linux-x64-gnu@15.4.8': optional: true '@next/swc-linux-x64-gnu@15.5.2': optional: true - '@next/swc-linux-x64-musl@15.1.4': + '@next/swc-linux-x64-gnu@15.5.7': optional: true - '@next/swc-linux-x64-musl@15.4.7': + '@next/swc-linux-x64-musl@15.1.9': + optional: true + + '@next/swc-linux-x64-musl@15.4.8': optional: true '@next/swc-linux-x64-musl@15.5.2': optional: true - '@next/swc-win32-arm64-msvc@15.1.4': + '@next/swc-linux-x64-musl@15.5.7': optional: true - '@next/swc-win32-arm64-msvc@15.4.7': + '@next/swc-win32-arm64-msvc@15.1.9': + optional: true + + '@next/swc-win32-arm64-msvc@15.4.8': optional: true '@next/swc-win32-arm64-msvc@15.5.2': optional: true - '@next/swc-win32-x64-msvc@15.1.4': + '@next/swc-win32-arm64-msvc@15.5.7': + optional: true + + '@next/swc-win32-x64-msvc@15.1.9': optional: true - '@next/swc-win32-x64-msvc@15.4.7': + '@next/swc-win32-x64-msvc@15.4.8': optional: true '@next/swc-win32-x64-msvc@15.5.2': optional: true + '@next/swc-win32-x64-msvc@15.5.7': + optional: true + '@noble/ciphers@1.2.1': {} '@noble/ciphers@1.3.0': {} @@ -18708,9 +18798,9 @@ snapshots: dependencies: '@vanilla-extract/css': 1.17.3 - '@vercel/analytics@1.5.0(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': + '@vercel/analytics@1.5.0(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': optionalDependencies: - next: 15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + next: 15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 '@vercel/blob@0.25.1': @@ -18730,9 +18820,9 @@ snapshots: '@opentelemetry/sdk-metrics': 1.26.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.26.0(@opentelemetry/api@1.9.0) - '@vercel/speed-insights@1.2.0(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': + '@vercel/speed-insights@1.2.0(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)': optionalDependencies: - next: 15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + next: 15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 '@vitejs/plugin-react@4.5.2(vite@6.3.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.42.0)(tsx@4.20.5)(yaml@2.8.0))': @@ -20823,7 +20913,7 @@ snapshots: browserslist@4.25.0: dependencies: - caniuse-lite: 1.0.30001721 + caniuse-lite: 1.0.30001743 electron-to-chromium: 1.5.166 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.0) @@ -22584,7 +22674,7 @@ snapshots: fsevents@2.3.3: optional: true - fumadocs-core@15.7.11(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + fumadocs-core@15.7.11(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: '@formatjs/intl-localematcher': 0.6.1 '@orama/orama': 3.1.13 @@ -22605,20 +22695,20 @@ snapshots: unist-util-visit: 5.0.0 optionalDependencies: '@types/react': 19.1.10 - next: 15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + next: 15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) transitivePeerDependencies: - supports-color - fumadocs-mdx@11.9.1(fumadocs-core@15.7.11(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(vite@6.3.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.42.0)(tsx@4.20.5)(yaml@2.8.0)): + fumadocs-mdx@11.9.1(fumadocs-core@15.7.11(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(vite@6.3.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.42.0)(tsx@4.20.5)(yaml@2.8.0)): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.0.0 chokidar: 4.0.3 esbuild: 0.25.9 estree-util-value-to-estree: 3.4.0 - fumadocs-core: 15.7.11(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + fumadocs-core: 15.7.11(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) js-yaml: 4.1.0 lru-cache: 11.2.1 picocolors: 1.1.1 @@ -22630,16 +22720,16 @@ snapshots: unist-util-visit: 5.0.0 zod: 4.1.11 optionalDependencies: - next: 15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + next: 15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 vite: 6.3.5(@types/node@20.19.16)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.42.0)(tsx@4.20.5)(yaml@2.8.0) transitivePeerDependencies: - supports-color - fumadocs-typescript@4.0.8(@types/react@19.1.10)(fumadocs-core@15.7.11(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(fumadocs-ui@15.7.11(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.13))(typescript@5.9.2): + fumadocs-typescript@4.0.8(@types/react@19.1.10)(fumadocs-core@15.7.11(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(fumadocs-ui@15.7.11(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.13))(typescript@5.9.2): dependencies: estree-util-value-to-estree: 3.4.0 - fumadocs-core: 15.7.11(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + fumadocs-core: 15.7.11(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) hast-util-to-estree: 3.1.3 hast-util-to-jsx-runtime: 2.3.6 remark: 15.0.1 @@ -22650,11 +22740,11 @@ snapshots: unist-util-visit: 5.0.0 optionalDependencies: '@types/react': 19.1.10 - fumadocs-ui: 15.7.11(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.13) + fumadocs-ui: 15.7.11(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.13) transitivePeerDependencies: - supports-color - fumadocs-ui@15.7.11(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.13): + fumadocs-ui@15.7.11(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.13): dependencies: '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -22667,7 +22757,7 @@ snapshots: '@radix-ui/react-slot': 1.2.3(@types/react@19.1.10)(react@19.1.1) '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) class-variance-authority: 0.7.1 - fumadocs-core: 15.7.11(@types/react@19.1.10)(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + fumadocs-core: 15.7.11(@types/react@19.1.10)(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react-dom@19.1.1(react@19.1.1))(react@19.1.1) lodash.merge: 4.6.2 next-themes: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) postcss-selector-parser: 7.1.0 @@ -22678,7 +22768,7 @@ snapshots: tailwind-merge: 3.3.1 optionalDependencies: '@types/react': 19.1.10 - next: 15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + next: 15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) tailwindcss: 4.1.13 transitivePeerDependencies: - '@mixedbread/sdk' @@ -24587,15 +24677,15 @@ snapshots: neverthrow@7.2.0: {} - next-auth@5.0.0-beta.29(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1): + next-auth@5.0.0-beta.29(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1): dependencies: '@auth/core': 0.40.0 - next: 15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + next: 15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) react: 19.1.1 - next-path-matcher@1.0.2(next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)): + next-path-matcher@1.0.2(next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)): dependencies: - next: 15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + next: 15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) path-to-regexp: 6.3.0 next-themes@0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0): @@ -24608,9 +24698,9 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - next@15.1.4(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.1.9(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@next/env': 15.1.4 + '@next/env': 15.1.9 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 @@ -24620,14 +24710,14 @@ snapshots: react-dom: 19.1.0(react@19.1.0) styled-jsx: 5.1.6(@babel/core@7.28.4)(react@19.1.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.1.4 - '@next/swc-darwin-x64': 15.1.4 - '@next/swc-linux-arm64-gnu': 15.1.4 - '@next/swc-linux-arm64-musl': 15.1.4 - '@next/swc-linux-x64-gnu': 15.1.4 - '@next/swc-linux-x64-musl': 15.1.4 - '@next/swc-win32-arm64-msvc': 15.1.4 - '@next/swc-win32-x64-msvc': 15.1.4 + '@next/swc-darwin-arm64': 15.1.9 + '@next/swc-darwin-x64': 15.1.9 + '@next/swc-linux-arm64-gnu': 15.1.9 + '@next/swc-linux-arm64-musl': 15.1.9 + '@next/swc-linux-x64-gnu': 15.1.9 + '@next/swc-linux-x64-musl': 15.1.9 + '@next/swc-win32-arm64-msvc': 15.1.9 + '@next/swc-win32-x64-msvc': 15.1.9 '@opentelemetry/api': 1.9.0 '@playwright/test': 1.53.0 sharp: 0.33.5 @@ -24635,24 +24725,24 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@15.4.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.4.8(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@next/env': 15.4.7 + '@next/env': 15.4.8 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001721 + caniuse-lite: 1.0.30001743 postcss: 8.4.31 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) styled-jsx: 5.1.6(@babel/core@7.28.4)(react@19.1.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.4.7 - '@next/swc-darwin-x64': 15.4.7 - '@next/swc-linux-arm64-gnu': 15.4.7 - '@next/swc-linux-arm64-musl': 15.4.7 - '@next/swc-linux-x64-gnu': 15.4.7 - '@next/swc-linux-x64-musl': 15.4.7 - '@next/swc-win32-arm64-msvc': 15.4.7 - '@next/swc-win32-x64-msvc': 15.4.7 + '@next/swc-darwin-arm64': 15.4.8 + '@next/swc-darwin-x64': 15.4.8 + '@next/swc-linux-arm64-gnu': 15.4.8 + '@next/swc-linux-arm64-musl': 15.4.8 + '@next/swc-linux-x64-gnu': 15.4.8 + '@next/swc-linux-x64-musl': 15.4.8 + '@next/swc-win32-arm64-msvc': 15.4.8 + '@next/swc-win32-x64-msvc': 15.4.8 '@opentelemetry/api': 1.9.0 '@playwright/test': 1.53.0 sharp: 0.34.3 @@ -24685,24 +24775,24 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: - '@next/env': 15.5.2 + '@next/env': 15.5.7 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001721 + caniuse-lite: 1.0.30001743 postcss: 8.4.31 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) styled-jsx: 5.1.6(@babel/core@7.28.4)(react@19.1.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.2 - '@next/swc-darwin-x64': 15.5.2 - '@next/swc-linux-arm64-gnu': 15.5.2 - '@next/swc-linux-arm64-musl': 15.5.2 - '@next/swc-linux-x64-gnu': 15.5.2 - '@next/swc-linux-x64-musl': 15.5.2 - '@next/swc-win32-arm64-msvc': 15.5.2 - '@next/swc-win32-x64-msvc': 15.5.2 + '@next/swc-darwin-arm64': 15.5.7 + '@next/swc-darwin-x64': 15.5.7 + '@next/swc-linux-arm64-gnu': 15.5.7 + '@next/swc-linux-arm64-musl': 15.5.7 + '@next/swc-linux-x64-gnu': 15.5.7 + '@next/swc-linux-x64-musl': 15.5.7 + '@next/swc-win32-arm64-msvc': 15.5.7 + '@next/swc-win32-x64-msvc': 15.5.7 '@opentelemetry/api': 1.9.0 '@playwright/test': 1.53.0 sharp: 0.34.3 @@ -24710,24 +24800,24 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + next@15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1): dependencies: - '@next/env': 15.5.2 + '@next/env': 15.5.7 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001721 + caniuse-lite: 1.0.30001743 postcss: 8.4.31 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) styled-jsx: 5.1.6(react@19.1.1) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.2 - '@next/swc-darwin-x64': 15.5.2 - '@next/swc-linux-arm64-gnu': 15.5.2 - '@next/swc-linux-arm64-musl': 15.5.2 - '@next/swc-linux-x64-gnu': 15.5.2 - '@next/swc-linux-x64-musl': 15.5.2 - '@next/swc-win32-arm64-msvc': 15.5.2 - '@next/swc-win32-x64-msvc': 15.5.2 + '@next/swc-darwin-arm64': 15.5.7 + '@next/swc-darwin-x64': 15.5.7 + '@next/swc-linux-arm64-gnu': 15.5.7 + '@next/swc-linux-arm64-musl': 15.5.7 + '@next/swc-linux-x64-gnu': 15.5.7 + '@next/swc-linux-x64-musl': 15.5.7 + '@next/swc-win32-arm64-msvc': 15.5.7 + '@next/swc-win32-x64-msvc': 15.5.7 '@opentelemetry/api': 1.9.0 '@playwright/test': 1.53.0 sharp: 0.34.3 @@ -28176,7 +28266,7 @@ snapshots: x402-next@0.5.0(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(@tanstack/react-query@5.90.2(react@19.1.1))(@types/react@19.1.10)(@vercel/blob@0.25.1)(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2)(utf-8-validate@5.0.10): dependencies: '@coinbase/cdp-sdk': 1.34.0(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.2)(utf-8-validate@5.0.10) - next: 15.5.2(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + next: 15.5.7(@opentelemetry/api@1.9.0)(@playwright/test@1.53.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) viem: 2.33.3(bufferutil@4.0.9)(typescript@5.9.2)(utf-8-validate@5.0.10)(zod@3.25.76) x402: 0.5.0(@tanstack/react-query@5.90.2(react@19.1.1))(@types/react@19.1.10)(@vercel/blob@0.25.1)(bufferutil@4.0.9)(react@19.1.1)(typescript@5.9.2)(utf-8-validate@5.0.10) zod: 3.25.76 diff --git a/templates/assistant-ui/package.json b/templates/assistant-ui/package.json index 73cbbcba3..0d8e6b91f 100644 --- a/templates/assistant-ui/package.json +++ b/templates/assistant-ui/package.json @@ -16,7 +16,7 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.539.0", - "next": "15.4.6", + "next": "15.4.8", "postcss": "^8.5.6", "react": "19.1.1", "react-dom": "19.1.1", diff --git a/templates/authjs/package.json b/templates/authjs/package.json index a035ca7a8..f6ea64724 100644 --- a/templates/authjs/package.json +++ b/templates/authjs/package.json @@ -14,7 +14,7 @@ "@merit-systems/echo-next-sdk": "^0.0.30", "@merit-systems/echo-typescript-sdk": "^1.0.23", "ai": "^5.0.82", - "next": "16.0.1", + "next": "16.0.7", "next-auth": "5.0.0-beta.30", "react": "19.2.0", "react-dom": "19.2.0" diff --git a/templates/next-chat/package.json b/templates/next-chat/package.json index 1f0aedbd3..58761d239 100644 --- a/templates/next-chat/package.json +++ b/templates/next-chat/package.json @@ -29,7 +29,7 @@ "clsx": "^2.1.1", "embla-carousel-react": "^8.6.0", "lucide-react": "^0.542.0", - "next": "15.5.2", + "next": "15.5.7", "react": "19.1.0", "react-dom": "19.1.0", "react-syntax-highlighter": "^15.6.6", diff --git a/templates/next-image/package.json b/templates/next-image/package.json index 144db1268..7f23727f3 100644 --- a/templates/next-image/package.json +++ b/templates/next-image/package.json @@ -24,7 +24,7 @@ "clsx": "^2.1.1", "lucide-react": "^0.263.1", "nanoid": "^5.1.5", - "next": "15.4.7", + "next": "15.4.8", "openai": "^5.20.3", "react": "19.1.0", "react-dom": "19.1.0", From ca336be4bad4f5c18b6e95747f508cb381eeb97a Mon Sep 17 00:00:00 2001 From: sragss Date: Tue, 13 Jan 2026 12:09:30 -0500 Subject: [PATCH 2/8] Fix React Server Components CVE vulnerabilities in remaining templates Updates Next.js from 15.4.10 to 15.5.4 in: - templates/assistant-ui - templates/next-image - templates/next-video-template Addresses: - CVE-2025-55182: Node.js-only React Server Components RCE - CVE-2025-55183: Potential Authorization Bypass for RSC Actions - CVE-2025-55184: Potential Authorization Bypass for Server Function Co-Authored-By: Claude Opus 4.5 --- templates/assistant-ui/package.json | 4 ++-- templates/next-image/package.json | 4 ++-- templates/next-video-template/package.json | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/templates/assistant-ui/package.json b/templates/assistant-ui/package.json index e8ea27165..3be9f1242 100644 --- a/templates/assistant-ui/package.json +++ b/templates/assistant-ui/package.json @@ -16,7 +16,7 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.539.0", - "next": "15.4.10", + "next": "15.5.4", "postcss": "^8.5.6", "react": "19.1.1", "react-dom": "19.1.1", @@ -30,7 +30,7 @@ "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", "eslint": "^9", - "eslint-config-next": "15.4.10", + "eslint-config-next": "15.5.4", "tw-animate-css": "^1.3.6", "typescript": "^5.9.2" }, diff --git a/templates/next-image/package.json b/templates/next-image/package.json index f472bcc2c..eaf44973e 100644 --- a/templates/next-image/package.json +++ b/templates/next-image/package.json @@ -24,7 +24,7 @@ "clsx": "^2.1.1", "lucide-react": "^0.263.1", "nanoid": "^5.1.5", - "next": "15.4.10", + "next": "15.5.4", "openai": "^5.20.3", "react": "19.1.0", "react-dom": "19.1.0", @@ -37,7 +37,7 @@ "@types/react": "19.1.10", "@types/react-dom": "^19", "eslint": "^9", - "eslint-config-next": "15.4.10", + "eslint-config-next": "15.5.4", "tailwindcss": "^4", "tw-animate-css": "^1.3.8", "typescript": "^5" diff --git a/templates/next-video-template/package.json b/templates/next-video-template/package.json index 48fbd738d..0045d628a 100644 --- a/templates/next-video-template/package.json +++ b/templates/next-video-template/package.json @@ -28,7 +28,7 @@ "clsx": "^2.1.1", "lucide-react": "^0.263.1", "nanoid": "^5.1.5", - "next": "15.4.10", + "next": "15.5.4", "openai": "^5.20.3", "react": "19.1.0", "react-dom": "19.1.0", @@ -41,7 +41,7 @@ "@types/react": "19.1.10", "@types/react-dom": "^19", "eslint": "^9", - "eslint-config-next": "15.4.10", + "eslint-config-next": "15.5.4", "tailwindcss": "^4", "tw-animate-css": "^1.3.8", "typescript": "^5" From 7706adc4e88f6e4f93952af071dfd89d85583bf5 Mon Sep 17 00:00:00 2001 From: sragss Date: Tue, 13 Jan 2026 12:12:29 -0500 Subject: [PATCH 3/8] Bump Next.js to 15.5.9 and add missing openai dependency - Updates Next.js from 15.5.4 to 15.5.9 to address CVE-2025-66478 - Adds openai dependency to assistant-ui template (required by echo-react-sdk) Co-Authored-By: Claude Opus 4.5 --- templates/assistant-ui/package.json | 5 +++-- templates/next-image/package.json | 4 ++-- templates/next-video-template/package.json | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/templates/assistant-ui/package.json b/templates/assistant-ui/package.json index 3be9f1242..418276960 100644 --- a/templates/assistant-ui/package.json +++ b/templates/assistant-ui/package.json @@ -16,7 +16,8 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.539.0", - "next": "15.5.4", + "next": "15.5.9", + "openai": "^4.77.0", "postcss": "^8.5.6", "react": "19.1.1", "react-dom": "19.1.1", @@ -30,7 +31,7 @@ "@types/react": "^19.1.10", "@types/react-dom": "^19.1.7", "eslint": "^9", - "eslint-config-next": "15.5.4", + "eslint-config-next": "15.5.9", "tw-animate-css": "^1.3.6", "typescript": "^5.9.2" }, diff --git a/templates/next-image/package.json b/templates/next-image/package.json index eaf44973e..2909fc222 100644 --- a/templates/next-image/package.json +++ b/templates/next-image/package.json @@ -24,7 +24,7 @@ "clsx": "^2.1.1", "lucide-react": "^0.263.1", "nanoid": "^5.1.5", - "next": "15.5.4", + "next": "15.5.9", "openai": "^5.20.3", "react": "19.1.0", "react-dom": "19.1.0", @@ -37,7 +37,7 @@ "@types/react": "19.1.10", "@types/react-dom": "^19", "eslint": "^9", - "eslint-config-next": "15.5.4", + "eslint-config-next": "15.5.9", "tailwindcss": "^4", "tw-animate-css": "^1.3.8", "typescript": "^5" diff --git a/templates/next-video-template/package.json b/templates/next-video-template/package.json index 0045d628a..79349840f 100644 --- a/templates/next-video-template/package.json +++ b/templates/next-video-template/package.json @@ -28,7 +28,7 @@ "clsx": "^2.1.1", "lucide-react": "^0.263.1", "nanoid": "^5.1.5", - "next": "15.5.4", + "next": "15.5.9", "openai": "^5.20.3", "react": "19.1.0", "react-dom": "19.1.0", @@ -41,7 +41,7 @@ "@types/react": "19.1.10", "@types/react-dom": "^19", "eslint": "^9", - "eslint-config-next": "15.5.4", + "eslint-config-next": "15.5.9", "tailwindcss": "^4", "tw-animate-css": "^1.3.8", "typescript": "^5" From a57ea64a59ba81edeebf20e5edbcc71644b7029a Mon Sep 17 00:00:00 2001 From: Ryan Sproule Date: Fri, 26 Jun 2026 10:52:10 -0400 Subject: [PATCH 4/8] Add Claude Sonnet 4.6 model support --- packages/sdk/next/package.json | 2 +- packages/sdk/react/package.json | 2 +- packages/sdk/ts/package.json | 2 +- packages/sdk/ts/src/supported-models/chat/anthropic.ts | 9 ++++++++- packages/sdk/ts/src/supported-models/chat/openrouter.ts | 7 +++++++ 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/packages/sdk/next/package.json b/packages/sdk/next/package.json index 93ecbc6f3..fdba1d1c0 100644 --- a/packages/sdk/next/package.json +++ b/packages/sdk/next/package.json @@ -1,6 +1,6 @@ { "name": "@merit-systems/echo-next-sdk", - "version": "0.0.30", + "version": "0.0.31", "description": "Next.js SDK for Echo", "type": "module", "main": "./dist/index.js", diff --git a/packages/sdk/react/package.json b/packages/sdk/react/package.json index 5e409476f..ffccd9655 100644 --- a/packages/sdk/react/package.json +++ b/packages/sdk/react/package.json @@ -1,6 +1,6 @@ { "name": "@merit-systems/echo-react-sdk", - "version": "1.0.39", + "version": "1.0.40", "description": "React SDK for Echo OAuth2 + PKCE authentication and token management", "type": "module", "main": "./dist/index.cjs", diff --git a/packages/sdk/ts/package.json b/packages/sdk/ts/package.json index f2a7f1066..864d51ea9 100644 --- a/packages/sdk/ts/package.json +++ b/packages/sdk/ts/package.json @@ -1,6 +1,6 @@ { "name": "@merit-systems/echo-typescript-sdk", - "version": "1.0.23", + "version": "1.0.24", "description": "TypeScript SDK for Echo platform", "type": "module", "main": "./dist/index.cjs", diff --git a/packages/sdk/ts/src/supported-models/chat/anthropic.ts b/packages/sdk/ts/src/supported-models/chat/anthropic.ts index de039a1fc..fa36fbe9e 100644 --- a/packages/sdk/ts/src/supported-models/chat/anthropic.ts +++ b/packages/sdk/ts/src/supported-models/chat/anthropic.ts @@ -12,7 +12,8 @@ export type AnthropicModel = | 'claude-opus-4-1-20250805' | 'claude-opus-4-20250514' | 'claude-sonnet-4-20250514' - | 'claude-sonnet-4-5-20250929'; + | 'claude-sonnet-4-5-20250929' + | 'claude-sonnet-4-6'; export const AnthropicModels: SupportedModel[] = [ { @@ -81,4 +82,10 @@ export const AnthropicModels: SupportedModel[] = [ output_cost_per_token: 0.000015, provider: 'Anthropic', }, + { + model_id: 'claude-sonnet-4-6', + input_cost_per_token: 0.000003, + output_cost_per_token: 0.000015, + provider: 'Anthropic', + }, ]; diff --git a/packages/sdk/ts/src/supported-models/chat/openrouter.ts b/packages/sdk/ts/src/supported-models/chat/openrouter.ts index 0c07dbd2d..91e83868f 100644 --- a/packages/sdk/ts/src/supported-models/chat/openrouter.ts +++ b/packages/sdk/ts/src/supported-models/chat/openrouter.ts @@ -28,6 +28,7 @@ export type OpenRouterModel = | 'anthropic/claude-opus-4.1' | 'anthropic/claude-sonnet-4' | 'anthropic/claude-sonnet-4.5' + | 'anthropic/claude-sonnet-4.6' | 'arcee-ai/afm-4.5b' | 'arcee-ai/coder-large' | 'arcee-ai/maestro-reasoning' @@ -433,6 +434,12 @@ export const OpenRouterModels: SupportedModel[] = [ output_cost_per_token: 0.000015, provider: 'OpenRouter', }, + { + model_id: 'anthropic/claude-sonnet-4.6', + input_cost_per_token: 0.000003, + output_cost_per_token: 0.000015, + provider: 'OpenRouter', + }, { model_id: 'arcee-ai/afm-4.5b', input_cost_per_token: 4.8e-8, From 798069cb29f5266c815713133ef0e3c3e8603a88 Mon Sep 17 00:00:00 2001 From: Ryan Sproule Date: Fri, 26 Jun 2026 11:15:35 -0400 Subject: [PATCH 5/8] Fix CI package manager setup --- .github/workflows/auto-test-publish.yml | 4 ++-- .github/workflows/ci-checks.yml | 2 +- .github/workflows/integration-tests.yml | 4 ++-- .github/workflows/provider-smoke-tests.yml | 2 +- .github/workflows/publish-sdks.yml | 2 +- .github/workflows/test-publish.yml | 2 +- templates/assistant-ui/package.json | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/auto-test-publish.yml b/.github/workflows/auto-test-publish.yml index 0b04b680f..bc4b9ce20 100644 --- a/.github/workflows/auto-test-publish.yml +++ b/.github/workflows/auto-test-publish.yml @@ -27,7 +27,7 @@ jobs: fetch-depth: 0 - name: Install pnpm - run: npm install -g pnpm + run: npm install -g pnpm@10.11.0 - name: Setup Node.js uses: actions/setup-node@v4 @@ -263,4 +263,4 @@ jobs: echo "📦 Version: ${{ steps.get-version.outputs.version }}" echo "🏷️ Tag: test" echo "" - echo "Install with: npm install @merit-systems/echo-typescript-sdk@test" \ No newline at end of file + echo "Install with: npm install @merit-systems/echo-typescript-sdk@test" diff --git a/.github/workflows/ci-checks.yml b/.github/workflows/ci-checks.yml index 8b6bb6be0..5a656ef2d 100644 --- a/.github/workflows/ci-checks.yml +++ b/.github/workflows/ci-checks.yml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@v4 - name: Install pnpm - run: npm install -g pnpm + run: npm install -g pnpm@10.11.0 - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index eeed97615..fe123590e 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -100,7 +100,7 @@ jobs: uses: actions/checkout@v4 - name: Install pnpm - run: npm install -g pnpm + run: npm install -g pnpm@10.11.0 - name: Setup Node.js uses: actions/setup-node@v4 @@ -378,7 +378,7 @@ jobs: uses: actions/checkout@v4 - name: Install pnpm - run: npm install -g pnpm + run: npm install -g pnpm@10.11.0 - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/provider-smoke-tests.yml b/.github/workflows/provider-smoke-tests.yml index 2869ff26c..54d0938e2 100644 --- a/.github/workflows/provider-smoke-tests.yml +++ b/.github/workflows/provider-smoke-tests.yml @@ -21,7 +21,7 @@ jobs: uses: actions/checkout@v4 - name: Install pnpm - run: npm install -g pnpm + run: npm install -g pnpm@10.11.0 - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/publish-sdks.yml b/.github/workflows/publish-sdks.yml index e5796625d..b058420c1 100644 --- a/.github/workflows/publish-sdks.yml +++ b/.github/workflows/publish-sdks.yml @@ -32,7 +32,7 @@ jobs: fetch-depth: 0 - name: Install pnpm - run: npm install -g pnpm + run: npm install -g pnpm@10.11.0 - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/test-publish.yml b/.github/workflows/test-publish.yml index 4a2cb96d4..d576b7a4a 100644 --- a/.github/workflows/test-publish.yml +++ b/.github/workflows/test-publish.yml @@ -94,7 +94,7 @@ jobs: fetch-depth: 0 - name: Install pnpm - run: npm install -g pnpm + run: npm install -g pnpm@10.11.0 - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/templates/assistant-ui/package.json b/templates/assistant-ui/package.json index 418276960..621e3d748 100644 --- a/templates/assistant-ui/package.json +++ b/templates/assistant-ui/package.json @@ -7,7 +7,7 @@ "@ai-sdk/openai": "2.0.16", "@ai-sdk/react": "2.0.17", "@assistant-ui/react": "^0.11.3", - "@assistant-ui/react-ai-sdk": "^1.1.0", + "@assistant-ui/react-ai-sdk": "1.1.0", "@assistant-ui/react-markdown": "^0.11.0", "@radix-ui/react-slot": "^1.2.3", "@radix-ui/react-tooltip": "^1.2.8", From 7308fc9951f3837237355e6eccf6daf31fbd04da Mon Sep 17 00:00:00 2001 From: Ryan Sproule Date: Fri, 26 Jun 2026 11:22:43 -0400 Subject: [PATCH 6/8] Use dry-run publish for PR package validation --- .github/workflows/auto-test-publish.yml | 81 ++++++++++++++++++------- 1 file changed, 60 insertions(+), 21 deletions(-) diff --git a/.github/workflows/auto-test-publish.yml b/.github/workflows/auto-test-publish.yml index bc4b9ce20..9aeaabb2f 100644 --- a/.github/workflows/auto-test-publish.yml +++ b/.github/workflows/auto-test-publish.yml @@ -84,10 +84,17 @@ jobs: PACKAGE_NAME=$(node -p "require('./package.json').name") PACKAGE_VERSION=$(node -p "require('./package.json').version") - echo "🚀 Publishing $PACKAGE_NAME@$PACKAGE_VERSION to test tag..." - pnpm publish --access public --tag test --no-git-checks - echo "published=true" >> $GITHUB_OUTPUT - echo "✅ Successfully published $PACKAGE_NAME to test tag" + if [ "${{ github.event_name }}" = "pull_request" ]; then + echo "🔍 Validating $PACKAGE_NAME@$PACKAGE_VERSION with publish dry-run..." + pnpm publish --dry-run --access public --tag test --no-git-checks + echo "published=false" >> $GITHUB_OUTPUT + echo "✅ Successfully validated $PACKAGE_NAME publish" + else + echo "🚀 Publishing $PACKAGE_NAME@$PACKAGE_VERSION to test tag..." + pnpm publish --access public --tag test --no-git-checks + echo "published=true" >> $GITHUB_OUTPUT + echo "✅ Successfully published $PACKAGE_NAME to test tag" + fi # React SDK - name: Version and build React SDK @@ -126,10 +133,17 @@ jobs: PACKAGE_NAME=$(node -p "require('./package.json').name") PACKAGE_VERSION=$(node -p "require('./package.json').version") - echo "🚀 Publishing $PACKAGE_NAME@$PACKAGE_VERSION to test tag..." - pnpm publish --access public --tag test --no-git-checks - echo "published=true" >> $GITHUB_OUTPUT - echo "✅ Successfully published $PACKAGE_NAME to test tag" + if [ "${{ github.event_name }}" = "pull_request" ]; then + echo "🔍 Validating $PACKAGE_NAME@$PACKAGE_VERSION with publish dry-run..." + pnpm publish --dry-run --access public --tag test --no-git-checks + echo "published=false" >> $GITHUB_OUTPUT + echo "✅ Successfully validated $PACKAGE_NAME publish" + else + echo "🚀 Publishing $PACKAGE_NAME@$PACKAGE_VERSION to test tag..." + pnpm publish --access public --tag test --no-git-checks + echo "published=true" >> $GITHUB_OUTPUT + echo "✅ Successfully published $PACKAGE_NAME to test tag" + fi # Next.js SDK - name: Version and build Next.js SDK @@ -168,10 +182,17 @@ jobs: PACKAGE_NAME=$(node -p "require('./package.json').name") PACKAGE_VERSION=$(node -p "require('./package.json').version") - echo "🚀 Publishing $PACKAGE_NAME@$PACKAGE_VERSION to test tag..." - pnpm publish --access public --tag test --no-git-checks - echo "published=true" >> $GITHUB_OUTPUT - echo "✅ Successfully published $PACKAGE_NAME to test tag" + if [ "${{ github.event_name }}" = "pull_request" ]; then + echo "🔍 Validating $PACKAGE_NAME@$PACKAGE_VERSION with publish dry-run..." + pnpm publish --dry-run --access public --tag test --no-git-checks + echo "published=false" >> $GITHUB_OUTPUT + echo "✅ Successfully validated $PACKAGE_NAME publish" + else + echo "🚀 Publishing $PACKAGE_NAME@$PACKAGE_VERSION to test tag..." + pnpm publish --access public --tag test --no-git-checks + echo "published=true" >> $GITHUB_OUTPUT + echo "✅ Successfully published $PACKAGE_NAME to test tag" + fi # AIx402 SDK - name: Version and build AIx402 SDK @@ -210,10 +231,17 @@ jobs: PACKAGE_NAME=$(node -p "require('./package.json').name") PACKAGE_VERSION=$(node -p "require('./package.json').version") - echo "🚀 Publishing $PACKAGE_NAME@$PACKAGE_VERSION to test tag..." - pnpm publish --access public --tag test --no-git-checks - echo "published=true" >> $GITHUB_OUTPUT - echo "✅ Successfully published $PACKAGE_NAME to test tag" + if [ "${{ github.event_name }}" = "pull_request" ]; then + echo "🔍 Validating $PACKAGE_NAME@$PACKAGE_VERSION with publish dry-run..." + pnpm publish --dry-run --access public --tag test --no-git-checks + echo "published=false" >> $GITHUB_OUTPUT + echo "✅ Successfully validated $PACKAGE_NAME publish" + else + echo "🚀 Publishing $PACKAGE_NAME@$PACKAGE_VERSION to test tag..." + pnpm publish --access public --tag test --no-git-checks + echo "published=true" >> $GITHUB_OUTPUT + echo "✅ Successfully published $PACKAGE_NAME to test tag" + fi # Echo Start CLI - name: Version and build Echo Start CLI @@ -252,14 +280,25 @@ jobs: PACKAGE_NAME=$(node -p "require('./package.json').name") PACKAGE_VERSION=$(node -p "require('./package.json').version") - echo "🚀 Publishing $PACKAGE_NAME@$PACKAGE_VERSION to test tag..." - pnpm publish --access public --tag test --no-git-checks - echo "published=true" >> $GITHUB_OUTPUT - echo "✅ Successfully published $PACKAGE_NAME to test tag" + if [ "${{ github.event_name }}" = "pull_request" ]; then + echo "🔍 Validating $PACKAGE_NAME@$PACKAGE_VERSION with publish dry-run..." + pnpm publish --dry-run --access public --tag test --no-git-checks + echo "published=false" >> $GITHUB_OUTPUT + echo "✅ Successfully validated $PACKAGE_NAME publish" + else + echo "🚀 Publishing $PACKAGE_NAME@$PACKAGE_VERSION to test tag..." + pnpm publish --access public --tag test --no-git-checks + echo "published=true" >> $GITHUB_OUTPUT + echo "✅ Successfully published $PACKAGE_NAME to test tag" + fi - name: Summary run: | - echo "✅ Test version published successfully!" + if [ "${{ github.event_name }}" = "pull_request" ]; then + echo "✅ Test version validated successfully!" + else + echo "✅ Test version published successfully!" + fi echo "📦 Version: ${{ steps.get-version.outputs.version }}" echo "🏷️ Tag: test" echo "" From de9f9ba177c42bd1fc4f24a22ca449c2bc45c1ac Mon Sep 17 00:00:00 2001 From: Ryan Sproule Date: Fri, 26 Jun 2026 11:33:57 -0400 Subject: [PATCH 7/8] Stabilize balance update integration checks --- .../echo-data-server/api-key.client.test.ts | 13 ++++-- .../echo-access-jwt.client.test.ts | 11 +++-- .../integration/utils/balance-helpers.ts | 41 +++++++++++++++++++ packages/tests/integration/utils/index.ts | 1 + 4 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 packages/tests/integration/utils/balance-helpers.ts diff --git a/packages/tests/integration/tests/echo-data-server/api-key.client.test.ts b/packages/tests/integration/tests/echo-data-server/api-key.client.test.ts index 7ef68bf8f..86156eeaf 100644 --- a/packages/tests/integration/tests/echo-data-server/api-key.client.test.ts +++ b/packages/tests/integration/tests/echo-data-server/api-key.client.test.ts @@ -2,6 +2,7 @@ import { TEST_CONFIG } from '@/config/test-config'; import { describe, test, expect } from 'vitest'; import { TEST_CLIENT_IDS, TEST_USER_API_KEYS } from '@/config/test-data'; import { echoControlApi } from '@/utils/api-client'; +import { waitForBalanceUpdate } from '@/utils/balance-helpers'; import OpenAI from 'openai'; describe('API Key Client', () => { @@ -39,9 +40,10 @@ describe('API Key Client', () => { expect(chunkCount).toBeGreaterThan(0); expect(receivedContent.length).toBeGreaterThan(0); - // await new Promise(resolve => setTimeout(resolve, 1000)); /// TODO BEN REALLY TODO: SPEED UP THE BALANCE UPDATE SO WE DON'T HAVE TO WAIT FOR 2 SECONDS - - const secondBalanceCheck = await echoControlApi.getBalance(apiKey); + const secondBalanceCheck = await waitForBalanceUpdate( + () => echoControlApi.getBalance(apiKey), + balanceCheck + ); console.log('🔄 Second balance check: ', secondBalanceCheck); expect(secondBalanceCheck.totalPaid).toBe(balanceCheck.totalPaid); @@ -76,7 +78,10 @@ describe('API Key Client', () => { expect(completion.choices).toBeDefined(); expect(completion.choices[0]?.message?.content).toBeDefined(); - const secondBalanceCheck = await echoControlApi.getBalance(apiKey); + const secondBalanceCheck = await waitForBalanceUpdate( + () => echoControlApi.getBalance(apiKey), + balanceCheck + ); expect(secondBalanceCheck.totalPaid).toBe(balanceCheck.totalPaid); expect(secondBalanceCheck.totalSpent).toBeGreaterThanOrEqual( balanceCheck.totalSpent diff --git a/packages/tests/integration/tests/echo-data-server/echo-access-jwt.client.test.ts b/packages/tests/integration/tests/echo-data-server/echo-access-jwt.client.test.ts index 08447e909..65cc63022 100644 --- a/packages/tests/integration/tests/echo-data-server/echo-access-jwt.client.test.ts +++ b/packages/tests/integration/tests/echo-data-server/echo-access-jwt.client.test.ts @@ -4,6 +4,7 @@ import { TEST_CONFIG, echoControlApi, TEST_CLIENT_IDS, + waitForBalanceUpdate, } from '../../utils/index.js'; import { EchoControlApiClient } from '../../utils/api-client.js'; @@ -178,8 +179,9 @@ describe('Echo Data Server Client Integration Tests', () => { accessToken = await getAccessTokenForPaidUser(); - const secondBalanceCheck = await echoControlApi.getBalance( - accessToken.access_token + const secondBalanceCheck = await waitForBalanceUpdate( + () => echoControlApi.getBalance(accessToken.access_token), + balanceCheck ); expect(secondBalanceCheck.totalPaid).toBe(balanceCheck.totalPaid); expect(secondBalanceCheck.totalSpent).toBeGreaterThan( @@ -233,8 +235,9 @@ describe('Echo Data Server Client Integration Tests', () => { accessToken = await getAccessTokenForPaidUser(); - const secondBalanceCheck = await echoControlApi.getBalance( - accessToken.access_token + const secondBalanceCheck = await waitForBalanceUpdate( + () => echoControlApi.getBalance(accessToken.access_token), + balanceCheck ); expect(secondBalanceCheck.totalPaid).toBe(balanceCheck.totalPaid); expect(secondBalanceCheck.totalSpent).toBeGreaterThan( diff --git a/packages/tests/integration/utils/balance-helpers.ts b/packages/tests/integration/utils/balance-helpers.ts new file mode 100644 index 000000000..b86bbfe39 --- /dev/null +++ b/packages/tests/integration/utils/balance-helpers.ts @@ -0,0 +1,41 @@ +export interface BalanceSnapshot { + totalPaid: number; + totalSpent: number; + balance: number; +} + +interface WaitForBalanceUpdateOptions { + timeoutMs?: number; + intervalMs?: number; +} + +const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); + +export async function waitForBalanceUpdate( + getBalance: () => Promise, + initialBalance: BalanceSnapshot, + options: WaitForBalanceUpdateOptions = {} +): Promise { + const timeoutMs = options.timeoutMs ?? 5000; + const intervalMs = options.intervalMs ?? 250; + const deadline = Date.now() + timeoutMs; + let latestBalance = await getBalance(); + + while (Date.now() < deadline) { + if ( + latestBalance.totalSpent > initialBalance.totalSpent || + latestBalance.balance < initialBalance.balance + ) { + return latestBalance; + } + + await sleep(intervalMs); + latestBalance = await getBalance(); + } + + throw new Error( + `Balance did not update within ${timeoutMs}ms. Initial: ${JSON.stringify( + initialBalance + )}. Latest: ${JSON.stringify(latestBalance)}.` + ); +} diff --git a/packages/tests/integration/utils/index.ts b/packages/tests/integration/utils/index.ts index ea8925f4b..466aac6e5 100644 --- a/packages/tests/integration/utils/index.ts +++ b/packages/tests/integration/utils/index.ts @@ -4,6 +4,7 @@ export * from './api-client'; export * from './auth-helpers'; export * from './test-data-factory'; export * from './browser-helpers'; +export * from './balance-helpers'; // Re-export configuration and test data export * from '../config/index.js'; From 3b7f5ef4929cc97f09cb84981bcf411f5eb94dc3 Mon Sep 17 00:00:00 2001 From: Ryan Sproule Date: Fri, 26 Jun 2026 11:42:27 -0400 Subject: [PATCH 8/8] Add Claude Opus 4.8 model support --- packages/sdk/ts/src/supported-models/chat/anthropic.ts | 7 +++++++ packages/sdk/ts/src/supported-models/chat/openrouter.ts | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/packages/sdk/ts/src/supported-models/chat/anthropic.ts b/packages/sdk/ts/src/supported-models/chat/anthropic.ts index fa36fbe9e..e6fb9c6c7 100644 --- a/packages/sdk/ts/src/supported-models/chat/anthropic.ts +++ b/packages/sdk/ts/src/supported-models/chat/anthropic.ts @@ -11,6 +11,7 @@ export type AnthropicModel = | 'claude-haiku-4-5-20251001' | 'claude-opus-4-1-20250805' | 'claude-opus-4-20250514' + | 'claude-opus-4-8' | 'claude-sonnet-4-20250514' | 'claude-sonnet-4-5-20250929' | 'claude-sonnet-4-6'; @@ -70,6 +71,12 @@ export const AnthropicModels: SupportedModel[] = [ output_cost_per_token: 0.000075, provider: 'Anthropic', }, + { + model_id: 'claude-opus-4-8', + input_cost_per_token: 0.000005, + output_cost_per_token: 0.000025, + provider: 'Anthropic', + }, { model_id: 'claude-sonnet-4-20250514', input_cost_per_token: 0.000003, diff --git a/packages/sdk/ts/src/supported-models/chat/openrouter.ts b/packages/sdk/ts/src/supported-models/chat/openrouter.ts index 91e83868f..20d08b2e9 100644 --- a/packages/sdk/ts/src/supported-models/chat/openrouter.ts +++ b/packages/sdk/ts/src/supported-models/chat/openrouter.ts @@ -26,6 +26,7 @@ export type OpenRouterModel = | 'anthropic/claude-haiku-4.5' | 'anthropic/claude-opus-4' | 'anthropic/claude-opus-4.1' + | 'anthropic/claude-opus-4.8' | 'anthropic/claude-sonnet-4' | 'anthropic/claude-sonnet-4.5' | 'anthropic/claude-sonnet-4.6' @@ -422,6 +423,12 @@ export const OpenRouterModels: SupportedModel[] = [ output_cost_per_token: 0.000075, provider: 'OpenRouter', }, + { + model_id: 'anthropic/claude-opus-4.8', + input_cost_per_token: 0.000005, + output_cost_per_token: 0.000025, + provider: 'OpenRouter', + }, { model_id: 'anthropic/claude-sonnet-4', input_cost_per_token: 0.000003,