From 76cc39bda26c928cd58b4c1310edc353324c163b Mon Sep 17 00:00:00 2001 From: Sameel Date: Fri, 29 Aug 2025 14:37:00 -0400 Subject: [PATCH 01/20] allow free modelclientoptions --- lib/index.ts | 9 +++------ lib/llm/AnthropicClient.ts | 4 ++-- lib/llm/CerebrasClient.ts | 8 ++++---- lib/llm/LLMClient.ts | 21 ++++++++++----------- lib/llm/LLMProvider.ts | 10 +++++----- lib/llm/OpenAIClient.ts | 10 +++++----- types/llm.ts | 5 ++--- types/model.ts | 5 ++++- 8 files changed, 35 insertions(+), 37 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index cf40f7da3..628cd31e5 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -595,14 +595,11 @@ export class Stagehand { // Temporary add for legacy providers modelApiKey = LLMProvider.getModelProvider(this.modelName) === "openai" - ? process.env.OPENAI_API_KEY || - this.llmClient?.clientOptions?.apiKey + ? process.env.OPENAI_API_KEY : LLMProvider.getModelProvider(this.modelName) === "anthropic" - ? process.env.ANTHROPIC_API_KEY || - this.llmClient?.clientOptions?.apiKey + ? process.env.ANTHROPIC_API_KEY : LLMProvider.getModelProvider(this.modelName) === "google" - ? process.env.GOOGLE_API_KEY || - this.llmClient?.clientOptions?.apiKey + ? process.env.GOOGLE_API_KEY : undefined; } this.modelClientOptions = { diff --git a/lib/llm/AnthropicClient.ts b/lib/llm/AnthropicClient.ts index 27d8f4c7c..0b1f5c3b8 100644 --- a/lib/llm/AnthropicClient.ts +++ b/lib/llm/AnthropicClient.ts @@ -1,3 +1,4 @@ +import { CreateChatCompletionResponseError } from "@/types/stagehandErrors"; import Anthropic, { ClientOptions } from "@anthropic-ai/sdk"; import { ImageBlockParam, @@ -14,14 +15,13 @@ import { LLMClient, LLMResponse, } from "./LLMClient"; -import { CreateChatCompletionResponseError } from "@/types/stagehandErrors"; export class AnthropicClient extends LLMClient { public type = "anthropic" as const; private client: Anthropic; private cache: LLMCache | undefined; private enableCaching: boolean; - public clientOptions: ClientOptions; + public clientOptions?: ClientOptions; constructor({ enableCaching = false, diff --git a/lib/llm/CerebrasClient.ts b/lib/llm/CerebrasClient.ts index 4b12c0380..c86028891 100644 --- a/lib/llm/CerebrasClient.ts +++ b/lib/llm/CerebrasClient.ts @@ -1,5 +1,6 @@ -import OpenAI from "openai"; +import { CreateChatCompletionResponseError } from "@/types/stagehandErrors"; import type { ClientOptions } from "openai"; +import OpenAI from "openai"; import { zodToJsonSchema } from "zod-to-json-schema"; import { LogLine } from "../../types/log"; import { AvailableModel } from "../../types/model"; @@ -10,14 +11,13 @@ import { LLMClient, LLMResponse, } from "./LLMClient"; -import { CreateChatCompletionResponseError } from "@/types/stagehandErrors"; export class CerebrasClient extends LLMClient { public type = "cerebras" as const; private client: OpenAI; private cache: LLMCache | undefined; private enableCaching: boolean; - public clientOptions: ClientOptions; + public clientOptions?: ClientOptions; public hasVision = false; constructor({ @@ -31,7 +31,7 @@ export class CerebrasClient extends LLMClient { enableCaching?: boolean; cache?: LLMCache; modelName: AvailableModel; - clientOptions?: ClientOptions; + clientOptions?: OpenAI.ClientOptions; userProvidedInstructions?: string; }) { super(modelName, userProvidedInstructions); diff --git a/lib/llm/LLMClient.ts b/lib/llm/LLMClient.ts index ec8a52d99..5b9f1c463 100644 --- a/lib/llm/LLMClient.ts +++ b/lib/llm/LLMClient.ts @@ -1,18 +1,18 @@ -import { ZodType } from "zod/v3"; -import { LLMTool } from "../../types/llm"; -import { LogLine } from "../../types/log"; -import { AvailableModel, ClientOptions } from "../../types/model"; import { - generateObject, - generateText, - streamText, - streamObject, - experimental_generateImage, embed, embedMany, - experimental_transcribe, + experimental_generateImage, experimental_generateSpeech, + experimental_transcribe, + generateObject, + generateText, + streamObject, + streamText, } from "ai"; +import { ZodType } from "zod/v3"; +import { LLMTool } from "../../types/llm"; +import { LogLine } from "../../types/log"; +import { AvailableModel } from "../../types/model"; export interface ChatMessage { role: "system" | "user" | "assistant"; @@ -100,7 +100,6 @@ export abstract class LLMClient { public type: "openai" | "anthropic" | "cerebras" | "groq" | (string & {}); public modelName: AvailableModel | (string & {}); public hasVision: boolean; - public clientOptions: ClientOptions; public userProvidedInstructions?: string; constructor(modelName: AvailableModel, userProvidedInstructions?: string) { diff --git a/lib/llm/LLMProvider.ts b/lib/llm/LLMProvider.ts index 4c7e9f1d8..87f2dca94 100644 --- a/lib/llm/LLMProvider.ts +++ b/lib/llm/LLMProvider.ts @@ -97,9 +97,9 @@ const modelToProviderMap: { [key in AvailableModel]: ModelProvider } = { export function getAISDKLanguageModel( subProvider: string, subModelName: string, - apiKey?: string, + modelClientOptions?: ClientOptions, ) { - if (apiKey) { + if (modelClientOptions && Object.keys(modelClientOptions).length > 0) { const creator = AISDKProvidersWithAPIKey[subProvider]; if (!creator) { throw new UnsupportedAISDKModelProviderError( @@ -107,8 +107,8 @@ export function getAISDKLanguageModel( Object.keys(AISDKProvidersWithAPIKey), ); } - // Create the provider instance with the API key - const provider = creator({ apiKey }); + // Create the provider instance with the custom configuration options + const provider = creator(modelClientOptions); // Get the specific model from the provider return provider(subModelName); } else { @@ -165,7 +165,7 @@ export class LLMProvider { const languageModel = getAISDKLanguageModel( subProvider, subModelName, - clientOptions?.apiKey, + clientOptions, ); return new AISdkClient({ diff --git a/lib/llm/OpenAIClient.ts b/lib/llm/OpenAIClient.ts index 008215bd2..58dd2308e 100644 --- a/lib/llm/OpenAIClient.ts +++ b/lib/llm/OpenAIClient.ts @@ -1,3 +1,8 @@ +import { + CreateChatCompletionResponseError, + StagehandError, + ZodSchemaValidationError, +} from "@/types/stagehandErrors"; import OpenAI, { ClientOptions } from "openai"; import { zodResponseFormat } from "openai/helpers/zod"; import { @@ -21,11 +26,6 @@ import { LLMClient, LLMResponse, } from "./LLMClient"; -import { - CreateChatCompletionResponseError, - StagehandError, - ZodSchemaValidationError, -} from "@/types/stagehandErrors"; export class OpenAIClient extends LLMClient { public type = "openai" as const; diff --git a/types/llm.ts b/types/llm.ts index 2a78d8ec9..d3ba9939e 100644 --- a/types/llm.ts +++ b/types/llm.ts @@ -1,4 +1,5 @@ import { LanguageModel } from "ai"; +import { ClientOptions } from "./model"; export interface LLMTool { type: "function"; @@ -9,6 +10,4 @@ export interface LLMTool { export type AISDKProvider = (modelName: string) => LanguageModel; // Represents a function that takes options (like apiKey) and returns an AISDKProvider -export type AISDKCustomProvider = (options: { - apiKey: string; -}) => AISDKProvider; +export type AISDKCustomProvider = (options: ClientOptions) => AISDKProvider; diff --git a/types/model.ts b/types/model.ts index beb960a17..10a5fd623 100644 --- a/types/model.ts +++ b/types/model.ts @@ -44,7 +44,10 @@ export type ModelProvider = | "google" | "aisdk"; -export type ClientOptions = OpenAIClientOptions | AnthropicClientOptions; +export type ClientOptions = + | Record + | OpenAIClientOptions + | AnthropicClientOptions; export interface AnthropicJsonSchemaObject { definitions?: { From 04fb315a5ef46f20ac5819bb13e8089cb113be8d Mon Sep 17 00:00:00 2001 From: Sameel Date: Wed, 10 Sep 2025 12:27:50 -0400 Subject: [PATCH 02/20] change zod ver to working build --- package.json | 2 +- pnpm-lock.yaml | 3198 +++++++++++++++++++++++++----------------------- 2 files changed, 1655 insertions(+), 1545 deletions(-) diff --git a/package.json b/package.json index e5173b038..3c7f019da 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "peerDependencies": { "deepmerge": "^4.3.1", "dotenv": "^16.4.5", - "zod": ">=3.25.0 <4.1.0" + "zod": "3.25.67" }, "dependencies": { "@anthropic-ai/sdk": "0.39.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 79884d2d4..8a8340907 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,16 +13,16 @@ importers: version: 0.39.0 '@browserbasehq/sdk': specifier: ^2.4.0 - version: 2.5.0 + version: 2.6.0 '@google/genai': specifier: ^0.8.0 version: 0.8.0 '@modelcontextprotocol/sdk': specifier: ^1.17.2 - version: 1.17.2 + version: 1.17.5 ai: specifier: ^4.3.9 - version: 4.3.12(react@19.1.0)(zod@3.25.67) + version: 4.3.19(react@19.1.1)(zod@3.25.67) deepmerge: specifier: ^4.3.1 version: 4.3.1 @@ -31,65 +31,65 @@ importers: version: 0.0.1464554 dotenv: specifier: ^16.4.5 - version: 16.5.0 + version: 16.6.1 fetch-cookie: specifier: ^3.1.0 version: 3.1.0 openai: specifier: ^4.87.1 - version: 4.96.2(ws@8.18.1)(zod@3.25.67) + version: 4.104.0(ws@8.18.3)(zod@3.25.67) pino: specifier: ^9.6.0 - version: 9.6.0 + version: 9.9.5 pino-pretty: specifier: ^13.0.0 - version: 13.0.0 + version: 13.1.1 playwright: specifier: ^1.52.0 - version: 1.52.0 + version: 1.55.0 ws: specifier: ^8.18.0 - version: 8.18.1 + version: 8.18.3 zod: - specifier: '>=3.25.0 <4.1.0' + specifier: 3.25.67 version: 3.25.67 zod-to-json-schema: specifier: ^3.23.5 - version: 3.24.5(zod@3.25.67) + version: 3.24.6(zod@3.25.67) optionalDependencies: '@ai-sdk/anthropic': specifier: ^1.2.6 - version: 1.2.10(zod@3.25.67) + version: 1.2.12(zod@3.25.67) '@ai-sdk/azure': specifier: ^1.3.19 - version: 1.3.22(zod@3.25.67) + version: 1.3.25(zod@3.25.67) '@ai-sdk/cerebras': specifier: ^0.2.6 - version: 0.2.13(zod@3.25.67) + version: 0.2.16(zod@3.25.67) '@ai-sdk/deepseek': specifier: ^0.2.13 - version: 0.2.13(zod@3.25.67) + version: 0.2.16(zod@3.25.67) '@ai-sdk/google': specifier: ^1.2.6 - version: 1.2.14(zod@3.25.67) + version: 1.2.22(zod@3.25.67) '@ai-sdk/groq': specifier: ^1.2.4 - version: 1.2.8(zod@3.25.67) + version: 1.2.9(zod@3.25.67) '@ai-sdk/mistral': specifier: ^1.2.7 - version: 1.2.7(zod@3.25.67) + version: 1.2.8(zod@3.25.67) '@ai-sdk/openai': specifier: ^1.0.14 - version: 1.3.21(zod@3.25.67) + version: 1.3.24(zod@3.25.67) '@ai-sdk/perplexity': specifier: ^1.1.7 - version: 1.1.8(zod@3.25.67) + version: 1.1.9(zod@3.25.67) '@ai-sdk/togetherai': specifier: ^0.2.6 - version: 0.2.13(zod@3.25.67) + version: 0.2.16(zod@3.25.67) '@ai-sdk/xai': specifier: ^1.2.15 - version: 1.2.15(zod@3.25.67) + version: 1.2.18(zod@3.25.67) ollama-ai-provider: specifier: ^1.2.0 version: 1.2.0(zod@3.25.67) @@ -99,19 +99,19 @@ importers: version: 0.5.1 '@changesets/cli': specifier: ^2.27.9 - version: 2.29.2 + version: 2.29.7(@types/node@20.19.13) '@eslint/js': specifier: ^9.16.0 - version: 9.25.1 + version: 9.35.0 '@langchain/core': specifier: ^0.3.40 - version: 0.3.50(openai@4.96.2(ws@8.18.1)(zod@3.25.67)) + version: 0.3.75(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67)) '@langchain/openai': specifier: ^0.4.4 - version: 0.4.9(@langchain/core@0.3.50(openai@4.96.2(ws@8.18.1)(zod@3.25.67)))(ws@8.18.1) + version: 0.4.9(@langchain/core@0.3.75(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67)))(ws@8.18.3) '@playwright/test': specifier: ^1.42.1 - version: 1.52.0 + version: 1.55.0 '@types/adm-zip': specifier: ^0.5.7 version: 0.5.7 @@ -120,10 +120,10 @@ importers: version: 0.22.35 '@types/express': specifier: ^4.17.21 - version: 4.17.21 + version: 4.17.23 '@types/node': specifier: ^20.11.30 - version: 20.17.32 + version: 20.19.13 '@types/ws': specifier: ^8.5.13 version: 8.18.1 @@ -135,13 +135,13 @@ importers: version: 0.0.64 braintrust: specifier: ^0.0.171 - version: 0.0.171(openai@4.96.2(ws@8.18.1)(zod@3.25.67))(react@19.1.0)(sswr@2.2.0(svelte@5.28.2))(svelte@5.28.2)(vue@3.5.13(typescript@5.8.3))(zod@3.25.67) + version: 0.0.171(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.8))(svelte@5.38.8)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) chalk: specifier: ^5.4.1 - version: 5.4.1 + version: 5.6.2 cheerio: specifier: ^1.0.0 - version: 1.0.0 + version: 1.1.2 chromium-bidi: specifier: ^0.10.0 version: 0.10.2(devtools-protocol@0.0.1464554) @@ -150,7 +150,7 @@ importers: version: 0.21.5 eslint: specifier: ^9.16.0 - version: 9.25.1(jiti@1.21.7) + version: 9.35.0(jiti@1.21.7) express: specifier: ^4.21.0 version: 4.21.2 @@ -162,31 +162,31 @@ importers: version: 1.4.5-lts.2 prettier: specifier: ^3.2.5 - version: 3.5.3 + version: 3.6.2 string-comparison: specifier: ^1.3.0 version: 1.3.0 tsup: specifier: ^8.2.1 - version: 8.4.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.19.4)(typescript@5.8.3)(yaml@2.7.1) + version: 8.5.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1) tsx: specifier: ^4.10.5 - version: 4.19.4 + version: 4.20.5 typescript: specifier: ^5.2.2 - version: 5.8.3 + version: 5.9.2 typescript-eslint: specifier: ^8.17.0 - version: 8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3) + version: 8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2) docs: dependencies: mintlify: specifier: ^4.2.47 - version: 4.2.78(@types/node@20.17.32)(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(typescript@5.8.3) + version: 4.2.108(@types/node@20.19.13)(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(typescript@5.9.2) tsx: specifier: ^4.19.2 - version: 4.19.4 + version: 4.20.5 zod: specifier: ^3.25.0 version: 3.25.76 @@ -199,7 +199,7 @@ importers: devDependencies: tsx: specifier: ^4.10.5 - version: 4.19.4 + version: 4.20.5 examples: dependencies: @@ -212,68 +212,68 @@ importers: version: 3.10.1 tsx: specifier: ^4.10.5 - version: 4.19.4 + version: 4.20.5 lib: {} packages: - '@ai-sdk/anthropic@1.2.10': - resolution: {integrity: sha512-PyE7EC2fPjs9DnzRAHDrPQmcnI2m2Eojr8pfhckOejOlDEh2w7NnSJr1W3qe5hUWzKr+6d7NG1ZKR9fhmpDdEQ==} + '@ai-sdk/anthropic@1.2.12': + resolution: {integrity: sha512-YSzjlko7JvuiyQFmI9RN1tNZdEiZxc+6xld/0tq/VkJaHpEzGAb1yiNxxvmYVcjvfu/PcvCxAAYXmTYQQ63IHQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/azure@1.3.22': - resolution: {integrity: sha512-X3Vlxwh0MSmmZ8Q7LgzCXHvPq0XsNL1dTODIZ3ziC7n8cME8yHvjpwPwMAHLK0a7YbWO7eOW0OsDnZXdong10g==} + '@ai-sdk/azure@1.3.25': + resolution: {integrity: sha512-cTME89A9UYrza0t5pbY9b80yYY02Q5ALQdB2WP3R7/Yl1PLwbFChx994Q3Un0G2XV5h3arlm4fZTViY10isjhQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/cerebras@0.2.13': - resolution: {integrity: sha512-PkVvWQfFTN4NGVVnlb4mogbdDyz3hydCKnffU8J8dHp2SBVVOElAYYm+MbHhF1k3cy8i4mBBoYAgZ8wch3K/OA==} + '@ai-sdk/cerebras@0.2.16': + resolution: {integrity: sha512-FbT3gFYADXwyjQlpluWxl5fRnkJvGMHX5ahLZZ7qqpDQHH86ZO6X9j9Gk6vcMCwNPpI7+miiK79q1e5wzVHBSQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/deepseek@0.2.13': - resolution: {integrity: sha512-+Vw+nMdypupRfQb37wT1YmNNAROhCBqVRhHule3dk8A26N/W8GlAfVwLiae1/fK275UddbQWpUTMzvrx7n9HDg==} + '@ai-sdk/deepseek@0.2.16': + resolution: {integrity: sha512-pIlwtjNehCpDr1wqxtSbXshynW4CiwS6S3yAKHzHi73QtmS2Hg9kE1DB0zgENKaZLmbsc4UgigGM6FzuUd4M8Q==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/google@1.2.14': - resolution: {integrity: sha512-r3FSyyWl0KVjUlKn5o+vMl+Nk8Z/mV6xrqW+49g7fMoRVr/wkRxJZtHorrdDGRreCJubZyAk8ziSQSLpgv2H6w==} + '@ai-sdk/google@1.2.22': + resolution: {integrity: sha512-Ppxu3DIieF1G9pyQ5O1Z646GYR0gkC57YdBqXJ82qvCdhEhZHu0TWhmnOoeIWe2olSbuDeoOY+MfJrW8dzS3Hw==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/groq@1.2.8': - resolution: {integrity: sha512-DRq0b4twVUh52DFnIhVC4F14Po8w+76sCdigMRRIcAiSmGRr9I3Vyot36tun1q4tBZMYSvQUss60W3eiaoa6mg==} + '@ai-sdk/groq@1.2.9': + resolution: {integrity: sha512-7MoDaxm8yWtiRbD1LipYZG0kBl+Xe0sv/EeyxnHnGPZappXdlgtdOgTZVjjXkT3nWP30jjZi9A45zoVrBMb3Xg==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/mistral@1.2.7': - resolution: {integrity: sha512-MbOMGfnHKcsvjbv4d6OT7Oaz+Wp4jD8yityqC4hASoKoW1s7L52woz25ES8RgAgTRlfbEZ3MOxEzLu58I228bQ==} + '@ai-sdk/mistral@1.2.8': + resolution: {integrity: sha512-lv857D9UJqCVxiq2Fcu7mSPTypEHBUqLl1K+lCaP6X/7QAkcaxI36QDONG+tOhGHJOXTsS114u8lrUTaEiGXbg==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/openai-compatible@0.2.13': - resolution: {integrity: sha512-tB+lL8Z3j0qDod/mvxwjrPhbLUHp/aQW+NvMoJaqeTtP+Vmv5qR800pncGczxn5WN0pllQm+7aIRDnm69XeSbg==} + '@ai-sdk/openai-compatible@0.2.16': + resolution: {integrity: sha512-LkvfcM8slJedRyJa/MiMiaOzcMjV1zNDwzTHEGz7aAsgsQV0maLfmJRi/nuSwf5jmp0EouC+JXXDUj2l94HgQw==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/openai@1.3.21': - resolution: {integrity: sha512-ipAhkRKUd2YaMmn7DAklX3N7Ywx/rCsJHVyb0V/lKRqPcc612qAFVbjg+Uve8QYJlbPxgfsM4s9JmCFp6PSdYw==} + '@ai-sdk/openai@1.3.24': + resolution: {integrity: sha512-GYXnGJTHRTZc4gJMSmFRgEQudjqd4PUN0ZjQhPwOAYH1yOAvQoG/Ikqs+HyISRbLPCrhbZnPKCNHuRU4OfpW0Q==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@ai-sdk/perplexity@1.1.8': - resolution: {integrity: sha512-hdyMknEKRhUr4AwIswUNsrT5XdQ35tZl9jAiyi1VbhxfW0mCr5dxPt/nYWYN0sc+2m7yfG3L3D5J5V7GIJiqzg==} + '@ai-sdk/perplexity@1.1.9': + resolution: {integrity: sha512-Ytolh/v2XupXbTvjE18EFBrHLoNMH0Ueji3lfSPhCoRUfkwrgZ2D9jlNxvCNCCRiGJG5kfinSHvzrH5vGDklYA==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -287,8 +287,8 @@ packages: zod: optional: true - '@ai-sdk/provider-utils@2.2.7': - resolution: {integrity: sha512-kM0xS3GWg3aMChh9zfeM+80vEZfXzR3JEUBdycZLtbRZ2TRT8xOj3WodGHPb06sUK5yD7pAXC/P7ctsi2fvUGQ==} + '@ai-sdk/provider-utils@2.2.8': + resolution: {integrity: sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==} engines: {node: '>=18'} peerDependencies: zod: ^3.23.8 @@ -317,8 +317,8 @@ packages: zod: optional: true - '@ai-sdk/react@1.2.10': - resolution: {integrity: sha512-iUZfApc6aftVT7f41y9b1NPk0dZFt9vRR0/gkZsKdP56ShcKtuTu44BkjtWdrBs7fcTbN2BQZtDao1AY1GxzsQ==} + '@ai-sdk/react@1.2.12': + resolution: {integrity: sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -345,8 +345,8 @@ packages: svelte: optional: true - '@ai-sdk/togetherai@0.2.13': - resolution: {integrity: sha512-DmcH+5aeLPpVCQYZgmM1nnKNMkqvJR8lWStFze5+PbKJsUHGqli8zdGEEOJ7iGWGOFONo7EpdW/tJeGP1xNXdw==} + '@ai-sdk/togetherai@0.2.16': + resolution: {integrity: sha512-vCtYUrIdep0M6GIvemyYpwSa9SWOleb/2cuGNXcxzU2xy4GJQdHK/MigQbT9rfeuqnjU2W9KIdtAVJGVwIBogw==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 @@ -360,8 +360,8 @@ packages: zod: optional: true - '@ai-sdk/ui-utils@1.2.9': - resolution: {integrity: sha512-cbiLzgXDv3+460f61UVSykn3XdKOS+SHs/EANw+pdOQKwn8JN7rZJL/ggPyMuZ7D9lO3oWOfOJ1QS+9uClfVug==} + '@ai-sdk/ui-utils@1.2.11': + resolution: {integrity: sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==} engines: {node: '>=18'} peerDependencies: zod: ^3.23.8 @@ -375,32 +375,28 @@ packages: vue: optional: true - '@ai-sdk/xai@1.2.15': - resolution: {integrity: sha512-18qEYyVHIqTiOMePE00bfx4kJrTHM4dV3D3Rpe+eBISlY80X1FnzZRnRTJo3Q6MOSmW5+ZKVaX9jtryhoFpn0A==} + '@ai-sdk/xai@1.2.18': + resolution: {integrity: sha512-T70WEu+UKXD/Fdj9ck+ujIqUp5ru06mJ/7usePXeXL5EeTi8KXevXF9AMIDdhyD5MZPT2jI8t19lEr8Bhuh/Bg==} engines: {node: '>=18'} peerDependencies: zod: ^3.0.0 - '@alcalzone/ansi-tokenize@0.1.3': - resolution: {integrity: sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==} - engines: {node: '>=14.13.1'} + '@alcalzone/ansi-tokenize@0.2.0': + resolution: {integrity: sha512-qI/5TaaaCZE4yeSZ83lu0+xi1r88JSxUjnH4OP/iZF7+KKZ75u3ee5isd0LxX+6N8U0npL61YrpbthILHB6BnA==} + engines: {node: '>=18'} '@alloc/quick-lru@5.2.0': resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - '@anthropic-ai/sdk@0.39.0': resolution: {integrity: sha512-eMyDIPRZbt1CCLErRCi3exlAvNkBtRe+kW5vvJyef93PmNr/clstYgHhtvmkxN82nlKgzyGPCyGxrm0JQ1ZIdg==} - '@ark/schema@0.46.0': - resolution: {integrity: sha512-c2UQdKgP2eqqDArfBqQIJppxJHvNNXuQPeuSPlDML4rjw+f1cu0qAlzOG4b8ujgm9ctIDWwhpyw6gjG5ledIVQ==} + '@ark/schema@0.49.0': + resolution: {integrity: sha512-GphZBLpW72iS0v4YkeUtV3YIno35Gimd7+ezbPO9GwEi9kzdUrPVjvf6aXSBAfHikaFc/9pqZOpv3pOXnC71tw==} - '@ark/util@0.46.0': - resolution: {integrity: sha512-JPy/NGWn/lvf1WmGCPw2VGpBg5utZraE84I7wli18EDF3p3zc/e9WolT35tINeZO3l7C77SjqRJeAUoT0CvMRg==} + '@ark/util@0.49.0': + resolution: {integrity: sha512-/BtnX7oCjNkxi2vi6y1399b+9xd1jnCrDYhZ61f0a+3X8x8DxlK52VgEEzyuC2UQMPACIfYrmHkhD3lGt2GaMA==} '@asteasolutions/zod-to-openapi@6.4.0': resolution: {integrity: sha512-8cxfF7AHHx2PqnN4Cd8/O8CBu/nVYJP9DpnfVLW3BFb66VJDnqI/CczZnkqMc3SNh6J9GiX7JbJ5T4BSP4HZ2Q==} @@ -410,8 +406,8 @@ packages: '@asyncapi/parser@3.4.0': resolution: {integrity: sha512-Sxn74oHiZSU6+cVeZy62iPZMFMvKp4jupMFHelSICCMw1qELmUHPvuZSr+ZHDmNGgHcEpzJM5HN02kR7T4g+PQ==} - '@asyncapi/specs@6.8.1': - resolution: {integrity: sha512-czHoAk3PeXTLR+X8IUaD+IpT+g+zUvkcgMDJVothBsan+oHN3jfcFcFUNdOPAAFoUCQN1hXF1dWuphWy05THlA==} + '@asyncapi/specs@6.10.0': + resolution: {integrity: sha512-vB5oKLsdrLUORIZ5BXortZTlVyGWWMC1Nud/0LtgxQ3Yn2738HigAD6EVqScvpPsDUI/bcLVsYEXN4dtXQHVng==} '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} @@ -425,17 +421,17 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.0': - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/runtime@7.27.1': - resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.2': - resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} '@braintrust/core@0.0.34': @@ -444,17 +440,17 @@ packages: '@braintrust/core@0.0.67': resolution: {integrity: sha512-aCWOIgGKeYeEQmU8FcPyfp0phaLpt4iaDcealooaI7Lw/Loz2LeHu5FdzVzu34B7zw3ZOkzyrr0I4X/YFdTy1w==} - '@browserbasehq/sdk@2.5.0': - resolution: {integrity: sha512-bcnbYZvm5Ht1nrHUfWDK4crspiTy1ESJYMApsMiOTUnlKOan0ocRD6m7hZH34iSC2c2XWsoryR80cwsYgCBWzQ==} + '@browserbasehq/sdk@2.6.0': + resolution: {integrity: sha512-83iXP5D7xMm8Wyn66TUaUrgoByCmAJuoMoZQI3sGg3JAiMlTfnCIMqyVBoNSaItaPIkaCnrsj6LiusmXV2X9YA==} '@cfworker/json-schema@4.1.1': resolution: {integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==} - '@changesets/apply-release-plan@7.0.12': - resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==} + '@changesets/apply-release-plan@7.0.13': + resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} - '@changesets/assemble-release-plan@6.0.6': - resolution: {integrity: sha512-Frkj8hWJ1FRZiY3kzVCKzS0N5mMwWKwmv9vpam7vt8rZjLL1JMthdh6pSDVSPumHPshTTkKZ0VtNbE0cJHZZUg==} + '@changesets/assemble-release-plan@6.0.9': + resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} '@changesets/changelog-git@0.2.1': resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} @@ -462,8 +458,8 @@ packages: '@changesets/changelog-github@0.5.1': resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} - '@changesets/cli@2.29.2': - resolution: {integrity: sha512-vwDemKjGYMOc0l6WUUTGqyAWH3AmueeyoJa1KmFRtCYiCoY5K3B68ErYpDB6H48T4lLI4czum4IEjh6ildxUeg==} + '@changesets/cli@2.29.7': + resolution: {integrity: sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ==} hasBin: true '@changesets/config@3.1.1': @@ -478,8 +474,8 @@ packages: '@changesets/get-github-info@0.6.0': resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} - '@changesets/get-release-plan@4.0.10': - resolution: {integrity: sha512-CCJ/f3edYaA3MqoEnWvGGuZm0uMEMzNJ97z9hdUR34AOvajSwySwsIzC/bBu3+kuGDsB+cny4FljG8UBWAa7jg==} + '@changesets/get-release-plan@4.0.13': + resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} @@ -511,8 +507,8 @@ packages: '@changesets/write@0.4.0': resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} - '@emnapi/runtime@1.4.3': - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + '@emnapi/runtime@1.5.0': + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} @@ -520,8 +516,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.3': - resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==} + '@esbuild/aix-ppc64@0.25.9': + resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -538,8 +534,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.3': - resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==} + '@esbuild/android-arm64@0.25.9': + resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -556,8 +552,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.3': - resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==} + '@esbuild/android-arm@0.25.9': + resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -574,8 +570,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.3': - resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==} + '@esbuild/android-x64@0.25.9': + resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -592,8 +588,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.3': - resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==} + '@esbuild/darwin-arm64@0.25.9': + resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -610,8 +606,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.3': - resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==} + '@esbuild/darwin-x64@0.25.9': + resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -628,8 +624,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.3': - resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==} + '@esbuild/freebsd-arm64@0.25.9': + resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -646,8 +642,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.3': - resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==} + '@esbuild/freebsd-x64@0.25.9': + resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -664,8 +660,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.3': - resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==} + '@esbuild/linux-arm64@0.25.9': + resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -682,8 +678,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.3': - resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==} + '@esbuild/linux-arm@0.25.9': + resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -700,8 +696,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.3': - resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==} + '@esbuild/linux-ia32@0.25.9': + resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -718,8 +714,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.3': - resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==} + '@esbuild/linux-loong64@0.25.9': + resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -736,8 +732,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.3': - resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==} + '@esbuild/linux-mips64el@0.25.9': + resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -754,8 +750,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.3': - resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==} + '@esbuild/linux-ppc64@0.25.9': + resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -772,8 +768,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.3': - resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==} + '@esbuild/linux-riscv64@0.25.9': + resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -790,8 +786,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.3': - resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==} + '@esbuild/linux-s390x@0.25.9': + resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -808,14 +804,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.3': - resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==} + '@esbuild/linux-x64@0.25.9': + resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.3': - resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==} + '@esbuild/netbsd-arm64@0.25.9': + resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -832,14 +828,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.3': - resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==} + '@esbuild/netbsd-x64@0.25.9': + resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.3': - resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==} + '@esbuild/openbsd-arm64@0.25.9': + resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -856,12 +852,18 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.3': - resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==} + '@esbuild/openbsd-x64@0.25.9': + resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] + '@esbuild/openharmony-arm64@0.25.9': + resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -874,8 +876,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.3': - resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==} + '@esbuild/sunos-x64@0.25.9': + resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -892,8 +894,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.3': - resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==} + '@esbuild/win32-arm64@0.25.9': + resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -910,8 +912,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.3': - resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==} + '@esbuild/win32-ia32@0.25.9': + resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -928,14 +930,14 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.3': - resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==} + '@esbuild/win32-x64@0.25.9': + resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.6.1': - resolution: {integrity: sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==} + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -944,32 +946,32 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.20.0': - resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + '@eslint/config-array@0.21.0': + resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.2.1': - resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} + '@eslint/config-helpers@0.3.1': + resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.13.0': - resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + '@eslint/core@0.15.2': + resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.25.1': - resolution: {integrity: sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==} + '@eslint/js@9.35.0': + resolution: {integrity: sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.8': - resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + '@eslint/plugin-kit@0.3.5': + resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@google/genai@0.8.0': @@ -980,20 +982,16 @@ packages: resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.2': - resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} '@img/sharp-darwin-arm64@0.33.5': @@ -1101,8 +1099,8 @@ packages: cpu: [x64] os: [win32] - '@inquirer/checkbox@4.1.5': - resolution: {integrity: sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ==} + '@inquirer/checkbox@4.2.2': + resolution: {integrity: sha512-E+KExNurKcUJJdxmjglTl141EwxWyAHplvsYJQgSwXf8qiNWkTxTuCCqmhFEmbIXd4zLaGMfQFJ6WrZ7fSeV3g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1110,8 +1108,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.9': - resolution: {integrity: sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==} + '@inquirer/confirm@5.1.16': + resolution: {integrity: sha512-j1a5VstaK5KQy8Mu8cHmuQvN1Zc62TbLhjJxwHvKPPKEoowSF6h/0UdOpA9DNdWZ+9Inq73+puRq1df6OJ8Sag==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1119,8 +1117,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.10': - resolution: {integrity: sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==} + '@inquirer/core@10.2.0': + resolution: {integrity: sha512-NyDSjPqhSvpZEMZrLCYUquWNl+XC/moEcVFqS55IEYIYsY0a1cUCevSqk7ctOlnm/RaSBU5psFryNlxcmGrjaA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1128,8 +1126,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.10': - resolution: {integrity: sha512-5GVWJ+qeI6BzR6TIInLP9SXhWCEcvgFQYmcRG6d6RIlhFjM5TyG18paTGBgRYyEouvCmzeco47x9zX9tQEofkw==} + '@inquirer/editor@4.2.18': + resolution: {integrity: sha512-yeQN3AXjCm7+Hmq5L6Dm2wEDeBRdAZuyZ4I7tWSSanbxDzqM0KqzoDbKM7p4ebllAYdoQuPJS6N71/3L281i6w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1137,8 +1135,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.12': - resolution: {integrity: sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw==} + '@inquirer/expand@4.0.18': + resolution: {integrity: sha512-xUjteYtavH7HwDMzq4Cn2X4Qsh5NozoDHCJTdoXg9HfZ4w3R6mxV1B9tL7DGJX2eq/zqtsFjhm0/RJIMGlh3ag==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1146,12 +1144,21 @@ packages: '@types/node': optional: true - '@inquirer/figures@1.0.11': - resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} + '@inquirer/external-editor@1.0.1': + resolution: {integrity: sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.13': + resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==} engines: {node: '>=18'} - '@inquirer/input@4.1.9': - resolution: {integrity: sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==} + '@inquirer/input@4.2.2': + resolution: {integrity: sha512-hqOvBZj/MhQCpHUuD3MVq18SSoDNHy7wEnQ8mtvs71K8OPZVXJinOzcvQna33dNYLYE4LkA9BlhAhK6MJcsVbw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1159,8 +1166,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.12': - resolution: {integrity: sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q==} + '@inquirer/number@3.0.18': + resolution: {integrity: sha512-7exgBm52WXZRczsydCVftozFTrrwbG5ySE0GqUd2zLNSBXyIucs2Wnm7ZKLe/aUu6NUg9dg7Q80QIHCdZJiY4A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1168,8 +1175,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.12': - resolution: {integrity: sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g==} + '@inquirer/password@4.0.18': + resolution: {integrity: sha512-zXvzAGxPQTNk/SbT3carAD4Iqi6A2JS2qtcqQjsL22uvD+JfQzUrDEtPjLL7PLn8zlSNyPdY02IiQjzoL9TStA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1177,8 +1184,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.5.0': - resolution: {integrity: sha512-tk8Bx7l5AX/CR0sVfGj3Xg6v7cYlFBkEahH+EgBB+cZib6Fc83dwerTbzj7f2+qKckjIUGsviWRI1d7lx6nqQA==} + '@inquirer/prompts@7.8.4': + resolution: {integrity: sha512-MuxVZ1en1g5oGamXV3DWP89GEkdD54alcfhHd7InUW5BifAdKQEK9SLFa/5hlWbvuhMPlobF0WAx7Okq988Jxg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1186,8 +1193,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.1.0': - resolution: {integrity: sha512-6ob45Oh9pXmfprKqUiEeMz/tjtVTFQTgDDz1xAMKMrIvyrYjAmRbQZjMJfsictlL4phgjLhdLu27IkHNnNjB7g==} + '@inquirer/rawlist@4.1.6': + resolution: {integrity: sha512-KOZqa3QNr3f0pMnufzL7K+nweFFCCBs6LCXZzXDrVGTyssjLeudn5ySktZYv1XiSqobyHRYYK0c6QsOxJEhXKA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1195,8 +1202,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.0.12': - resolution: {integrity: sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ==} + '@inquirer/search@3.1.1': + resolution: {integrity: sha512-TkMUY+A2p2EYVY3GCTItYGvqT6LiLzHBnqsU1rJbrpXUijFfM6zvUx0R4civofVwFCmJZcKqOVwwWAjplKkhxA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1204,8 +1211,8 @@ packages: '@types/node': optional: true - '@inquirer/select@4.2.0': - resolution: {integrity: sha512-KkXQ4aSySWimpV4V/TUJWdB3tdfENZUU765GjOIZ0uPwdbGIG6jrxD4dDf1w68uP+DVtfNhr1A92B+0mbTZ8FA==} + '@inquirer/select@4.3.2': + resolution: {integrity: sha512-nwous24r31M+WyDEHV+qckXkepvihxhnyIaod2MG7eCE6G0Zm/HUF6jgN8GXgf4U7AU6SLseKdanY195cwvU6w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1213,8 +1220,8 @@ packages: '@types/node': optional: true - '@inquirer/type@3.0.6': - resolution: {integrity: sha512-/mKVCtVpyBu3IDarv0G+59KC4stsD5mDsGpYh+GKs1NZT88Jh52+cuoA1AtLk2Q0r/quNl+1cSUyLRHBFeD0XA==} + '@inquirer/type@3.0.8': + resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1226,32 +1233,21 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@jridgewell/trace-mapping@0.3.30': + resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} '@jsep-plugin/assignment@1.3.0': resolution: {integrity: sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==} @@ -1277,8 +1273,8 @@ packages: '@kwsites/promise-deferred@1.1.1': resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} - '@langchain/core@0.3.50': - resolution: {integrity: sha512-0MBVe7dZ4h3a3MJAg/YesWBvwkDg8t2rDIGg2Q11DxRBnxB7OqmvBlbZ1ftaDvoBZzxMY+8E58OsCLuay3Bk9w==} + '@langchain/core@0.3.75': + resolution: {integrity: sha512-kTyBS0DTeD0JYa9YH5lg6UdDbHmvplk3t9PCjP5jDQZCK5kPe2aDFToqdiCaLzZg8RzzM+clXLVyJtPTE8bZ2Q==} engines: {node: '>=18'} '@langchain/openai@0.4.9': @@ -1296,62 +1292,62 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - '@mdx-js/mdx@3.1.0': - resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==} + '@mdx-js/mdx@3.1.1': + resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - '@mdx-js/react@3.1.0': - resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} + '@mdx-js/react@3.1.1': + resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} peerDependencies: '@types/react': '>=16' react: '>=16' - '@mintlify/cli@4.0.682': - resolution: {integrity: sha512-91XL+qCw9hm2KpMgKsNASIfUHYLhYwSmeoMRkE6p5Iy7P5dPAxJd+PUFPXdh4EGhMNALGRLHzm9rUoNvthM89w==} + '@mintlify/cli@4.0.712': + resolution: {integrity: sha512-U7HVzCAcdzHLVqZdtiBx5xMaUEDiyALpUza7V08QU3WrGX8yqIF48oGtWh0Db7B+Kdsl1s54e2jjcCjGh9mJfQ==} engines: {node: '>=18.0.0'} hasBin: true - '@mintlify/common@1.0.496': - resolution: {integrity: sha512-OSYwjfiyfuDAoj03hOD2MNCGU9mz/hxCb/r/VC38xDwiukZe0i7UB4p6ytyyNKW3UrMkNPc33bMvCS0UNu6S8Q==} + '@mintlify/common@1.0.522': + resolution: {integrity: sha512-S6qWhil8ix1w+t6qsMamcg7SvinRefjy+15dvs0g/d2r8ojKI/qwy0p0IpbBI8PbMEznEtsDveOEFrdSe7A2sg==} - '@mintlify/link-rot@3.0.629': - resolution: {integrity: sha512-fFRY1CeJJ5SzcNTWHKSefcilhmUTMDLT0k4ocq6V6668piLhsHcV0lkQl1xZs9VaVpAxUJs76HLC/i2XimfBGQ==} + '@mintlify/link-rot@3.0.659': + resolution: {integrity: sha512-gCsCUE/WBzjIuuRIYBBGOR3dzQQFMxvhPJT55puyvU2iDzqe0CYqnhsu7en3Woh6P9Qae77WC5cSJcHqueXGxQ==} engines: {node: '>=18.0.0'} - '@mintlify/mdx@2.0.3': - resolution: {integrity: sha512-UGlwavma8QooWAlhtXpTAG5MAUZTTUKI8Qu25Wqfp1HMOPrYGvo5YQPmlqqogbMsqDMcFPLP/ZYnaZsGUYBspQ==} + '@mintlify/mdx@2.0.5': + resolution: {integrity: sha512-9WpFDRFqET1ovHWooi+fvWJorvYgEf2BjG65R8tUjqjTWzWqBbNVpumpoAojNqi7i7m0NeZami2oAOxqCyoy4g==} peerDependencies: react: ^18.3.1 react-dom: ^18.3.1 - '@mintlify/models@0.0.219': - resolution: {integrity: sha512-/uR4hAwpcJW9+zbmZL48kKFnWLkOxhIqoGWvZzjg0CniVhR4emtQJAps80WqLAhz0iJgCQxg/axtA7leaznDzQ==} + '@mintlify/models@0.0.225': + resolution: {integrity: sha512-ICo0TWcPJU5tCLHkYqBm+TMnBLG+wmAwGUENh6H62faKecKQqyzIHujqoIzTjBpWDs4aEBwdB2zOWjHkjWHtjg==} engines: {node: '>=18.0.0'} '@mintlify/openapi-parser@0.0.7': resolution: {integrity: sha512-3ecbkzPbsnkKVZJypVL0H5pCTR7a4iLv4cP7zbffzAwy+vpH70JmPxNVpPPP62yLrdZlfNcMxu5xKeT7fllgMg==} engines: {node: '>=18'} - '@mintlify/prebuild@1.0.618': - resolution: {integrity: sha512-onCrK/PnBK2CK+JrbhJHQMh9kAzQrfo/XcnmfNz2ENFQtx4HM1Igkky/Ul6qrAn91wEpojPOtCbBuYTjyl/umw==} + '@mintlify/prebuild@1.0.646': + resolution: {integrity: sha512-dYCKAQXjrlqirtwSpRM4m5nL7dTcsJY1RhANuvDWJc19otgKyEeFpAgAVS/4oakEOaaw/WcggzcaB8JTBwBvGw==} - '@mintlify/previewing@4.0.665': - resolution: {integrity: sha512-dP5t3O1liyimSg8WeGU9ZmKcMpsVT3ic4AiaACcfk4YcrvTCz1HI0Vxf58/uxd5u6lYRKLJzOEsa8jqBFKoaiQ==} + '@mintlify/previewing@4.0.695': + resolution: {integrity: sha512-u1L08SsSTKLvtSPUFBn+pt+jpoxEiF0faIWqtladEne5E2RTzAl+6IQH4tavhOYJ2Rha6WS/TYValyNHybHTaQ==} engines: {node: '>=18.0.0'} - '@mintlify/scraping@4.0.354': - resolution: {integrity: sha512-K9QhhEYvObRncobsqWQFBdon3l/0dUCNWdFC9qL5uH3GK2mH2veVXSE4iEi0tlZAixh2jwdN1Ucj8f+DbhXivA==} + '@mintlify/scraping@4.0.381': + resolution: {integrity: sha512-UomfzWHSaVRrWisIp+VKbprUbJGbITY59RwyiinjhKWQrSTZ0dceZsEpfCG0cGDOKH6wluU1ewKRQtUZvSkyyg==} engines: {node: '>=18.0.0'} hasBin: true - '@mintlify/validation@0.1.442': - resolution: {integrity: sha512-s99u9Kv92nGjUvkdMpi7Mks+B8sG3t30p/8NppS04GngqlE16VDXp8z3qHhWUTJnjJFJZCyraz8zzWaonhWykA==} + '@mintlify/validation@0.1.462': + resolution: {integrity: sha512-4ZicHpaqebfYy4NybuumKjU53H4RNGUkEt+iX+4XB+laAfGthzUaSaL/Hlebz7X+PSPpeW8Z3qvUiROai6zcZA==} - '@modelcontextprotocol/sdk@1.17.2': - resolution: {integrity: sha512-EFLRNXR/ixpXQWu6/3Cu30ndDFIFNaqUXcTqsGebujeMan9FzhAaFFswLRiFj61rgygDRr8WO1N+UijjgRxX9g==} + '@modelcontextprotocol/sdk@1.17.5': + resolution: {integrity: sha512-QakrKIGniGuRVfWBdMsDea/dx1PNE739QJ7gCM41s9q+qaCYTHCdsIBXQVVXry3mfWAiaM9kT22Hyz53Uw8mfg==} engines: {node: '>=18'} - '@next/env@14.2.28': - resolution: {integrity: sha512-PAmWhJfJQlP+kxZwCjrVd9QnR5x0R3u0mTXTiZDgSd4h5LdXmjxCCWbN9kq6hkZBOax8Rm3xDW5HagWyJuT37g==} + '@next/env@14.2.32': + resolution: {integrity: sha512-n9mQdigI6iZ/DF6pCTwMKeWgF2e8lg7qgt5M7HXMLtyhZYMnf/u905M18sSpPmHL9MKp9JHo56C6jrD2EvWxng==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1376,8 +1372,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.52.0': - resolution: {integrity: sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g==} + '@playwright/test@1.55.0': + resolution: {integrity: sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==} engines: {node: '>=18'} hasBin: true @@ -1386,126 +1382,131 @@ packages: engines: {node: '>=18'} hasBin: true - '@rollup/rollup-android-arm-eabi@4.40.1': - resolution: {integrity: sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==} + '@rollup/rollup-android-arm-eabi@4.50.1': + resolution: {integrity: sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.40.1': - resolution: {integrity: sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==} + '@rollup/rollup-android-arm64@4.50.1': + resolution: {integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.40.1': - resolution: {integrity: sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==} + '@rollup/rollup-darwin-arm64@4.50.1': + resolution: {integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.40.1': - resolution: {integrity: sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==} + '@rollup/rollup-darwin-x64@4.50.1': + resolution: {integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.40.1': - resolution: {integrity: sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==} + '@rollup/rollup-freebsd-arm64@4.50.1': + resolution: {integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.40.1': - resolution: {integrity: sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==} + '@rollup/rollup-freebsd-x64@4.50.1': + resolution: {integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.40.1': - resolution: {integrity: sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==} + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': + resolution: {integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.40.1': - resolution: {integrity: sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==} + '@rollup/rollup-linux-arm-musleabihf@4.50.1': + resolution: {integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.40.1': - resolution: {integrity: sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==} + '@rollup/rollup-linux-arm64-gnu@4.50.1': + resolution: {integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.40.1': - resolution: {integrity: sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==} + '@rollup/rollup-linux-arm64-musl@4.50.1': + resolution: {integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.40.1': - resolution: {integrity: sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': + resolution: {integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': - resolution: {integrity: sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==} + '@rollup/rollup-linux-ppc64-gnu@4.50.1': + resolution: {integrity: sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.40.1': - resolution: {integrity: sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==} + '@rollup/rollup-linux-riscv64-gnu@4.50.1': + resolution: {integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.40.1': - resolution: {integrity: sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==} + '@rollup/rollup-linux-riscv64-musl@4.50.1': + resolution: {integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.40.1': - resolution: {integrity: sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==} + '@rollup/rollup-linux-s390x-gnu@4.50.1': + resolution: {integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.40.1': - resolution: {integrity: sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==} + '@rollup/rollup-linux-x64-gnu@4.50.1': + resolution: {integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.40.1': - resolution: {integrity: sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==} + '@rollup/rollup-linux-x64-musl@4.50.1': + resolution: {integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.40.1': - resolution: {integrity: sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==} + '@rollup/rollup-openharmony-arm64@4.50.1': + resolution: {integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.50.1': + resolution: {integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.40.1': - resolution: {integrity: sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==} + '@rollup/rollup-win32-ia32-msvc@4.50.1': + resolution: {integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.40.1': - resolution: {integrity: sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==} + '@rollup/rollup-win32-x64-msvc@4.50.1': + resolution: {integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==} cpu: [x64] os: [win32] - '@shikijs/core@3.11.0': - resolution: {integrity: sha512-oJwU+DxGqp6lUZpvtQgVOXNZcVsirN76tihOLBmwILkKuRuwHteApP8oTXmL4tF5vS5FbOY0+8seXmiCoslk4g==} + '@shikijs/core@3.12.2': + resolution: {integrity: sha512-L1Safnhra3tX/oJK5kYHaWmLEBJi1irASwewzY3taX5ibyXyMkkSDZlq01qigjryOBwrXSdFgTiZ3ryzSNeu7Q==} - '@shikijs/engine-javascript@3.11.0': - resolution: {integrity: sha512-6/ov6pxrSvew13k9ztIOnSBOytXeKs5kfIR7vbhdtVRg+KPzvp2HctYGeWkqv7V6YIoLicnig/QF3iajqyElZA==} + '@shikijs/engine-javascript@3.12.2': + resolution: {integrity: sha512-Nm3/azSsaVS7hk6EwtHEnTythjQfwvrO5tKqMlaH9TwG1P+PNaR8M0EAKZ+GaH2DFwvcr4iSfTveyxMIvXEHMw==} - '@shikijs/engine-oniguruma@3.11.0': - resolution: {integrity: sha512-4DwIjIgETK04VneKbfOE4WNm4Q7WC1wo95wv82PoHKdqX4/9qLRUwrfKlmhf0gAuvT6GHy0uc7t9cailk6Tbhw==} + '@shikijs/engine-oniguruma@3.12.2': + resolution: {integrity: sha512-hozwnFHsLvujK4/CPVHNo3Bcg2EsnG8krI/ZQ2FlBlCRpPZW4XAEQmEwqegJsypsTAN9ehu2tEYe30lYKSZW/w==} - '@shikijs/langs@3.11.0': - resolution: {integrity: sha512-Njg/nFL4HDcf/ObxcK2VeyidIq61EeLmocrwTHGGpOQx0BzrPWM1j55XtKQ1LvvDWH15cjQy7rg96aJ1/l63uw==} + '@shikijs/langs@3.12.2': + resolution: {integrity: sha512-bVx5PfuZHDSHoBal+KzJZGheFuyH4qwwcwG/n+MsWno5cTlKmaNtTsGzJpHYQ8YPbB5BdEdKU1rga5/6JGY8ww==} - '@shikijs/themes@3.11.0': - resolution: {integrity: sha512-BhhWRzCTEk2CtWt4S4bgsOqPJRkapvxdsifAwqP+6mk5uxboAQchc0etiJ0iIasxnMsb764qGD24DK9albcU9Q==} + '@shikijs/themes@3.12.2': + resolution: {integrity: sha512-fTR3QAgnwYpfGczpIbzPjlRnxyONJOerguQv1iwpyQZ9QXX4qy/XFQqXlf17XTsorxnHoJGbH/LXBvwtqDsF5A==} - '@shikijs/transformers@3.11.0': - resolution: {integrity: sha512-fhSpVoq0FoCtKbBpzE3mXcIbr0b7ozFDSSWiVjWrQy+wrOfaFfwxgJqh8kY3Pbv/i+4pcuMIVismLD2MfO62eQ==} + '@shikijs/transformers@3.12.2': + resolution: {integrity: sha512-+z1aMq4N5RoNGY8i7qnTYmG2MBYzFmwkm/yOd6cjEI7OVzcldVvzQCfxU1YbIVgsyB0xHVc2jFe1JhgoXyUoSQ==} - '@shikijs/types@3.11.0': - resolution: {integrity: sha512-RB7IMo2E7NZHyfkqAuaf4CofyY8bPzjWPjJRzn6SEak3b46fIQyG6Vx5fG/obqkfppQ+g8vEsiD7Uc6lqQt32Q==} + '@shikijs/types@3.12.2': + resolution: {integrity: sha512-K5UIBzxCyv0YoxN3LMrKB9zuhp1bV+LgewxuVwHdl4Gz5oePoUFrr9EfgJlGlDeXCU1b/yhdnXeuRvAnz8HN8Q==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -1609,8 +1610,8 @@ packages: '@types/adm-zip@0.5.7': resolution: {integrity: sha512-DNEs/QvmyRLurdQPChqq0Md4zGvPwHerAJYWk9l2jCbD1VPpnzRJorOdiq4zsw09NFbYnhfsoEhWtxIzXpn2yw==} - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} '@types/cheerio@0.22.35': resolution: {integrity: sha512-yD57BchKRvTV+JD53UZ6PD8KWY5g5rvvMLRnZR3EQBCZXiDT/HR+pKpMzFGlWNhFrXlo7VPZXtKvIEwZkAWOIA==} @@ -1618,8 +1619,8 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - '@types/cors@2.8.17': - resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + '@types/cors@2.8.19': + resolution: {integrity: sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==} '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -1633,17 +1634,14 @@ packages: '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} - '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} - '@types/express@4.17.21': - resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/express@4.17.23': + resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -1651,8 +1649,8 @@ packages: '@types/http-cache-semantics@4.0.4': resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1675,35 +1673,35 @@ packages: '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} - '@types/node-fetch@2.6.12': - resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} + '@types/node-fetch@2.6.13': + resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@18.19.87': - resolution: {integrity: sha512-OIAAu6ypnVZHmsHCeJ+7CCSub38QNBS9uceMQeg7K5Ur0Jr+wG9wEOEvvMbhp09pxD5czIUy/jND7s7Tb6Nw7A==} + '@types/node@18.19.124': + resolution: {integrity: sha512-hY4YWZFLs3ku6D2Gqo3RchTd9VRCcrjqp/I0mmohYeUVA5Y8eCXKJEasHxLAJVZRJuQogfd1GiJ9lgogBgKeuQ==} - '@types/node@20.17.32': - resolution: {integrity: sha512-zeMXFn8zQ+UkjK4ws0RiOC9EWByyW1CcVmLe+2rQocXRsGEDxUCwPEIVgpsGcLHS/P8JkT0oa3839BRABS0oPw==} + '@types/node@20.19.13': + resolution: {integrity: sha512-yCAeZl7a0DxgNVteXFHt9+uyFbqXGy/ShC4BlcHkoE0AfGXYv/BUiplV72DjMYXHDBXFjhvr6DD1NiRVfB4j8g==} - '@types/qs@6.9.18': - resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} + '@types/qs@6.14.0': + resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - '@types/react@19.1.3': - resolution: {integrity: sha512-dLWQ+Z0CkIvK1J8+wrDPwGxEYFA4RAyHoZPxHVGspYmFVnwGSNT24cGIhFJrtfRnWVuW8X7NO52gCXmhkVUWGQ==} + '@types/react@19.1.12': + resolution: {integrity: sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==} '@types/retry@0.12.0': resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + '@types/send@0.17.5': + resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + '@types/serve-static@1.15.8': + resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} '@types/unist@2.0.11': resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} @@ -1723,51 +1721,63 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.31.1': - resolution: {integrity: sha512-oUlH4h1ABavI4F0Xnl8/fOtML/eu8nI2A1nYd+f+55XI0BLu+RIqKoCiZKNo6DtqZBEQm5aNKA20G3Z5w3R6GQ==} + '@typescript-eslint/eslint-plugin@8.43.0': + resolution: {integrity: sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + '@typescript-eslint/parser': ^8.43.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.31.1': - resolution: {integrity: sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==} + '@typescript-eslint/parser@8.43.0': + resolution: {integrity: sha512-B7RIQiTsCBBmY+yW4+ILd6mF5h1FUwJsVvpqkrgpszYifetQ2Ke+Z4u6aZh0CblkUGIdR59iYVyXqqZGkZ3aBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.31.1': - resolution: {integrity: sha512-BMNLOElPxrtNQMIsFHE+3P0Yf1z0dJqV9zLdDxN/xLlWMlXK/ApEsVEKzpizg9oal8bAT5Sc7+ocal7AC1HCVw==} + '@typescript-eslint/project-service@8.43.0': + resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.31.1': - resolution: {integrity: sha512-fNaT/m9n0+dpSp8G/iOQ05GoHYXbxw81x+yvr7TArTuZuCA6VVKbqWYVZrV5dVagpDTtj/O8k5HBEE/p/HM5LA==} + '@typescript-eslint/scope-manager@8.43.0': + resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.43.0': + resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.43.0': + resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.31.1': - resolution: {integrity: sha512-SfepaEFUDQYRoA70DD9GtytljBePSj17qPxFHA/h3eg6lPTqGJ5mWOtbXCk1YrVU1cTJRd14nhaXWFu0l2troQ==} + '@typescript-eslint/types@8.43.0': + resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.31.1': - resolution: {integrity: sha512-kaA0ueLe2v7KunYOyWYtlf/QhhZb7+qh4Yw6Ni5kgukMIG+iP773tjgBiLWIXYumWCwEq3nLW+TUywEp8uEeag==} + '@typescript-eslint/typescript-estree@8.43.0': + resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.31.1': - resolution: {integrity: sha512-2DSI4SNfF5T4oRveQ4nUrSjUqjMND0nLq9rEkz0gfGr3tg0S5KB6DhwR+WZPCjzkZl3cH+4x2ce3EsL50FubjQ==} + '@typescript-eslint/utils@8.43.0': + resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.31.1': - resolution: {integrity: sha512-I+/rgqOVBn6f0o7NDTmAPWWC6NuqhV174lfYvAm9fUaWeiefLdux9/YI3/nLugEn9L8fcSi0XmpKi/r5u0nmpw==} + '@typescript-eslint/visitor-keys@8.43.0': + resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -1782,34 +1792,34 @@ packages: '@aws-sdk/credential-provider-web-identity': optional: true - '@vue/compiler-core@3.5.13': - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + '@vue/compiler-core@3.5.21': + resolution: {integrity: sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==} - '@vue/compiler-dom@3.5.13': - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + '@vue/compiler-dom@3.5.21': + resolution: {integrity: sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==} - '@vue/compiler-sfc@3.5.13': - resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} + '@vue/compiler-sfc@3.5.21': + resolution: {integrity: sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==} - '@vue/compiler-ssr@3.5.13': - resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + '@vue/compiler-ssr@3.5.21': + resolution: {integrity: sha512-vKQ5olH5edFZdf5ZrlEgSO1j1DMA4u23TVK5XR1uMhvwnYvVdDF0nHXJUblL/GvzlShQbjhZZ2uvYmDlAbgo9w==} - '@vue/reactivity@3.5.13': - resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + '@vue/reactivity@3.5.21': + resolution: {integrity: sha512-3ah7sa+Cwr9iiYEERt9JfZKPw4A2UlbY8RbbnH2mGCE8NwHkhmlZt2VsH0oDA3P08X3jJd29ohBDtX+TbD9AsA==} - '@vue/runtime-core@3.5.13': - resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + '@vue/runtime-core@3.5.21': + resolution: {integrity: sha512-+DplQlRS4MXfIf9gfD1BOJpk5RSyGgGXD/R+cumhe8jdjUcq/qlxDawQlSI8hCKupBlvM+3eS1se5xW+SuNAwA==} - '@vue/runtime-dom@3.5.13': - resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} + '@vue/runtime-dom@3.5.21': + resolution: {integrity: sha512-3M2DZsOFwM5qI15wrMmNF5RJe1+ARijt2HM3TbzBbPSuBHOQpoidE+Pa+XEaVN+czbHf81ETRoG1ltztP2em8w==} - '@vue/server-renderer@3.5.13': - resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} + '@vue/server-renderer@3.5.21': + resolution: {integrity: sha512-qr8AqgD3DJPJcGvLcJKQo2tAc8OnXRcfxhOJCPF+fcfn5bBGz7VCcO7t+qETOPxpWK1mgysXvVT/j+xWaHeMWA==} peerDependencies: - vue: 3.5.13 + vue: 3.5.21 - '@vue/shared@3.5.13': - resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + '@vue/shared@3.5.21': + resolution: {integrity: sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw==} abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} @@ -1828,11 +1838,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -1846,8 +1851,8 @@ packages: resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} engines: {node: '>=12.0'} - agent-base@7.1.3: - resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} agentkeepalive@4.6.0: @@ -1879,8 +1884,8 @@ packages: zod: optional: true - ai@4.3.12: - resolution: {integrity: sha512-DWjtPI8YJVyvcJx27KW1i6PrwkbjTewflfH+qPtIuoAP0YYs6bH17cAihTt4je+itgazLXK07ZCbV019YkdYjw==} + ai@4.3.19: + resolution: {integrity: sha512-dIE2bfNpqHN3r6IINp9znguYdhIOheKW2LDigAMrgt/upT3B8eBGPSCblENvaZGoq+hxaN9fSMzjWpbqloP+7Q==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -1932,16 +1937,16 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.0.0: - resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + ansi-escapes@7.1.0: + resolution: {integrity: sha512-YdhtCd19sKRKfAAUsrcC1wzm4JuzJoiX4pOJqIoW2qmKj5WzG/dL8uUJ0361zaXtHqK7gEhOwtAtz7t3Yq3X5g==} engines: {node: '>=18'} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@4.3.0: @@ -1952,8 +1957,8 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} any-promise@1.3.0: @@ -1979,8 +1984,8 @@ packages: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} - arktype@2.1.20: - resolution: {integrity: sha512-IZCEEXaJ8g+Ijd59WtSYwtjnqXiwM8sWQ5EjGamcto7+HVN9eK0C4p0zDlCuAwWhpqr6fIBkxPuYDl4/Mcj/+Q==} + arktype@2.1.22: + resolution: {integrity: sha512-xdzl6WcAhrdahvRRnXaNwsipCgHuNoLobRqhiP8RjnfL9Gp947abGlo68GAIyLtxbD+MLzNyH2YR4kEqioMmYQ==} array-buffer-byte-length@1.0.2: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} @@ -2030,19 +2035,24 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - avsc@5.7.7: - resolution: {integrity: sha512-9cYNccliXZDByFsFliVwk5GvTq058Fj513CiR4E60ndDwmuXzTJEp/Bp8FyuRmGyYupLjHLs+JA9/CBoVS4/NQ==} + avsc@5.7.9: + resolution: {integrity: sha512-yOA4wFeI7ET3v32Di/sUybQ+ttP20JHSW3mxLuNGeO0uD6PPcvLrIQXSvy/rhJOWU5JrYh7U4OHplWMmtAtjMg==} engines: {node: '>=0.11'} - axios@1.9.0: - resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} + axios@1.11.0: + resolution: {integrity: sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==} axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - b4a@1.6.7: - resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + b4a@1.7.0: + resolution: {integrity: sha512-KtsH1alSKomfNi/yDAFaD8PPFfi0LxJCEbPuzogcXrMF+yH40Z1ykTDo2vyxuQfN1FLjv0LFM7CadLHEPrVifw==} + peerDependencies: + react-native-b4a: ^0.0.0 + peerDependenciesMeta: + react-native-b4a: + optional: true bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -2050,11 +2060,11 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.5.4: - resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} + bare-events@2.6.1: + resolution: {integrity: sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==} - bare-fs@4.1.4: - resolution: {integrity: sha512-r8+26Voz8dGX3AYpJdFb1ZPaUSM8XOLCZvy+YGpRTmwPHIxA7Z3Jov/oMPtV7hfRQbOnH8qGlLTzQAbgtdNN0Q==} + bare-fs@4.3.3: + resolution: {integrity: sha512-W+ZpiQx1i0dm073So22v3jColDtvyqSTyUYEnooYwKcl+SHuqnQGKyuHdwigQffWJV5ghKtskVH7ydAkBVKQZQ==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -2062,15 +2072,15 @@ packages: bare-buffer: optional: true - bare-os@3.6.1: - resolution: {integrity: sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==} + bare-os@3.6.2: + resolution: {integrity: sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==} engines: {bare: '>=1.14.0'} bare-path@3.0.0: resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} - bare-stream@2.6.5: - resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==} + bare-stream@2.7.0: + resolution: {integrity: sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==} peerDependencies: bare-buffer: '*' bare-events: '*' @@ -2080,6 +2090,9 @@ packages: bare-events: optional: true + bare-url@2.2.2: + resolution: {integrity: sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==} + base-64@0.1.0: resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} @@ -2102,8 +2115,8 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} - bignumber.js@9.3.0: - resolution: {integrity: sha512-EM7aMFTXbptt/wZdMlBv2t8IViwQL+h6SLHosp8Yf0dqJMTnY6iL32opnAB6kAdL0SZPuvcAzFr31o0c/R3/RA==} + bignumber.js@9.3.1: + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} @@ -2123,11 +2136,11 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -2208,8 +2221,8 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} character-entities-html4@2.1.0: @@ -2224,8 +2237,8 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chardet@2.1.0: + resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} @@ -2233,9 +2246,9 @@ packages: cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - cheerio@1.0.0: - resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} - engines: {node: '>=18.17'} + cheerio@1.1.2: + resolution: {integrity: sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==} + engines: {node: '>=20.18.1'} cheminfo-types@1.8.1: resolution: {integrity: sha512-FRcpVkox+cRovffgqNdDFQ1eUav+i/Vq/CUd1hcfEl2bevntFlzznL+jE8g4twl6ElB7gZjCko6pYpXyMn+6dA==} @@ -2357,12 +2370,15 @@ packages: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} - console-table-printer@2.12.1: - resolution: {integrity: sha512-wKGOQRRvdnd89pCeH96e2Fn4wkbenSP6LMHfjfyNLMbGuHEFbMqQNuxXqd0oXG9caIOQ1FTvc5Uijp9/4jujnQ==} + console-table-printer@2.14.6: + resolution: {integrity: sha512-MCBl5HNVaFuuHW6FGbL/4fB7N/ormCy+tQ+sxTrF6QtSbSNETvPuOVbkJBhzDgYhvjWGrTma4eYJa37ZuoQsPw==} content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} @@ -2418,11 +2434,11 @@ packages: crypt@0.0.2: resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} cssesc@3.0.0: @@ -2472,8 +2488,8 @@ packages: supports-color: optional: true - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -2485,8 +2501,8 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - decode-named-character-reference@1.1.0: - resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} + decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} @@ -2598,8 +2614,8 @@ packages: domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - dotenv@16.5.0: - resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} dotenv@8.6.0: @@ -2619,8 +2635,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@10.5.0: + resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2636,11 +2652,11 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - encoding-sniffer@0.2.0: - resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + encoding-sniffer@0.2.1: + resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} engine.io-parser@5.2.3: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} @@ -2658,8 +2674,8 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - entities@6.0.0: - resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} env-paths@2.2.1: @@ -2673,12 +2689,12 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} - es-aggregate-error@1.0.13: - resolution: {integrity: sha512-KkzhUUuD2CUMqEc8JEqsXEMDHzDPE8RCjZeUBitsnB1eNcAJWQPiciKsMXe3Yytj4Flw1XLl46Qcf9OxvZha7A==} + es-aggregate-error@1.0.14: + resolution: {integrity: sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -2720,8 +2736,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.3: - resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==} + esbuild@0.25.9: + resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} engines: {node: '>=18'} hasBin: true @@ -2749,20 +2765,20 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-scope@8.3.0: - resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.25.1: - resolution: {integrity: sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==} + eslint@9.35.0: + resolution: {integrity: sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2774,8 +2790,8 @@ packages: esm-env@1.2.2: resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} esprima@4.0.1: @@ -2787,8 +2803,8 @@ packages: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} - esrap@1.4.9: - resolution: {integrity: sha512-3OMlcd0a03UGuZpPeUC1HxR3nA23l+HEyCiZw3b3FumJIN9KphoGzDJKMXI1S72jVS1dsenDyQC0kJlO1U9E1g==} + esrap@2.1.0: + resolution: {integrity: sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA==} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} @@ -2841,9 +2857,9 @@ packages: resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==} engines: {node: '>=14.18'} - eventsource-parser@3.0.3: - resolution: {integrity: sha512-nVpZkTMM9rF6AQ9gPJpFsNAMt48wIzB5TQgiTLdHiuO8XEDhUgZEhqKlZWXbIzo9VmJ/HvysHqEaVeD5v9TPvA==} - engines: {node: '>=20.0.0'} + eventsource-parser@3.0.6: + resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} + engines: {node: '>=18.0.0'} eventsource@3.0.7: resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} @@ -2873,10 +2889,6 @@ packages: extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - extract-zip@2.0.1: resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} engines: {node: '>= 10.17.0'} @@ -2911,8 +2923,8 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -2927,8 +2939,9 @@ packages: fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - fdir@6.4.4: - resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2965,6 +2978,9 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -2972,8 +2988,8 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -2996,8 +3012,8 @@ packages: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} - form-data@4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} format@0.2.2: @@ -3020,8 +3036,8 @@ packages: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} - fs-extra@11.3.0: - resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + fs-extra@11.3.1: + resolution: {integrity: sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==} engines: {node: '>=14.14'} fs-extra@7.0.1: @@ -3071,8 +3087,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} engines: {node: '>=18'} get-intrinsic@1.3.0: @@ -3095,11 +3111,11 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.10.0: - resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} - get-uri@6.0.4: - resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} + get-uri@6.0.5: + resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} engines: {node: '>= 14'} glob-parent@5.1.2: @@ -3254,11 +3270,11 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - htmlparser2@9.1.0: - resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} @@ -3291,6 +3307,10 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.0: + resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -3298,6 +3318,10 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} @@ -3326,12 +3350,12 @@ packages: ink: '>=4.0.0' react: '>=18.0.0' - ink@5.2.1: - resolution: {integrity: sha512-BqcUyWrG9zq5HIwW6JcfFHsIYebJkWWb4fczNah1goUO0vv5vneIlfwuS85twyJ5hYR/y18FlAYUxrO9ChIWVg==} - engines: {node: '>=18'} + ink@6.3.0: + resolution: {integrity: sha512-2CbJAa7XeziZYe6pDS5RVLirRY28iSGMQuEV8jRU5NQsONQNfcR/BZHHc9vkMg2lGYTHTM2pskxC1YmY28p6bQ==} + engines: {node: '>=20'} peerDependencies: - '@types/react': '>=18.0.0' - react: '>=18.0.0' + '@types/react': '>=19.0.0' + react: '>=19.0.0' react-devtools-core: ^4.19.1 peerDependenciesMeta: '@types/react': @@ -3342,8 +3366,8 @@ packages: inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - inquirer@12.6.0: - resolution: {integrity: sha512-3zmmccQd/8o65nPOZJZ+2wqt76Ghw3+LaMrmc6JE/IzcvQhJ1st+QLCOo/iLS85/tILU0myG31a2TAZX0ysAvg==} + inquirer@12.9.4: + resolution: {integrity: sha512-5bV3LOgLtMAiJq1QpaUddfRrvaX59wiMYppS7z2jNRSQ64acI0yqx7WMxWhgymenSXOyD657g9tlsTjqGYM8sg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3359,8 +3383,8 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} - ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + ip-address@10.0.1: + resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} engines: {node: '>= 12'} ip-regex@4.3.0: @@ -3453,8 +3477,8 @@ packages: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} - is-fullwidth-code-point@5.0.0: - resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} is-generator-function@1.1.0: @@ -3468,9 +3492,9 @@ packages: is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - is-in-ci@1.0.0: - resolution: {integrity: sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==} - engines: {node: '>=18'} + is-in-ci@2.0.0: + resolution: {integrity: sha512-cFeerHriAnhrQSbpAxL37W1wcJKUUX07HyLWZCW1URJT/ra3GyUTzBgUnh24TMVfNTV2Hij2HLxkPHFZfOZy5w==} + engines: {node: '>=20'} hasBin: true is-ip@3.1.0: @@ -3481,6 +3505,10 @@ packages: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + is-number-object@1.1.1: resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} @@ -3579,8 +3607,8 @@ packages: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} engines: {node: '>=0.10.0'} - js-tiktoken@1.0.20: - resolution: {integrity: sha512-Xlaqhhs8VfCd6Sh7a1cFkZHQbYTLCwVJJWiHVxBYzLPxW0XsoxBy1hitmjkdIjD3Aon5BXLHFwU5O8WUx6HH+A==} + js-tiktoken@1.0.21: + resolution: {integrity: sha512-biOj/6M5qdgx5TKjDnFT1ymSpM5tbd3ylwDtrQvFQSu0Z7bBYko2dF+W/aUkXUPuk6IVpRxk/3Q2sHOzGlS36g==} js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3593,9 +3621,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} - jsep@1.4.0: resolution: {integrity: sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==} engines: {node: '>= 10.16.0'} @@ -3632,8 +3657,8 @@ packages: jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jsonpath-plus@10.3.0: resolution: {integrity: sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==} @@ -3647,8 +3672,8 @@ packages: jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - jwa@2.0.0: - resolution: {integrity: sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==} + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} jws@4.0.0: resolution: {integrity: sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==} @@ -3664,11 +3689,20 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - langsmith@0.3.23: - resolution: {integrity: sha512-6gfotO1YS3vqznSJutdFmJXL2Vxy27/RV2JA7YTsfWoJtxlmBR/1QE7kMIyEvuoEE5KGFHyZMuAh/fVeiRffLA==} + langsmith@0.3.67: + resolution: {integrity: sha512-l4y3RmJ9yWF5a29fLg3eWZQxn6Q6dxTOgLGgQHzPGZHF3NUynn+A+airYIe/Yt4rwjGbuVrABAPsXBkVu/Hi7g==} peerDependencies: + '@opentelemetry/api': '*' + '@opentelemetry/exporter-trace-otlp-proto': '*' + '@opentelemetry/sdk-trace-base': '*' openai: '*' peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@opentelemetry/exporter-trace-otlp-proto': + optional: true + '@opentelemetry/sdk-trace-base': + optional: true openai: optional: true @@ -3748,8 +3782,8 @@ packages: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} @@ -4020,8 +4054,8 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} - mintlify@4.2.78: - resolution: {integrity: sha512-g3naXSI7RsmxUNJ87mKzRefKaMdqbAhxfaPaMkApwmeDB0TROwwUO0CS6ZDsbV5Qq3Sm5kH4mEDieEpAE6JG8A==} + mintlify@4.2.108: + resolution: {integrity: sha512-zKOJkC7/g+xApCMd5kAddrOTaB0JQuglk2mKvg5axx2RBo9UY4YAWfKXRcq6xv0d/5oOG5F3aC9p1DARrHCutA==} engines: {node: '>=18.0.0'} hasBin: true @@ -4049,12 +4083,15 @@ packages: ml-matrix@6.12.1: resolution: {integrity: sha512-TJ+8eOFdp+INvzR4zAuwBQJznDUfktMtOB6g/hUcGh3rcyjxbz4Te57Pgri8Q9bhSQ7Zys4IYOGhFdnlgeB6Lw==} - ml-spectra-processing@14.12.0: - resolution: {integrity: sha512-RoJj2r4tGElyPDwBzmoCa+j3rLomBzz+JHGVPxf1tASAE82NkjgvuCFZFay+g0DXTkxDGYFxor+zayqA4nQrng==} + ml-spectra-processing@14.17.1: + resolution: {integrity: sha512-ff2K8Nb91I5fSYcRRiHH0RvUIX1nC4TGg/ctbbyf6R7SUR5MgKF5Kicj+w1HACCK4DQ1HvSc2ZHVE2Z1NDvCRQ==} ml-xsadd@3.0.1: resolution: {integrity: sha512-Fz2q6dwgzGM8wYKGArTUTZDGa4lQFA2Vi6orjGeTVRy22ZnQFKlJuwS9n8NRviqz1KHAHAzdKJwbnYhdo38uYg==} + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -4105,8 +4142,8 @@ packages: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} - next-mdx-remote-client@1.1.1: - resolution: {integrity: sha512-cJnJGaRiHc1gn4aCzDmY9zmcCjEw+zMCpCYIy45Kjs8HzeQpdGcaO5GrgIcX/DFkuCVrrzc69wi2gGnExXbv/A==} + next-mdx-remote-client@1.1.2: + resolution: {integrity: sha512-LZJxBU420dTZsbWOrNYZXkahGJu8lNKxLTrQrZl4JUsKeFtp91yA78dHMTfOcp7UAud3txhM1tayyoKFq4tw7A==} engines: {node: '>=18.18.0'} peerDependencies: react: '>= 18.3.0 < 19.0.0' @@ -4146,8 +4183,8 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - normalize-url@8.0.1: - resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + normalize-url@8.1.0: + resolution: {integrity: sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==} engines: {node: '>=14.16'} nth-check@2.1.1: @@ -4207,12 +4244,8 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} - openai@4.23.0: - resolution: {integrity: sha512-ey2CXh1OTcTUa0AWZWuTpgA9t5GuAG3DVU1MofCRUI7fQJij8XJ3Sr0VtgxoAE69C9wbHBMCux8Z/IQZfSwHiA==} - hasBin: true - - openai@4.96.2: - resolution: {integrity: sha512-R2XnxvMsizkROr7BV3uNp1q/3skwPZ7fmPjO1bXLnfB4Tu5xKxrT1EVwzjhxn0MZKBKAvOaGWS63jTMN6KrIXA==} + openai@4.104.0: + resolution: {integrity: sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==} hasBin: true peerDependencies: ws: ^8.18.0 @@ -4223,20 +4256,20 @@ packages: zod: optional: true + openai@4.23.0: + resolution: {integrity: sha512-ey2CXh1OTcTUa0AWZWuTpgA9t5GuAG3DVU1MofCRUI7fQJij8XJ3Sr0VtgxoAE69C9wbHBMCux8Z/IQZfSwHiA==} + hasBin: true + openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} - openapi3-ts@4.4.0: - resolution: {integrity: sha512-9asTNB9IkKEzWMcHmVZE7Ts3kC9G7AFHfs8i7caD8HbI76gEjdkId4z/AkP83xdZsH7PLAnnbl47qZkXuxpArw==} + openapi3-ts@4.5.0: + resolution: {integrity: sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} @@ -4373,14 +4406,16 @@ packages: path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - path-to-regexp@8.2.0: - resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} - engines: {node: '>=16'} + path-to-regexp@8.3.0: + resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} @@ -4391,8 +4426,8 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} pify@2.3.0: @@ -4406,15 +4441,15 @@ packages: pino-abstract-transport@2.0.0: resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} - pino-pretty@13.0.0: - resolution: {integrity: sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==} + pino-pretty@13.1.1: + resolution: {integrity: sha512-TNNEOg0eA0u+/WuqH0MH0Xui7uqVk9D74ESOpjtebSQYbNWJk/dIxCXIxFsNfeN53JmtWqYHP2OrIZjT/CBEnA==} hasBin: true pino-std-serializers@7.0.0: resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - pino@9.6.0: - resolution: {integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==} + pino@9.9.5: + resolution: {integrity: sha512-d1s98p8/4TfYhsJ09r/Azt30aYELRi6NNnZtEbqFw6BoGsdPVf5lKNK3kUwH8BmJJfpTLNuicjUQjaMbd93dVg==} hasBin: true pirates@4.0.7: @@ -4425,13 +4460,16 @@ packages: resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} engines: {node: '>=16.20.0'} - playwright-core@1.52.0: - resolution: {integrity: sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg==} + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + playwright-core@1.55.0: + resolution: {integrity: sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==} engines: {node: '>=18'} hasBin: true - playwright@1.52.0: - resolution: {integrity: sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw==} + playwright@1.55.0: + resolution: {integrity: sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA==} engines: {node: '>=18'} hasBin: true @@ -4515,23 +4553,23 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.5.3: - resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} engines: {node: '>=14'} hasBin: true process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - process-warning@4.0.1: - resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} + process-warning@5.0.0: + resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} - property-information@7.0.0: - resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} @@ -4548,8 +4586,8 @@ packages: resolution: {integrity: sha512-xaH3pZMni/R2BG7ZXXaWS9Wc9wFlhyDVJF47IJ+3ali0TGv+2PsckKxbmo+rnx3ZxiV2wblVhtdS3bohAP6GGw==} engines: {node: ^14.13.1 || >=16.0.0} - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -4562,7 +4600,7 @@ packages: puppeteer@22.15.0: resolution: {integrity: sha512-XjCY1SiSEi1T7iSYuxS82ft85kwDJUS7wj1Z0eGVXKdtr5g4xnVcbjwxhq5xBnpK/E7x1VZZoJDxpjAOasHT4Q==} engines: {node: '>=18'} - deprecated: < 24.9.0 is no longer supported + deprecated: < 24.10.2 is no longer supported hasBin: true qs@6.13.0: @@ -4573,8 +4611,8 @@ packages: resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} engines: {node: '>=0.6'} - quansync@0.2.10: - resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -4594,27 +4632,23 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} - raw-body@3.0.0: - resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} - engines: {node: '>= 0.8'} + raw-body@3.0.1: + resolution: {integrity: sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==} + engines: {node: '>= 0.10'} react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: react: ^18.3.1 - react-reconciler@0.29.2: - resolution: {integrity: sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==} + react-reconciler@0.32.0: + resolution: {integrity: sha512-2NPMOzgTlG0ZWdIf3qG+dcbLSoAc/uLfOwckc3ofy5sSK0pLJqnQLpUFxvGcN2rlXSjnVtGeeFLNimCQEj5gOQ==} engines: {node: '>=0.10.0'} peerDependencies: - react: ^18.3.1 - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} + react: ^19.1.0 - react@19.1.0: - resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + react@19.1.1: + resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} engines: {node: '>=0.10.0'} read-cache@1.0.0: @@ -4642,8 +4676,10 @@ packages: recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} - recma-jsx@1.0.0: - resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==} + recma-jsx@1.0.1: + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 recma-parse@1.0.0: resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} @@ -4689,11 +4725,13 @@ packages: remark-math@6.0.0: resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} - remark-mdx-remove-esm@1.1.0: - resolution: {integrity: sha512-oN3F9QRuPKSdzZi+wvEodBVjKwya63sl403pWzJvm0+c503iUjCDR+JAnP3Ho/4205IWbQ2NujPQi/B9kU6ZrA==} + remark-mdx-remove-esm@1.2.0: + resolution: {integrity: sha512-BOZDeA9EuHDxQsvX7y4ovdlP8dk2/ToDGjOTrT5gs57OqTZuH4J1Tn8XjUFa221xvfXxiKaWrKT04waQ+tYydg==} + peerDependencies: + unified: ^11 - remark-mdx@3.1.0: - resolution: {integrity: sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==} + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} @@ -4766,8 +4804,8 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup@4.40.1: - resolution: {integrity: sha512-C5VvvgCCyfyotVITIAv+4efVytl5F7wt+/I2i9q9GZcEXW9BP52YYOXC58igUi+LFZVHukErIIqQSWwv/M3WRw==} + rollup@4.50.1: + resolution: {integrity: sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4775,8 +4813,8 @@ packages: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} - run-async@3.0.0: - resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + run-async@4.0.6: + resolution: {integrity: sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==} engines: {node: '>=0.12.0'} run-parallel@1.2.0: @@ -4819,6 +4857,9 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scheduler@0.26.0: + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} @@ -4826,10 +4867,8 @@ packages: secure-json-parse@2.7.0: resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true + secure-json-parse@4.0.0: + resolution: {integrity: sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==} semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} @@ -4889,8 +4928,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@3.11.0: - resolution: {integrity: sha512-VgKumh/ib38I1i3QkMn6mAQA6XjjQubqaAYhfge71glAll0/4xnt8L2oSuC45Qcr/G5Kbskj4RliMQddGmy/Og==} + shiki@3.12.2: + resolution: {integrity: sha512-uIrKI+f9IPz1zDT+GMz+0RjzKJiijVr6WDWm9Pe3NNY6QigKCfifCEv9v9R2mDASKKjzjQ2QpFLcxaR3iHSnMA==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -4919,14 +4958,14 @@ packages: resolution: {integrity: sha512-LH7FpTAkeD+y5xQC4fzS+tFtaNlvt3Ib1zKzvhjv/Y+cioV4zIuw4IZr2yhRLu67CWL7FR9/6KXKnjRoZTvGGQ==} engines: {node: '>=12'} - simple-git@3.27.0: - resolution: {integrity: sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==} + simple-git@3.28.0: + resolution: {integrity: sha512-Rs/vQRwsn1ILH1oBUy8NucJlXmnnLeLCfcvbSehkPzbv3wwoFWIdtfd6Ndo6ZPhlPsCZ60CPI4rxurnwAa+a2w==} simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - simple-wcswidth@1.0.1: - resolution: {integrity: sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==} + simple-wcswidth@1.1.2: + resolution: {integrity: sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw==} slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} @@ -4936,8 +4975,8 @@ packages: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} - slice-ansi@7.1.0: - resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} slugify@1.6.6: @@ -4963,8 +5002,8 @@ packages: resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} - socks@2.8.4: - resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} sonic-boom@4.2.0: @@ -4978,9 +5017,9 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} @@ -5000,9 +5039,6 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - sswr@2.2.0: resolution: {integrity: sha512-clTszLPZkmycALTHD1mXGU+mOtA/MIoLgS1KGTTzFNVm9rytQVykgRaP+z1zl572cz0bTqj4rFVoC2N+IGK4Sg==} peerDependencies: @@ -5016,12 +5052,20 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - streamx@2.22.0: - resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} + streamx@2.22.1: + resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} string-comparison@1.3.0: resolution: {integrity: sha512-46aD+slEwybxAMPRII83ATbgMgTiz5P8mVd7Z6VJsCzSHFjdt1hkAVLeFxPIyEb11tc6ihpJTlIqoO0MCF6NPw==} @@ -5061,8 +5105,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom-string@1.0.0: @@ -5077,11 +5121,15 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - style-to-js@1.1.16: - resolution: {integrity: sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==} + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} + engines: {node: '>=14.16'} + + style-to-js@1.1.17: + resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} - style-to-object@1.0.8: - resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} + style-to-object@1.0.9: + resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} @@ -5096,12 +5144,12 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte@5.28.2: - resolution: {integrity: sha512-FbWBxgWOpQfhKvoGJv/TFwzqb4EhJbwCD17dB0tEpQiw1XyUEKZJtgm4nA4xq3LLsMo7hu5UY/BOFmroAxKTMg==} + svelte@5.38.8: + resolution: {integrity: sha512-UDpTbM/iuZ4MaMnn4ODB3rf5JKDyPOi5oJcopP0j7YHQ9BuJtsAqsR71r2N6AnJf7ygbalTJU5y8eSWGAQZjlQ==} engines: {node: '>=18'} - swr@2.3.3: - resolution: {integrity: sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==} + swr@2.3.6: + resolution: {integrity: sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw==} peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -5118,8 +5166,8 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - tar-fs@3.0.8: - resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==} + tar-fs@3.1.0: + resolution: {integrity: sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==} tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} @@ -5155,8 +5203,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.13: - resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tldts-core@6.1.86: @@ -5166,10 +5214,6 @@ packages: resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} hasBin: true - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -5216,8 +5260,8 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsup@8.4.0: - resolution: {integrity: sha512-b+eZbPCjz10fRryaAA7C8xlIHnf8VnsaRqydheLIqwG/Mcpfk8Z5zp3HayX7GaTygkigHl5cBUs+IhcySiIexQ==} + tsup@8.5.0: + resolution: {integrity: sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -5235,8 +5279,8 @@ packages: typescript: optional: true - tsx@4.19.4: - resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} + tsx@4.20.5: + resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} engines: {node: '>=18.0.0'} hasBin: true @@ -5279,18 +5323,21 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.31.1: - resolution: {integrity: sha512-j6DsEotD/fH39qKzXTQRwYYWlt7D+0HmfpOK+DVhwJOFLcdmn92hq3mBb7HlKJHbjjI/gTOqEcc9d6JfpFf/VA==} + typescript-eslint@8.43.0: + resolution: {integrity: sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + typescript@5.9.2: + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} engines: {node: '>=14.17'} hasBin: true + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -5301,12 +5348,12 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@6.21.2: - resolution: {integrity: sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==} - engines: {node: '>=18.17'} + undici@7.16.0: + resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} + engines: {node: '>=20.18.1'} unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -5420,14 +5467,14 @@ packages: vfile-matter@5.0.1: resolution: {integrity: sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==} - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vue@3.5.13: - resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} + vue@3.5.21: + resolution: {integrity: sha512-xxf9rum9KtOdwdRkiApWL+9hZEMWE90FHh8yS1+KJAiWYh+iGWV1FquPjoO9VUHQ+VIhsCXNNyZ5Sf4++RVZBA==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -5506,8 +5553,8 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrap-ansi@9.0.0: - resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} wrappy@1.0.2: @@ -5525,8 +5572,8 @@ packages: utf-8-validate: optional: true - ws@8.18.1: - resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -5556,9 +5603,9 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.7.1: - resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} - engines: {node: '>= 14'} + yaml@2.8.1: + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + engines: {node: '>= 14.6'} hasBin: true yargs-parser@21.1.1: @@ -5576,18 +5623,18 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yoctocolors-cjs@2.1.2: - resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} yoga-layout@3.2.1: resolution: {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==} - zimmerframe@1.1.2: - resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} + zimmerframe@1.1.4: + resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} - zod-to-json-schema@3.24.5: - resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} + zod-to-json-schema@3.24.6: + resolution: {integrity: sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==} peerDependencies: zod: ^3.24.1 @@ -5605,76 +5652,76 @@ packages: snapshots: - '@ai-sdk/anthropic@1.2.10(zod@3.25.67)': + '@ai-sdk/anthropic@1.2.12(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 optional: true - '@ai-sdk/azure@1.3.22(zod@3.25.67)': + '@ai-sdk/azure@1.3.25(zod@3.25.67)': dependencies: - '@ai-sdk/openai': 1.3.21(zod@3.25.67) + '@ai-sdk/openai': 1.3.24(zod@3.25.67) '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 optional: true - '@ai-sdk/cerebras@0.2.13(zod@3.25.67)': + '@ai-sdk/cerebras@0.2.16(zod@3.25.67)': dependencies: - '@ai-sdk/openai-compatible': 0.2.13(zod@3.25.67) + '@ai-sdk/openai-compatible': 0.2.16(zod@3.25.67) '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 optional: true - '@ai-sdk/deepseek@0.2.13(zod@3.25.67)': + '@ai-sdk/deepseek@0.2.16(zod@3.25.67)': dependencies: - '@ai-sdk/openai-compatible': 0.2.13(zod@3.25.67) + '@ai-sdk/openai-compatible': 0.2.16(zod@3.25.67) '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 optional: true - '@ai-sdk/google@1.2.14(zod@3.25.67)': + '@ai-sdk/google@1.2.22(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 optional: true - '@ai-sdk/groq@1.2.8(zod@3.25.67)': + '@ai-sdk/groq@1.2.9(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 optional: true - '@ai-sdk/mistral@1.2.7(zod@3.25.67)': + '@ai-sdk/mistral@1.2.8(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 optional: true - '@ai-sdk/openai-compatible@0.2.13(zod@3.25.67)': + '@ai-sdk/openai-compatible@0.2.16(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 optional: true - '@ai-sdk/openai@1.3.21(zod@3.25.67)': + '@ai-sdk/openai@1.3.24(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 optional: true - '@ai-sdk/perplexity@1.1.8(zod@3.25.67)': + '@ai-sdk/perplexity@1.1.9(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 optional: true @@ -5687,7 +5734,7 @@ snapshots: optionalDependencies: zod: 3.25.67 - '@ai-sdk/provider-utils@2.2.7(zod@3.25.67)': + '@ai-sdk/provider-utils@2.2.8(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 nanoid: 3.3.11 @@ -5706,22 +5753,22 @@ snapshots: dependencies: json-schema: 0.4.0 - '@ai-sdk/react@0.0.70(react@19.1.0)(zod@3.25.67)': + '@ai-sdk/react@0.0.70(react@19.1.1)(zod@3.25.67)': dependencies: '@ai-sdk/provider-utils': 1.0.22(zod@3.25.67) '@ai-sdk/ui-utils': 0.0.50(zod@3.25.67) - swr: 2.3.3(react@19.1.0) + swr: 2.3.6(react@19.1.1) throttleit: 2.1.0 optionalDependencies: - react: 19.1.0 + react: 19.1.1 zod: 3.25.67 - '@ai-sdk/react@1.2.10(react@19.1.0)(zod@3.25.67)': + '@ai-sdk/react@1.2.12(react@19.1.1)(zod@3.25.67)': dependencies: - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) - '@ai-sdk/ui-utils': 1.2.9(zod@3.25.67) - react: 19.1.0 - swr: 2.3.3(react@19.1.0) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) + '@ai-sdk/ui-utils': 1.2.11(zod@3.25.67) + react: 19.1.1 + swr: 2.3.6(react@19.1.1) throttleit: 2.1.0 optionalDependencies: zod: 3.25.67 @@ -5733,21 +5780,21 @@ snapshots: transitivePeerDependencies: - zod - '@ai-sdk/svelte@0.0.57(svelte@5.28.2)(zod@3.25.67)': + '@ai-sdk/svelte@0.0.57(svelte@5.38.8)(zod@3.25.67)': dependencies: '@ai-sdk/provider-utils': 1.0.22(zod@3.25.67) '@ai-sdk/ui-utils': 0.0.50(zod@3.25.67) - sswr: 2.2.0(svelte@5.28.2) + sswr: 2.2.0(svelte@5.38.8) optionalDependencies: - svelte: 5.28.2 + svelte: 5.38.8 transitivePeerDependencies: - zod - '@ai-sdk/togetherai@0.2.13(zod@3.25.67)': + '@ai-sdk/togetherai@0.2.16(zod@3.25.67)': dependencies: - '@ai-sdk/openai-compatible': 0.2.13(zod@3.25.67) + '@ai-sdk/openai-compatible': 0.2.16(zod@3.25.67) '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 optional: true @@ -5757,51 +5804,46 @@ snapshots: '@ai-sdk/provider-utils': 1.0.22(zod@3.25.67) json-schema: 0.4.0 secure-json-parse: 2.7.0 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod-to-json-schema: 3.24.6(zod@3.25.67) optionalDependencies: zod: 3.25.67 - '@ai-sdk/ui-utils@1.2.9(zod@3.25.67)': + '@ai-sdk/ui-utils@1.2.11(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod-to-json-schema: 3.24.6(zod@3.25.67) - '@ai-sdk/vue@0.0.59(vue@3.5.13(typescript@5.8.3))(zod@3.25.67)': + '@ai-sdk/vue@0.0.59(vue@3.5.21(typescript@5.9.2))(zod@3.25.67)': dependencies: '@ai-sdk/provider-utils': 1.0.22(zod@3.25.67) '@ai-sdk/ui-utils': 0.0.50(zod@3.25.67) - swrv: 1.1.0(vue@3.5.13(typescript@5.8.3)) + swrv: 1.1.0(vue@3.5.21(typescript@5.9.2)) optionalDependencies: - vue: 3.5.13(typescript@5.8.3) + vue: 3.5.21(typescript@5.9.2) transitivePeerDependencies: - zod - '@ai-sdk/xai@1.2.15(zod@3.25.67)': + '@ai-sdk/xai@1.2.18(zod@3.25.67)': dependencies: - '@ai-sdk/openai-compatible': 0.2.13(zod@3.25.67) + '@ai-sdk/openai-compatible': 0.2.16(zod@3.25.67) '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 optional: true - '@alcalzone/ansi-tokenize@0.1.3': + '@alcalzone/ansi-tokenize@0.2.0': dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 '@alloc/quick-lru@5.2.0': {} - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 - '@anthropic-ai/sdk@0.39.0': dependencies: - '@types/node': 18.19.87 - '@types/node-fetch': 2.6.12 + '@types/node': 18.19.124 + '@types/node-fetch': 2.6.13 abort-controller: 3.0.0 agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 @@ -5810,20 +5852,20 @@ snapshots: transitivePeerDependencies: - encoding - '@ark/schema@0.46.0': + '@ark/schema@0.49.0': dependencies: - '@ark/util': 0.46.0 + '@ark/util': 0.49.0 - '@ark/util@0.46.0': {} + '@ark/util@0.49.0': {} '@asteasolutions/zod-to-openapi@6.4.0(zod@3.25.67)': dependencies: - openapi3-ts: 4.4.0 + openapi3-ts: 4.5.0 zod: 3.25.67 '@asyncapi/parser@3.4.0': dependencies: - '@asyncapi/specs': 6.8.1 + '@asyncapi/specs': 6.10.0 '@openapi-contrib/openapi-schema-to-json-schema': 3.2.0 '@stoplight/json': 3.21.0 '@stoplight/json-ref-readers': 1.2.2 @@ -5838,14 +5880,14 @@ snapshots: ajv: 8.17.1 ajv-errors: 3.0.0(ajv@8.17.1) ajv-formats: 2.1.1(ajv@8.17.1) - avsc: 5.7.7 + avsc: 5.7.9 js-yaml: 4.1.0 jsonpath-plus: 10.3.0 node-fetch: 2.6.7 transitivePeerDependencies: - encoding - '@asyncapi/specs@6.8.1': + '@asyncapi/specs@6.10.0': dependencies: '@types/json-schema': 7.0.15 @@ -5859,13 +5901,13 @@ snapshots: '@babel/helper-validator-identifier@7.27.1': {} - '@babel/parser@7.28.0': + '@babel/parser@7.28.4': dependencies: - '@babel/types': 7.28.2 + '@babel/types': 7.28.4 - '@babel/runtime@7.27.1': {} + '@babel/runtime@7.28.4': {} - '@babel/types@7.28.2': + '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -5882,10 +5924,10 @@ snapshots: uuid: 9.0.1 zod: 3.25.67 - '@browserbasehq/sdk@2.5.0': + '@browserbasehq/sdk@2.6.0': dependencies: - '@types/node': 18.19.87 - '@types/node-fetch': 2.6.12 + '@types/node': 18.19.124 + '@types/node-fetch': 2.6.13 abort-controller: 3.0.0 agentkeepalive: 4.6.0 form-data-encoder: 1.7.2 @@ -5896,7 +5938,7 @@ snapshots: '@cfworker/json-schema@4.1.1': {} - '@changesets/apply-release-plan@7.0.12': + '@changesets/apply-release-plan@7.0.13': dependencies: '@changesets/config': 3.1.1 '@changesets/get-version-range-type': 0.4.0 @@ -5910,16 +5952,16 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 - '@changesets/assemble-release-plan@6.0.6': + '@changesets/assemble-release-plan@6.0.9': dependencies: '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.3 '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 - semver: 7.7.1 + semver: 7.7.2 '@changesets/changelog-git@0.2.1': dependencies: @@ -5933,15 +5975,15 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/cli@2.29.2': + '@changesets/cli@2.29.7(@types/node@20.19.13)': dependencies: - '@changesets/apply-release-plan': 7.0.12 - '@changesets/assemble-release-plan': 6.0.6 + '@changesets/apply-release-plan': 7.0.13 + '@changesets/assemble-release-plan': 6.0.9 '@changesets/changelog-git': 0.2.1 '@changesets/config': 3.1.1 '@changesets/errors': 0.2.0 '@changesets/get-dependents-graph': 2.1.3 - '@changesets/get-release-plan': 4.0.10 + '@changesets/get-release-plan': 4.0.13 '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 '@changesets/pre': 2.0.2 @@ -5949,20 +5991,22 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.1(@types/node@20.19.13) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 enquirer: 2.4.1 - external-editor: 3.1.0 fs-extra: 7.0.1 mri: 1.2.0 p-limit: 2.3.0 package-manager-detector: 0.2.11 picocolors: 1.1.1 resolve-from: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 spawndamnit: 3.0.1 term-size: 2.2.1 + transitivePeerDependencies: + - '@types/node' '@changesets/config@3.1.1': dependencies: @@ -5983,7 +6027,7 @@ snapshots: '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 - semver: 7.7.1 + semver: 7.7.2 '@changesets/get-github-info@0.6.0': dependencies: @@ -5992,9 +6036,9 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/get-release-plan@4.0.10': + '@changesets/get-release-plan@4.0.13': dependencies: - '@changesets/assemble-release-plan': 6.0.6 + '@changesets/assemble-release-plan': 6.0.9 '@changesets/config': 3.1.1 '@changesets/pre': 2.0.2 '@changesets/read': 0.6.5 @@ -6053,7 +6097,7 @@ snapshots: human-id: 4.1.1 prettier: 2.8.8 - '@emnapi/runtime@1.4.3': + '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 optional: true @@ -6061,7 +6105,7 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.25.3': + '@esbuild/aix-ppc64@0.25.9': optional: true '@esbuild/android-arm64@0.18.20': @@ -6070,7 +6114,7 @@ snapshots: '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.25.3': + '@esbuild/android-arm64@0.25.9': optional: true '@esbuild/android-arm@0.18.20': @@ -6079,7 +6123,7 @@ snapshots: '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.25.3': + '@esbuild/android-arm@0.25.9': optional: true '@esbuild/android-x64@0.18.20': @@ -6088,7 +6132,7 @@ snapshots: '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.25.3': + '@esbuild/android-x64@0.25.9': optional: true '@esbuild/darwin-arm64@0.18.20': @@ -6097,7 +6141,7 @@ snapshots: '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.25.3': + '@esbuild/darwin-arm64@0.25.9': optional: true '@esbuild/darwin-x64@0.18.20': @@ -6106,7 +6150,7 @@ snapshots: '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.25.3': + '@esbuild/darwin-x64@0.25.9': optional: true '@esbuild/freebsd-arm64@0.18.20': @@ -6115,7 +6159,7 @@ snapshots: '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.25.3': + '@esbuild/freebsd-arm64@0.25.9': optional: true '@esbuild/freebsd-x64@0.18.20': @@ -6124,7 +6168,7 @@ snapshots: '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.25.3': + '@esbuild/freebsd-x64@0.25.9': optional: true '@esbuild/linux-arm64@0.18.20': @@ -6133,7 +6177,7 @@ snapshots: '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.25.3': + '@esbuild/linux-arm64@0.25.9': optional: true '@esbuild/linux-arm@0.18.20': @@ -6142,7 +6186,7 @@ snapshots: '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.25.3': + '@esbuild/linux-arm@0.25.9': optional: true '@esbuild/linux-ia32@0.18.20': @@ -6151,7 +6195,7 @@ snapshots: '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.25.3': + '@esbuild/linux-ia32@0.25.9': optional: true '@esbuild/linux-loong64@0.18.20': @@ -6160,7 +6204,7 @@ snapshots: '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.25.3': + '@esbuild/linux-loong64@0.25.9': optional: true '@esbuild/linux-mips64el@0.18.20': @@ -6169,7 +6213,7 @@ snapshots: '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.25.3': + '@esbuild/linux-mips64el@0.25.9': optional: true '@esbuild/linux-ppc64@0.18.20': @@ -6178,7 +6222,7 @@ snapshots: '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.25.3': + '@esbuild/linux-ppc64@0.25.9': optional: true '@esbuild/linux-riscv64@0.18.20': @@ -6187,7 +6231,7 @@ snapshots: '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.25.3': + '@esbuild/linux-riscv64@0.25.9': optional: true '@esbuild/linux-s390x@0.18.20': @@ -6196,7 +6240,7 @@ snapshots: '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.25.3': + '@esbuild/linux-s390x@0.25.9': optional: true '@esbuild/linux-x64@0.18.20': @@ -6205,10 +6249,10 @@ snapshots: '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.25.3': + '@esbuild/linux-x64@0.25.9': optional: true - '@esbuild/netbsd-arm64@0.25.3': + '@esbuild/netbsd-arm64@0.25.9': optional: true '@esbuild/netbsd-x64@0.18.20': @@ -6217,10 +6261,10 @@ snapshots: '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.25.3': + '@esbuild/netbsd-x64@0.25.9': optional: true - '@esbuild/openbsd-arm64@0.25.3': + '@esbuild/openbsd-arm64@0.25.9': optional: true '@esbuild/openbsd-x64@0.18.20': @@ -6229,7 +6273,10 @@ snapshots: '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.25.3': + '@esbuild/openbsd-x64@0.25.9': + optional: true + + '@esbuild/openharmony-arm64@0.25.9': optional: true '@esbuild/sunos-x64@0.18.20': @@ -6238,7 +6285,7 @@ snapshots: '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.25.3': + '@esbuild/sunos-x64@0.25.9': optional: true '@esbuild/win32-arm64@0.18.20': @@ -6247,7 +6294,7 @@ snapshots: '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.25.3': + '@esbuild/win32-arm64@0.25.9': optional: true '@esbuild/win32-ia32@0.18.20': @@ -6256,7 +6303,7 @@ snapshots: '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.25.3': + '@esbuild/win32-ia32@0.25.9': optional: true '@esbuild/win32-x64@0.18.20': @@ -6265,35 +6312,35 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.25.3': + '@esbuild/win32-x64@0.25.9': optional: true - '@eslint-community/eslint-utils@4.6.1(eslint@9.25.1(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.35.0(jiti@1.21.7))': dependencies: - eslint: 9.25.1(jiti@1.21.7) + eslint: 9.35.0(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.20.0': + '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.0 + debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.2.1': {} + '@eslint/config-helpers@0.3.1': {} - '@eslint/core@0.13.0': + '@eslint/core@0.15.2': dependencies: '@types/json-schema': 7.0.15 '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 + debug: 4.4.1 + espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 @@ -6303,19 +6350,19 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.25.1': {} + '@eslint/js@9.35.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.2.8': + '@eslint/plugin-kit@0.3.5': dependencies: - '@eslint/core': 0.13.0 + '@eslint/core': 0.15.2 levn: 0.4.1 '@google/genai@0.8.0': dependencies: google-auth-library: 9.15.1 - ws: 8.18.1 + ws: 8.18.3 transitivePeerDependencies: - bufferutil - encoding @@ -6324,16 +6371,14 @@ snapshots: '@humanfs/core@0.19.1': {} - '@humanfs/node@0.16.6': + '@humanfs/node@0.16.7': dependencies: '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.3 '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.2': {} + '@humanwhocodes/retry@0.4.3': {} '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: @@ -6401,7 +6446,7 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.4.3 + '@emnapi/runtime': 1.5.0 optional: true '@img/sharp-win32-ia32@0.33.5': @@ -6410,159 +6455,156 @@ snapshots: '@img/sharp-win32-x64@0.33.5': optional: true - '@inquirer/checkbox@4.1.5(@types/node@20.17.32)': + '@inquirer/checkbox@4.2.2(@types/node@20.19.13)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.32) - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@20.17.32) + '@inquirer/core': 10.2.0(@types/node@20.19.13) + '@inquirer/figures': 1.0.13 + '@inquirer/type': 3.0.8(@types/node@20.19.13) ansi-escapes: 4.3.2 - yoctocolors-cjs: 2.1.2 + yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@inquirer/confirm@5.1.9(@types/node@20.17.32)': + '@inquirer/confirm@5.1.16(@types/node@20.19.13)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.32) - '@inquirer/type': 3.0.6(@types/node@20.17.32) + '@inquirer/core': 10.2.0(@types/node@20.19.13) + '@inquirer/type': 3.0.8(@types/node@20.19.13) optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@inquirer/core@10.1.10(@types/node@20.17.32)': + '@inquirer/core@10.2.0(@types/node@20.19.13)': dependencies: - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@20.17.32) + '@inquirer/figures': 1.0.13 + '@inquirer/type': 3.0.8(@types/node@20.19.13) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 + yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@inquirer/editor@4.2.10(@types/node@20.17.32)': + '@inquirer/editor@4.2.18(@types/node@20.19.13)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.32) - '@inquirer/type': 3.0.6(@types/node@20.17.32) - external-editor: 3.1.0 + '@inquirer/core': 10.2.0(@types/node@20.19.13) + '@inquirer/external-editor': 1.0.1(@types/node@20.19.13) + '@inquirer/type': 3.0.8(@types/node@20.19.13) optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@inquirer/expand@4.0.12(@types/node@20.17.32)': + '@inquirer/expand@4.0.18(@types/node@20.19.13)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.32) - '@inquirer/type': 3.0.6(@types/node@20.17.32) - yoctocolors-cjs: 2.1.2 + '@inquirer/core': 10.2.0(@types/node@20.19.13) + '@inquirer/type': 3.0.8(@types/node@20.19.13) + yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@inquirer/figures@1.0.11': {} + '@inquirer/external-editor@1.0.1(@types/node@20.19.13)': + dependencies: + chardet: 2.1.0 + iconv-lite: 0.6.3 + optionalDependencies: + '@types/node': 20.19.13 + + '@inquirer/figures@1.0.13': {} - '@inquirer/input@4.1.9(@types/node@20.17.32)': + '@inquirer/input@4.2.2(@types/node@20.19.13)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.32) - '@inquirer/type': 3.0.6(@types/node@20.17.32) + '@inquirer/core': 10.2.0(@types/node@20.19.13) + '@inquirer/type': 3.0.8(@types/node@20.19.13) optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@inquirer/number@3.0.12(@types/node@20.17.32)': + '@inquirer/number@3.0.18(@types/node@20.19.13)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.32) - '@inquirer/type': 3.0.6(@types/node@20.17.32) + '@inquirer/core': 10.2.0(@types/node@20.19.13) + '@inquirer/type': 3.0.8(@types/node@20.19.13) optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@inquirer/password@4.0.12(@types/node@20.17.32)': + '@inquirer/password@4.0.18(@types/node@20.19.13)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.32) - '@inquirer/type': 3.0.6(@types/node@20.17.32) + '@inquirer/core': 10.2.0(@types/node@20.19.13) + '@inquirer/type': 3.0.8(@types/node@20.19.13) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 20.17.32 - - '@inquirer/prompts@7.5.0(@types/node@20.17.32)': - dependencies: - '@inquirer/checkbox': 4.1.5(@types/node@20.17.32) - '@inquirer/confirm': 5.1.9(@types/node@20.17.32) - '@inquirer/editor': 4.2.10(@types/node@20.17.32) - '@inquirer/expand': 4.0.12(@types/node@20.17.32) - '@inquirer/input': 4.1.9(@types/node@20.17.32) - '@inquirer/number': 3.0.12(@types/node@20.17.32) - '@inquirer/password': 4.0.12(@types/node@20.17.32) - '@inquirer/rawlist': 4.1.0(@types/node@20.17.32) - '@inquirer/search': 3.0.12(@types/node@20.17.32) - '@inquirer/select': 4.2.0(@types/node@20.17.32) + '@types/node': 20.19.13 + + '@inquirer/prompts@7.8.4(@types/node@20.19.13)': + dependencies: + '@inquirer/checkbox': 4.2.2(@types/node@20.19.13) + '@inquirer/confirm': 5.1.16(@types/node@20.19.13) + '@inquirer/editor': 4.2.18(@types/node@20.19.13) + '@inquirer/expand': 4.0.18(@types/node@20.19.13) + '@inquirer/input': 4.2.2(@types/node@20.19.13) + '@inquirer/number': 3.0.18(@types/node@20.19.13) + '@inquirer/password': 4.0.18(@types/node@20.19.13) + '@inquirer/rawlist': 4.1.6(@types/node@20.19.13) + '@inquirer/search': 3.1.1(@types/node@20.19.13) + '@inquirer/select': 4.3.2(@types/node@20.19.13) optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@inquirer/rawlist@4.1.0(@types/node@20.17.32)': + '@inquirer/rawlist@4.1.6(@types/node@20.19.13)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.32) - '@inquirer/type': 3.0.6(@types/node@20.17.32) - yoctocolors-cjs: 2.1.2 + '@inquirer/core': 10.2.0(@types/node@20.19.13) + '@inquirer/type': 3.0.8(@types/node@20.19.13) + yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@inquirer/search@3.0.12(@types/node@20.17.32)': + '@inquirer/search@3.1.1(@types/node@20.19.13)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.32) - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@20.17.32) - yoctocolors-cjs: 2.1.2 + '@inquirer/core': 10.2.0(@types/node@20.19.13) + '@inquirer/figures': 1.0.13 + '@inquirer/type': 3.0.8(@types/node@20.19.13) + yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@inquirer/select@4.2.0(@types/node@20.17.32)': + '@inquirer/select@4.3.2(@types/node@20.19.13)': dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.32) - '@inquirer/figures': 1.0.11 - '@inquirer/type': 3.0.6(@types/node@20.17.32) + '@inquirer/core': 10.2.0(@types/node@20.19.13) + '@inquirer/figures': 1.0.13 + '@inquirer/type': 3.0.8(@types/node@20.19.13) ansi-escapes: 4.3.2 - yoctocolors-cjs: 2.1.2 + yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@inquirer/type@3.0.6(@types/node@20.17.32)': + '@inquirer/type@3.0.8(@types/node@20.19.13)': optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@jridgewell/gen-mapping@0.3.12': + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.30 - '@jridgewell/gen-mapping@0.3.8': + '@jridgewell/remapping@2.3.5': dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.30 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/sourcemap-codec@1.5.4': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@jridgewell/trace-mapping@0.3.29': + '@jridgewell/trace-mapping@0.3.30': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 '@jsep-plugin/assignment@1.3.0(jsep@1.4.0)': dependencies: @@ -6578,36 +6620,39 @@ snapshots: '@kwsites/file-exists@1.1.1': dependencies: - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color '@kwsites/promise-deferred@1.1.1': {} - '@langchain/core@0.3.50(openai@4.96.2(ws@8.18.1)(zod@3.25.67))': + '@langchain/core@0.3.75(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67))': dependencies: '@cfworker/json-schema': 4.1.1 ansi-styles: 5.2.0 camelcase: 6.3.0 decamelize: 1.2.0 - js-tiktoken: 1.0.20 - langsmith: 0.3.23(openai@4.96.2(ws@8.18.1)(zod@3.25.67)) + js-tiktoken: 1.0.21 + langsmith: 0.3.67(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67)) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 uuid: 10.0.0 zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod-to-json-schema: 3.24.6(zod@3.25.67) transitivePeerDependencies: + - '@opentelemetry/api' + - '@opentelemetry/exporter-trace-otlp-proto' + - '@opentelemetry/sdk-trace-base' - openai - '@langchain/openai@0.4.9(@langchain/core@0.3.50(openai@4.96.2(ws@8.18.1)(zod@3.25.67)))(ws@8.18.1)': + '@langchain/openai@0.4.9(@langchain/core@0.3.75(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67)))(ws@8.18.3)': dependencies: - '@langchain/core': 0.3.50(openai@4.96.2(ws@8.18.1)(zod@3.25.67)) - js-tiktoken: 1.0.20 - openai: 4.96.2(ws@8.18.1)(zod@3.25.67) + '@langchain/core': 0.3.75(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67)) + js-tiktoken: 1.0.21 + openai: 4.104.0(ws@8.18.3)(zod@3.25.67) zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod-to-json-schema: 3.24.6(zod@3.25.67) transitivePeerDependencies: - encoding - ws @@ -6616,26 +6661,27 @@ snapshots: '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.28.4 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.27.1 + '@babel/runtime': 7.28.4 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 globby: 11.1.0 read-yaml-file: 1.1.0 - '@mdx-js/mdx@3.1.0(acorn@8.15.0)': + '@mdx-js/mdx@3.1.1': dependencies: '@types/estree': 1.0.8 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 + acorn: 8.15.0 collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 @@ -6644,44 +6690,43 @@ snapshots: hast-util-to-jsx-runtime: 2.3.6 markdown-extensions: 2.0.0 recma-build-jsx: 1.0.0 - recma-jsx: 1.0.0(acorn@8.15.0) + recma-jsx: 1.0.1(acorn@8.15.0) recma-stringify: 1.0.0 rehype-recma: 1.0.0 - remark-mdx: 3.1.0 + remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-rehype: 11.1.2 - source-map: 0.7.4 + source-map: 0.7.6 unified: 11.0.5 unist-util-position-from-estree: 2.0.0 unist-util-stringify-position: 4.0.0 unist-util-visit: 5.0.0 vfile: 6.0.3 transitivePeerDependencies: - - acorn - supports-color - '@mdx-js/react@3.1.0(@types/react@19.1.3)(react@18.3.1)': + '@mdx-js/react@3.1.1(@types/react@19.1.12)(react@19.1.1)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 19.1.3 - react: 18.3.1 - - '@mintlify/cli@4.0.682(@types/node@20.17.32)(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(typescript@5.8.3)': - dependencies: - '@mintlify/common': 1.0.496(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mintlify/link-rot': 3.0.629(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3) - '@mintlify/models': 0.0.219 - '@mintlify/prebuild': 1.0.618(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3) - '@mintlify/previewing': 4.0.665(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(typescript@5.8.3) - '@mintlify/validation': 0.1.442 - chalk: 5.4.1 + '@types/react': 19.1.12 + react: 19.1.1 + + '@mintlify/cli@4.0.712(@types/node@20.19.13)(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(typescript@5.9.2)': + dependencies: + '@mintlify/common': 1.0.522(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1) + '@mintlify/link-rot': 3.0.659(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) + '@mintlify/models': 0.0.225 + '@mintlify/prebuild': 1.0.646(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) + '@mintlify/previewing': 4.0.695(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(typescript@5.9.2) + '@mintlify/validation': 0.1.462 + chalk: 5.6.2 detect-port: 1.6.1 - fs-extra: 11.3.0 + fs-extra: 11.3.1 gray-matter: 4.0.3 - ink: 5.2.1(@types/react@19.1.3)(react@18.3.1) - inquirer: 12.6.0(@types/node@20.17.32) + ink: 6.3.0(@types/react@19.1.12)(react@19.1.1) + inquirer: 12.9.4(@types/node@20.19.13) js-yaml: 4.1.0 - react: 18.3.1 + react: 19.1.1 semver: 7.7.2 yargs: 17.7.2 transitivePeerDependencies: @@ -6693,18 +6738,19 @@ snapshots: - encoding - react-devtools-core - react-dom + - react-native-b4a - supports-color - ts-node - typescript - utf-8-validate - '@mintlify/common@1.0.496(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mintlify/common@1.0.522(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)': dependencies: '@asyncapi/parser': 3.4.0 - '@mintlify/mdx': 2.0.3(@types/react@19.1.3)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mintlify/models': 0.0.219 + '@mintlify/mdx': 2.0.5(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1) + '@mintlify/models': 0.0.225 '@mintlify/openapi-parser': 0.0.7 - '@mintlify/validation': 0.1.442 + '@mintlify/validation': 0.1.462 '@sindresorhus/slugify': 2.2.1 acorn: 8.15.0 acorn-jsx: 5.3.2(acorn@8.15.0) @@ -6730,7 +6776,7 @@ snapshots: remark-frontmatter: 5.0.0 remark-gfm: 4.0.1 remark-math: 6.0.0 - remark-mdx: 3.1.0 + remark-mdx: 3.1.1 remark-stringify: 11.0.0 tailwindcss: 3.4.17 unified: 11.0.5 @@ -6750,13 +6796,13 @@ snapshots: - supports-color - ts-node - '@mintlify/link-rot@3.0.629(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)': + '@mintlify/link-rot@3.0.659(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2)': dependencies: - '@mintlify/common': 1.0.496(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mintlify/prebuild': 1.0.618(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3) - '@mintlify/previewing': 4.0.665(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(typescript@5.8.3) - '@mintlify/validation': 0.1.442 - fs-extra: 11.3.0 + '@mintlify/common': 1.0.522(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1) + '@mintlify/prebuild': 1.0.646(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) + '@mintlify/previewing': 4.0.695(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(typescript@5.9.2) + '@mintlify/validation': 0.1.462 + fs-extra: 11.3.1 unist-util-visit: 4.1.2 transitivePeerDependencies: - '@types/react' @@ -6767,34 +6813,34 @@ snapshots: - react - react-devtools-core - react-dom + - react-native-b4a - supports-color - ts-node - typescript - utf-8-validate - '@mintlify/mdx@2.0.3(@types/react@19.1.3)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mintlify/mdx@2.0.5(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)': dependencies: - '@shikijs/transformers': 3.11.0 + '@shikijs/transformers': 3.12.2 hast-util-to-string: 3.0.1 mdast-util-mdx-jsx: 3.2.0 - next-mdx-remote-client: 1.1.1(@types/react@19.1.3)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + next-mdx-remote-client: 1.1.2(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)(unified@11.0.5) + react: 19.1.1 + react-dom: 18.3.1(react@19.1.1) rehype-katex: 7.0.1 remark-gfm: 4.0.1 remark-math: 6.0.0 remark-smartypants: 3.0.2 - shiki: 3.11.0 + shiki: 3.12.2 unified: 11.0.5 unist-util-visit: 5.0.0 transitivePeerDependencies: - '@types/react' - - acorn - supports-color - '@mintlify/models@0.0.219': + '@mintlify/models@0.0.225': dependencies: - axios: 1.9.0 + axios: 1.11.0 openapi-types: 12.1.3 transitivePeerDependencies: - debug @@ -6806,17 +6852,17 @@ snapshots: ajv-formats: 3.0.1(ajv@8.17.1) jsonpointer: 5.0.1 leven: 4.0.0 - yaml: 2.7.1 + yaml: 2.8.1 - '@mintlify/prebuild@1.0.618(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)': + '@mintlify/prebuild@1.0.646(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2)': dependencies: - '@mintlify/common': 1.0.496(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mintlify/common': 1.0.522(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1) '@mintlify/openapi-parser': 0.0.7 - '@mintlify/scraping': 4.0.354(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3) - '@mintlify/validation': 0.1.442 - chalk: 5.4.1 + '@mintlify/scraping': 4.0.381(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) + '@mintlify/validation': 0.1.462 + chalk: 5.6.2 favicons: 7.2.0 - fs-extra: 11.3.0 + fs-extra: 11.3.1 gray-matter: 4.0.3 js-yaml: 4.1.0 mdast: 3.0.0 @@ -6830,30 +6876,31 @@ snapshots: - encoding - react - react-dom + - react-native-b4a - supports-color - ts-node - typescript - utf-8-validate - '@mintlify/previewing@4.0.665(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(typescript@5.8.3)': + '@mintlify/previewing@4.0.695(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(typescript@5.9.2)': dependencies: - '@mintlify/common': 1.0.496(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mintlify/prebuild': 1.0.618(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3) - '@mintlify/validation': 0.1.442 + '@mintlify/common': 1.0.522(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1) + '@mintlify/prebuild': 1.0.646(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) + '@mintlify/validation': 0.1.462 better-opn: 3.0.2 - chalk: 5.4.1 + chalk: 5.6.2 chokidar: 3.6.0 express: 4.21.2 - fs-extra: 11.3.0 + fs-extra: 11.3.1 got: 13.0.0 gray-matter: 4.0.3 - ink: 5.2.1(@types/react@19.1.3)(react@18.3.1) - ink-spinner: 5.0.0(ink@5.2.1(@types/react@19.1.3)(react@18.3.1))(react@18.3.1) + ink: 6.3.0(@types/react@19.1.12)(react@19.1.1) + ink-spinner: 5.0.0(ink@6.3.0(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) is-online: 10.0.0 js-yaml: 4.1.0 mdast: 3.0.0 openapi-types: 12.1.3 - react: 18.3.1 + react: 19.1.1 socket.io: 4.8.1 tar: 6.2.1 unist-util-visit: 4.1.2 @@ -6866,24 +6913,25 @@ snapshots: - encoding - react-devtools-core - react-dom + - react-native-b4a - supports-color - ts-node - typescript - utf-8-validate - '@mintlify/scraping@4.0.354(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.8.3)': + '@mintlify/scraping@4.0.381(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2)': dependencies: - '@mintlify/common': 1.0.496(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mintlify/common': 1.0.522(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1) '@mintlify/openapi-parser': 0.0.7 - fs-extra: 11.3.0 + fs-extra: 11.3.1 hast-util-to-mdast: 10.1.2 js-yaml: 4.1.0 mdast-util-mdx-jsx: 3.2.0 neotraverse: 0.6.18 - puppeteer: 22.15.0(typescript@5.8.3) + puppeteer: 22.15.0(typescript@5.9.2) rehype-parse: 9.0.1 remark-gfm: 4.0.1 - remark-mdx: 3.1.0 + remark-mdx: 3.1.1 remark-parse: 11.0.0 remark-stringify: 11.0.0 unified: 11.0.5 @@ -6898,41 +6946,42 @@ snapshots: - encoding - react - react-dom + - react-native-b4a - supports-color - ts-node - typescript - utf-8-validate - '@mintlify/validation@0.1.442': + '@mintlify/validation@0.1.462': dependencies: - '@mintlify/models': 0.0.219 - arktype: 2.1.20 + '@mintlify/models': 0.0.225 + arktype: 2.1.22 lcm: 0.0.3 lodash: 4.17.21 openapi-types: 12.1.3 zod: 3.25.76 - zod-to-json-schema: 3.24.5(zod@3.25.76) + zod-to-json-schema: 3.24.6(zod@3.25.76) transitivePeerDependencies: - debug - '@modelcontextprotocol/sdk@1.17.2': + '@modelcontextprotocol/sdk@1.17.5': dependencies: ajv: 6.12.6 content-type: 1.0.5 cors: 2.8.5 cross-spawn: 7.0.6 eventsource: 3.0.7 - eventsource-parser: 3.0.3 + eventsource-parser: 3.0.6 express: 5.1.0 express-rate-limit: 7.5.1(express@5.1.0) pkce-challenge: 5.0.0 - raw-body: 3.0.0 - zod: 3.25.76 - zod-to-json-schema: 3.24.5(zod@3.25.76) + raw-body: 3.0.1 + zod: 3.25.67 + zod-to-json-schema: 3.24.6(zod@3.25.67) transitivePeerDependencies: - supports-color - '@next/env@14.2.28': {} + '@next/env@14.2.32': {} '@nodelib/fs.scandir@2.1.5': dependencies: @@ -6955,116 +7004,120 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.52.0': + '@playwright/test@1.55.0': dependencies: - playwright: 1.52.0 + playwright: 1.55.0 '@puppeteer/browsers@2.3.0': dependencies: - debug: 4.4.0 + debug: 4.4.1 extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.5.0 semver: 7.7.2 - tar-fs: 3.0.8 + tar-fs: 3.1.0 unbzip2-stream: 1.4.3 yargs: 17.7.2 transitivePeerDependencies: - bare-buffer + - react-native-b4a - supports-color - '@rollup/rollup-android-arm-eabi@4.40.1': + '@rollup/rollup-android-arm-eabi@4.50.1': optional: true - '@rollup/rollup-android-arm64@4.40.1': + '@rollup/rollup-android-arm64@4.50.1': optional: true - '@rollup/rollup-darwin-arm64@4.40.1': + '@rollup/rollup-darwin-arm64@4.50.1': optional: true - '@rollup/rollup-darwin-x64@4.40.1': + '@rollup/rollup-darwin-x64@4.50.1': optional: true - '@rollup/rollup-freebsd-arm64@4.40.1': + '@rollup/rollup-freebsd-arm64@4.50.1': optional: true - '@rollup/rollup-freebsd-x64@4.40.1': + '@rollup/rollup-freebsd-x64@4.50.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.40.1': + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.40.1': + '@rollup/rollup-linux-arm-musleabihf@4.50.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.40.1': + '@rollup/rollup-linux-arm64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.40.1': + '@rollup/rollup-linux-arm64-musl@4.50.1': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.40.1': + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.40.1': + '@rollup/rollup-linux-ppc64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.40.1': + '@rollup/rollup-linux-riscv64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.40.1': + '@rollup/rollup-linux-riscv64-musl@4.50.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.40.1': + '@rollup/rollup-linux-s390x-gnu@4.50.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.40.1': + '@rollup/rollup-linux-x64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-x64-musl@4.40.1': + '@rollup/rollup-linux-x64-musl@4.50.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.40.1': + '@rollup/rollup-openharmony-arm64@4.50.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.40.1': + '@rollup/rollup-win32-arm64-msvc@4.50.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.40.1': + '@rollup/rollup-win32-ia32-msvc@4.50.1': optional: true - '@shikijs/core@3.11.0': + '@rollup/rollup-win32-x64-msvc@4.50.1': + optional: true + + '@shikijs/core@3.12.2': dependencies: - '@shikijs/types': 3.11.0 + '@shikijs/types': 3.12.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.11.0': + '@shikijs/engine-javascript@3.12.2': dependencies: - '@shikijs/types': 3.11.0 + '@shikijs/types': 3.12.2 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.3 - '@shikijs/engine-oniguruma@3.11.0': + '@shikijs/engine-oniguruma@3.12.2': dependencies: - '@shikijs/types': 3.11.0 + '@shikijs/types': 3.12.2 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.11.0': + '@shikijs/langs@3.12.2': dependencies: - '@shikijs/types': 3.11.0 + '@shikijs/types': 3.12.2 - '@shikijs/themes@3.11.0': + '@shikijs/themes@3.12.2': dependencies: - '@shikijs/types': 3.11.0 + '@shikijs/types': 3.12.2 - '@shikijs/transformers@3.11.0': + '@shikijs/transformers@3.12.2': dependencies: - '@shikijs/core': 3.11.0 - '@shikijs/types': 3.11.0 + '@shikijs/core': 3.12.2 + '@shikijs/types': 3.12.2 - '@shikijs/types@3.11.0': + '@shikijs/types@3.12.2': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -7092,7 +7145,7 @@ snapshots: '@stoplight/json-ref-readers@1.2.2': dependencies: - node-fetch: 2.7.0 + node-fetch: 2.6.7 tslib: 1.14.1 transitivePeerDependencies: - encoding @@ -7137,7 +7190,7 @@ snapshots: ajv: 8.17.1 ajv-errors: 3.0.0(ajv@8.17.1) ajv-formats: 2.1.1(ajv@8.17.1) - es-aggregate-error: 1.0.13 + es-aggregate-error: 1.0.14 jsonpath-plus: 10.3.0 lodash: 4.17.21 lodash.topath: 4.5.2 @@ -7239,24 +7292,24 @@ snapshots: '@types/adm-zip@0.5.7': dependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@types/body-parser@1.19.5': + '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.17.32 + '@types/node': 20.19.13 '@types/cheerio@0.22.35': dependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 '@types/connect@3.4.38': dependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@types/cors@2.8.17': + '@types/cors@2.8.19': dependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 '@types/debug@4.1.12': dependencies: @@ -7266,29 +7319,27 @@ snapshots: '@types/es-aggregate-error@1.0.6': dependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.8 - '@types/estree@1.0.7': {} - '@types/estree@1.0.8': {} '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 20.17.32 - '@types/qs': 6.9.18 + '@types/node': 20.19.13 + '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 + '@types/send': 0.17.5 - '@types/express@4.17.21': + '@types/express@4.17.23': dependencies: - '@types/body-parser': 1.19.5 + '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 4.19.6 - '@types/qs': 6.9.18 - '@types/serve-static': 1.15.7 + '@types/qs': 6.14.0 + '@types/serve-static': 1.15.8 '@types/hast@3.0.4': dependencies: @@ -7296,7 +7347,7 @@ snapshots: '@types/http-cache-semantics@4.0.4': {} - '@types/http-errors@2.0.4': {} + '@types/http-errors@2.0.5': {} '@types/json-schema@7.0.15': {} @@ -7316,41 +7367,41 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/node-fetch@2.6.12': + '@types/node-fetch@2.6.13': dependencies: - '@types/node': 20.17.32 - form-data: 4.0.2 + '@types/node': 20.19.13 + form-data: 4.0.4 '@types/node@12.20.55': {} - '@types/node@18.19.87': + '@types/node@18.19.124': dependencies: undici-types: 5.26.5 - '@types/node@20.17.32': + '@types/node@20.19.13': dependencies: - undici-types: 6.19.8 + undici-types: 6.21.0 - '@types/qs@6.9.18': {} + '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} - '@types/react@19.1.3': + '@types/react@19.1.12': dependencies: csstype: 3.1.3 '@types/retry@0.12.0': {} - '@types/send@0.17.4': + '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.17.32 + '@types/node': 20.19.13 - '@types/serve-static@1.15.7': + '@types/serve-static@1.15.8': dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 20.17.32 - '@types/send': 0.17.4 + '@types/http-errors': 2.0.5 + '@types/node': 20.19.13 + '@types/send': 0.17.5 '@types/unist@2.0.11': {} @@ -7362,147 +7413,163 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 optional: true - '@typescript-eslint/eslint-plugin@8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3))(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2))(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.31.1 - '@typescript-eslint/type-utils': 8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.31.1 - eslint: 9.25.1(jiti@1.21.7) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.43.0 + eslint: 9.35.0(jiti@1.21.7) graphemer: 1.4.0 - ignore: 5.3.2 + ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2)': dependencies: - '@typescript-eslint/scope-manager': 8.31.1 - '@typescript-eslint/types': 8.31.1 - '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.31.1 - debug: 4.4.0 - eslint: 9.25.1(jiti@1.21.7) - typescript: 5.8.3 + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/visitor-keys': 8.43.0 + debug: 4.4.1 + eslint: 9.35.0(jiti@1.21.7) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.31.1': + '@typescript-eslint/project-service@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.31.1 - '@typescript-eslint/visitor-keys': 8.31.1 + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + debug: 4.4.1 + typescript: 5.9.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.43.0': + dependencies: + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/visitor-keys': 8.43.0 - '@typescript-eslint/type-utils@8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3) - debug: 4.4.0 - eslint: 9.25.1(jiti@1.21.7) - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + typescript: 5.9.2 + + '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2)': + dependencies: + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2) + debug: 4.4.1 + eslint: 9.35.0(jiti@1.21.7) + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.31.1': {} + '@typescript-eslint/types@8.43.0': {} - '@typescript-eslint/typescript-estree@8.31.1(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/types': 8.31.1 - '@typescript-eslint/visitor-keys': 8.31.1 - debug: 4.4.0 + '@typescript-eslint/project-service': 8.43.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/visitor-keys': 8.43.0 + debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.1 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.31.1 - '@typescript-eslint/types': 8.31.1 - '@typescript-eslint/typescript-estree': 8.31.1(typescript@5.8.3) - eslint: 9.25.1(jiti@1.21.7) - typescript: 5.8.3 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.43.0 + '@typescript-eslint/types': 8.43.0 + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + eslint: 9.35.0(jiti@1.21.7) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.31.1': + '@typescript-eslint/visitor-keys@8.43.0': dependencies: - '@typescript-eslint/types': 8.31.1 - eslint-visitor-keys: 4.2.0 + '@typescript-eslint/types': 8.43.0 + eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} '@vercel/functions@1.6.0': {} - '@vue/compiler-core@3.5.13': + '@vue/compiler-core@3.5.21': dependencies: - '@babel/parser': 7.28.0 - '@vue/shared': 3.5.13 + '@babel/parser': 7.28.4 + '@vue/shared': 3.5.21 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.13': + '@vue/compiler-dom@3.5.21': dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/compiler-core': 3.5.21 + '@vue/shared': 3.5.21 - '@vue/compiler-sfc@3.5.13': + '@vue/compiler-sfc@3.5.21': dependencies: - '@babel/parser': 7.28.0 - '@vue/compiler-core': 3.5.13 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 + '@babel/parser': 7.28.4 + '@vue/compiler-core': 3.5.21 + '@vue/compiler-dom': 3.5.21 + '@vue/compiler-ssr': 3.5.21 + '@vue/shared': 3.5.21 estree-walker: 2.0.2 - magic-string: 0.30.17 + magic-string: 0.30.19 postcss: 8.5.6 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.13': + '@vue/compiler-ssr@3.5.21': dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/compiler-dom': 3.5.21 + '@vue/shared': 3.5.21 - '@vue/reactivity@3.5.13': + '@vue/reactivity@3.5.21': dependencies: - '@vue/shared': 3.5.13 + '@vue/shared': 3.5.21 - '@vue/runtime-core@3.5.13': + '@vue/runtime-core@3.5.21': dependencies: - '@vue/reactivity': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/reactivity': 3.5.21 + '@vue/shared': 3.5.21 - '@vue/runtime-dom@3.5.13': + '@vue/runtime-dom@3.5.21': dependencies: - '@vue/reactivity': 3.5.13 - '@vue/runtime-core': 3.5.13 - '@vue/shared': 3.5.13 + '@vue/reactivity': 3.5.21 + '@vue/runtime-core': 3.5.21 + '@vue/shared': 3.5.21 csstype: 3.1.3 - '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.8.3))': + '@vue/server-renderer@3.5.21(vue@3.5.21(typescript@5.9.2))': dependencies: - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - vue: 3.5.13(typescript@5.8.3) + '@vue/compiler-ssr': 3.5.21 + '@vue/shared': 3.5.21 + vue: 3.5.21(typescript@5.9.2) - '@vue/shared@3.5.13': {} + '@vue/shared@3.5.21': {} abort-controller@3.0.0: dependencies: @@ -7518,23 +7585,17 @@ snapshots: mime-types: 3.0.1 negotiator: 1.0.0 - acorn-jsx@5.3.2(acorn@8.14.1): - dependencies: - acorn: 8.14.1 - acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 - acorn@8.14.1: {} - acorn@8.15.0: {} address@1.2.2: {} adm-zip@0.5.16: {} - agent-base@7.1.3: {} + agent-base@7.1.4: {} agentkeepalive@4.6.0: dependencies: @@ -7545,42 +7606,42 @@ snapshots: clean-stack: 4.2.0 indent-string: 5.0.0 - ai@3.4.33(openai@4.96.2(ws@8.18.1)(zod@3.25.67))(react@19.1.0)(sswr@2.2.0(svelte@5.28.2))(svelte@5.28.2)(vue@3.5.13(typescript@5.8.3))(zod@3.25.67): + ai@3.4.33(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.8))(svelte@5.38.8)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67): dependencies: '@ai-sdk/provider': 0.0.26 '@ai-sdk/provider-utils': 1.0.22(zod@3.25.67) - '@ai-sdk/react': 0.0.70(react@19.1.0)(zod@3.25.67) + '@ai-sdk/react': 0.0.70(react@19.1.1)(zod@3.25.67) '@ai-sdk/solid': 0.0.54(zod@3.25.67) - '@ai-sdk/svelte': 0.0.57(svelte@5.28.2)(zod@3.25.67) + '@ai-sdk/svelte': 0.0.57(svelte@5.38.8)(zod@3.25.67) '@ai-sdk/ui-utils': 0.0.50(zod@3.25.67) - '@ai-sdk/vue': 0.0.59(vue@3.5.13(typescript@5.8.3))(zod@3.25.67) + '@ai-sdk/vue': 0.0.59(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) '@opentelemetry/api': 1.9.0 eventsource-parser: 1.1.2 json-schema: 0.4.0 jsondiffpatch: 0.6.0 secure-json-parse: 2.7.0 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod-to-json-schema: 3.24.6(zod@3.25.67) optionalDependencies: - openai: 4.96.2(ws@8.18.1)(zod@3.25.67) - react: 19.1.0 - sswr: 2.2.0(svelte@5.28.2) - svelte: 5.28.2 + openai: 4.104.0(ws@8.18.3)(zod@3.25.67) + react: 19.1.1 + sswr: 2.2.0(svelte@5.38.8) + svelte: 5.38.8 zod: 3.25.67 transitivePeerDependencies: - solid-js - vue - ai@4.3.12(react@19.1.0)(zod@3.25.67): + ai@4.3.19(react@19.1.1)(zod@3.25.67): dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) - '@ai-sdk/react': 1.2.10(react@19.1.0)(zod@3.25.67) - '@ai-sdk/ui-utils': 1.2.9(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) + '@ai-sdk/react': 1.2.12(react@19.1.1)(zod@3.25.67) + '@ai-sdk/ui-utils': 1.2.11(zod@3.25.67) '@opentelemetry/api': 1.9.0 jsondiffpatch: 0.6.0 zod: 3.25.67 optionalDependencies: - react: 19.1.0 + react: 19.1.1 ajv-draft-04@1.0.0(ajv@8.17.1): optionalDependencies: @@ -7608,7 +7669,7 @@ snapshots: ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -7618,13 +7679,13 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.0.0: + ansi-escapes@7.1.0: dependencies: environment: 1.1.0 ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.2.2: {} ansi-styles@4.3.0: dependencies: @@ -7632,7 +7693,7 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} any-promise@1.3.0: {} @@ -7653,10 +7714,10 @@ snapshots: aria-query@5.3.2: {} - arktype@2.1.20: + arktype@2.1.22: dependencies: - '@ark/schema': 0.46.0 - '@ark/util': 0.46.0 + '@ark/schema': 0.49.0 + '@ark/util': 0.49.0 array-buffer-byte-length@1.0.2: dependencies: @@ -7674,7 +7735,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -7703,7 +7764,7 @@ snapshots: mustache: 4.2.0 openai: 4.23.0 zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod-to-json-schema: 3.24.6(zod@3.25.67) transitivePeerDependencies: - encoding @@ -7711,47 +7772,58 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - avsc@5.7.7: {} + avsc@5.7.9: {} - axios@1.9.0: + axios@1.11.0: dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.2 + follow-redirects: 1.15.11 + form-data: 4.0.4 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug axobject-query@4.1.0: {} - b4a@1.6.7: {} + b4a@1.7.0: {} bail@2.0.2: {} balanced-match@1.0.2: {} - bare-events@2.5.4: + bare-events@2.6.1: optional: true - bare-fs@4.1.4: + bare-fs@4.3.3: dependencies: - bare-events: 2.5.4 + bare-events: 2.6.1 bare-path: 3.0.0 - bare-stream: 2.6.5(bare-events@2.5.4) + bare-stream: 2.7.0(bare-events@2.6.1) + bare-url: 2.2.2 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - react-native-b4a optional: true - bare-os@3.6.1: + bare-os@3.6.2: optional: true bare-path@3.0.0: dependencies: - bare-os: 3.6.1 + bare-os: 3.6.2 optional: true - bare-stream@2.6.5(bare-events@2.5.4): + bare-stream@2.7.0(bare-events@2.6.1): dependencies: - streamx: 2.22.0 + streamx: 2.22.1 optionalDependencies: - bare-events: 2.5.4 + bare-events: 2.6.1 + transitivePeerDependencies: + - react-native-b4a + optional: true + + bare-url@2.2.2: + dependencies: + bare-path: 3.0.0 optional: true base-64@0.1.0: {} @@ -7770,7 +7842,7 @@ snapshots: dependencies: is-windows: 1.0.2 - bignumber.js@9.3.0: {} + bignumber.js@9.3.1: {} binary-extensions@2.3.0: {} @@ -7797,24 +7869,24 @@ snapshots: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.0 + debug: 4.4.1 http-errors: 2.0.0 iconv-lite: 0.6.3 on-finished: 2.4.1 qs: 6.14.0 - raw-body: 3.0.0 + raw-body: 3.0.1 type-is: 2.0.1 transitivePeerDependencies: - supports-color boolbase@1.0.0: {} - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 @@ -7822,29 +7894,29 @@ snapshots: dependencies: fill-range: 7.1.1 - braintrust@0.0.171(openai@4.96.2(ws@8.18.1)(zod@3.25.67))(react@19.1.0)(sswr@2.2.0(svelte@5.28.2))(svelte@5.28.2)(vue@3.5.13(typescript@5.8.3))(zod@3.25.67): + braintrust@0.0.171(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.8))(svelte@5.38.8)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67): dependencies: '@ai-sdk/provider': 0.0.11 '@braintrust/core': 0.0.67 - '@next/env': 14.2.28 + '@next/env': 14.2.32 '@vercel/functions': 1.6.0 - ai: 3.4.33(openai@4.96.2(ws@8.18.1)(zod@3.25.67))(react@19.1.0)(sswr@2.2.0(svelte@5.28.2))(svelte@5.28.2)(vue@3.5.13(typescript@5.8.3))(zod@3.25.67) + ai: 3.4.33(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.8))(svelte@5.38.8)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) argparse: 2.0.1 chalk: 4.1.2 cli-progress: 3.12.0 - dotenv: 16.5.0 + dotenv: 16.6.1 esbuild: 0.18.20 eventsource-parser: 1.1.2 graceful-fs: 4.2.11 minimatch: 9.0.5 mustache: 4.2.0 pluralize: 8.0.0 - simple-git: 3.27.0 + simple-git: 3.28.0 slugify: 1.6.6 - source-map: 0.7.4 + source-map: 0.7.6 uuid: 9.0.1 zod: 3.25.67 - zod-to-json-schema: 3.24.5(zod@3.25.67) + zod-to-json-schema: 3.24.6(zod@3.25.67) transitivePeerDependencies: - '@aws-sdk/credential-provider-web-identity' - openai @@ -7866,9 +7938,9 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bundle-require@5.1.0(esbuild@0.25.3): + bundle-require@5.1.0(esbuild@0.25.9): dependencies: - esbuild: 0.25.3 + esbuild: 0.25.9 load-tsconfig: 0.2.5 busboy@1.6.0: @@ -7885,10 +7957,10 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 get-stream: 6.0.1 - http-cache-semantics: 4.1.1 + http-cache-semantics: 4.2.0 keyv: 4.5.4 mimic-response: 4.0.0 - normalize-url: 8.0.1 + normalize-url: 8.1.0 responselike: 3.0.0 call-bind-apply-helpers@1.0.2: @@ -7921,7 +7993,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.4.1: {} + chalk@5.6.2: {} character-entities-html4@2.1.0: {} @@ -7931,31 +8003,31 @@ snapshots: character-reference-invalid@2.0.1: {} - chardet@0.7.0: {} + chardet@2.1.0: {} charenc@0.0.2: {} cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 + css-select: 5.2.2 + css-what: 6.2.2 domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 - cheerio@1.0.0: + cheerio@1.1.2: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 domutils: 3.2.2 - encoding-sniffer: 0.2.0 - htmlparser2: 9.1.0 + encoding-sniffer: 0.2.1 + htmlparser2: 10.0.0 parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 6.21.2 + undici: 7.16.0 whatwg-mimetype: 4.0.0 cheminfo-types@1.8.1: {} @@ -8084,11 +8156,13 @@ snapshots: readable-stream: 2.3.8 typedarray: 0.0.6 + confbox@0.1.8: {} + consola@3.4.2: {} - console-table-printer@2.12.1: + console-table-printer@2.14.6: dependencies: - simple-wcswidth: 1.0.1 + simple-wcswidth: 1.1.2 content-disposition@0.5.4: dependencies: @@ -8117,14 +8191,14 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig@9.0.0(typescript@5.8.3): + cosmiconfig@9.0.0(typescript@5.9.2): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 cross-spawn@7.0.6: dependencies: @@ -8134,15 +8208,15 @@ snapshots: crypt@0.0.2: {} - css-select@5.1.0: + css-select@5.2.2: dependencies: boolbase: 1.0.0 - css-what: 6.1.0 + css-what: 6.2.2 domhandler: 5.0.3 domutils: 3.2.2 nth-check: 2.1.1 - css-what@6.1.0: {} + css-what@6.2.2: {} cssesc@3.0.0: {} @@ -8180,13 +8254,13 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.4.0: + debug@4.4.1: dependencies: ms: 2.1.3 decamelize@1.2.0: {} - decode-named-character-reference@1.1.0: + decode-named-character-reference@1.2.0: dependencies: character-entities: 2.0.2 @@ -8237,7 +8311,7 @@ snapshots: detect-port@1.6.1: dependencies: address: 1.2.2 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -8290,7 +8364,7 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - dotenv@16.5.0: {} + dotenv@16.6.1: {} dotenv@8.6.0: {} @@ -8308,7 +8382,7 @@ snapshots: ee-first@1.1.1: {} - emoji-regex@10.4.0: {} + emoji-regex@10.5.0: {} emoji-regex@8.0.0: {} @@ -8318,12 +8392,12 @@ snapshots: encodeurl@2.0.0: {} - encoding-sniffer@0.2.0: + encoding-sniffer@0.2.1: dependencies: iconv-lite: 0.6.3 whatwg-encoding: 3.1.1 - end-of-stream@1.4.4: + end-of-stream@1.4.5: dependencies: once: 1.4.0 @@ -8331,8 +8405,8 @@ snapshots: engine.io@6.6.4: dependencies: - '@types/cors': 2.8.17 - '@types/node': 20.17.32 + '@types/cors': 2.8.19 + '@types/node': 20.19.13 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -8352,7 +8426,7 @@ snapshots: entities@4.5.0: {} - entities@6.0.0: {} + entities@6.0.1: {} env-paths@2.2.1: {} @@ -8362,7 +8436,7 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.23.9: + es-abstract@1.24.0: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -8391,7 +8465,9 @@ snapshots: is-array-buffer: 3.0.5 is-callable: 1.2.7 is-data-view: 1.0.2 + is-negative-zero: 2.0.3 is-regex: 1.2.1 + is-set: 2.0.3 is-shared-array-buffer: 1.0.4 is-string: 1.1.1 is-typed-array: 1.1.15 @@ -8406,6 +8482,7 @@ snapshots: safe-push-apply: 1.0.0 safe-regex-test: 1.1.0 set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 string.prototype.trim: 1.2.10 string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 @@ -8416,11 +8493,11 @@ snapshots: unbox-primitive: 1.1.0 which-typed-array: 1.1.19 - es-aggregate-error@1.0.13: + es-aggregate-error@1.0.14: dependencies: define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 function-bind: 1.1.2 globalthis: 1.0.4 @@ -8462,7 +8539,7 @@ snapshots: '@types/estree-jsx': 1.0.5 acorn: 8.15.0 esast-util-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 esbuild@0.18.20: optionalDependencies: @@ -8515,33 +8592,34 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.25.3: + esbuild@0.25.9: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.3 - '@esbuild/android-arm': 0.25.3 - '@esbuild/android-arm64': 0.25.3 - '@esbuild/android-x64': 0.25.3 - '@esbuild/darwin-arm64': 0.25.3 - '@esbuild/darwin-x64': 0.25.3 - '@esbuild/freebsd-arm64': 0.25.3 - '@esbuild/freebsd-x64': 0.25.3 - '@esbuild/linux-arm': 0.25.3 - '@esbuild/linux-arm64': 0.25.3 - '@esbuild/linux-ia32': 0.25.3 - '@esbuild/linux-loong64': 0.25.3 - '@esbuild/linux-mips64el': 0.25.3 - '@esbuild/linux-ppc64': 0.25.3 - '@esbuild/linux-riscv64': 0.25.3 - '@esbuild/linux-s390x': 0.25.3 - '@esbuild/linux-x64': 0.25.3 - '@esbuild/netbsd-arm64': 0.25.3 - '@esbuild/netbsd-x64': 0.25.3 - '@esbuild/openbsd-arm64': 0.25.3 - '@esbuild/openbsd-x64': 0.25.3 - '@esbuild/sunos-x64': 0.25.3 - '@esbuild/win32-arm64': 0.25.3 - '@esbuild/win32-ia32': 0.25.3 - '@esbuild/win32-x64': 0.25.3 + '@esbuild/aix-ppc64': 0.25.9 + '@esbuild/android-arm': 0.25.9 + '@esbuild/android-arm64': 0.25.9 + '@esbuild/android-x64': 0.25.9 + '@esbuild/darwin-arm64': 0.25.9 + '@esbuild/darwin-x64': 0.25.9 + '@esbuild/freebsd-arm64': 0.25.9 + '@esbuild/freebsd-x64': 0.25.9 + '@esbuild/linux-arm': 0.25.9 + '@esbuild/linux-arm64': 0.25.9 + '@esbuild/linux-ia32': 0.25.9 + '@esbuild/linux-loong64': 0.25.9 + '@esbuild/linux-mips64el': 0.25.9 + '@esbuild/linux-ppc64': 0.25.9 + '@esbuild/linux-riscv64': 0.25.9 + '@esbuild/linux-s390x': 0.25.9 + '@esbuild/linux-x64': 0.25.9 + '@esbuild/netbsd-arm64': 0.25.9 + '@esbuild/netbsd-x64': 0.25.9 + '@esbuild/openbsd-arm64': 0.25.9 + '@esbuild/openbsd-x64': 0.25.9 + '@esbuild/openharmony-arm64': 0.25.9 + '@esbuild/sunos-x64': 0.25.9 + '@esbuild/win32-arm64': 0.25.9 + '@esbuild/win32-ia32': 0.25.9 + '@esbuild/win32-x64': 0.25.9 escalade@3.2.0: {} @@ -8561,38 +8639,38 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-scope@8.3.0: + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.0: {} + eslint-visitor-keys@4.2.1: {} - eslint@9.25.1(jiti@1.21.7): + eslint@9.35.0(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.25.1(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.20.0 - '@eslint/config-helpers': 0.2.1 - '@eslint/core': 0.13.0 + '@eslint/config-array': 0.21.0 + '@eslint/config-helpers': 0.3.1 + '@eslint/core': 0.15.2 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.25.1 - '@eslint/plugin-kit': 0.2.8 - '@humanfs/node': 0.16.6 + '@eslint/js': 9.35.0 + '@eslint/plugin-kit': 0.3.5 + '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.2 - '@types/estree': 1.0.7 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0 + debug: 4.4.1 escape-string-regexp: 4.0.0 - eslint-scope: 8.3.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -8614,11 +8692,11 @@ snapshots: esm-env@1.2.2: {} - espree@10.3.0: + espree@10.4.0: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) - eslint-visitor-keys: 4.2.0 + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 4.2.1 esprima@4.0.1: {} @@ -8626,9 +8704,9 @@ snapshots: dependencies: estraverse: 5.3.0 - esrap@1.4.9: + esrap@2.1.0: dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 esrecurse@4.3.0: dependencies: @@ -8658,7 +8736,7 @@ snapshots: dependencies: '@types/estree-jsx': 1.0.5 astring: 1.9.0 - source-map: 0.7.4 + source-map: 0.7.6 estree-util-visit@2.0.0: dependencies: @@ -8681,11 +8759,11 @@ snapshots: eventsource-parser@1.1.2: {} - eventsource-parser@3.0.3: {} + eventsource-parser@3.0.6: {} eventsource@3.0.7: dependencies: - eventsource-parser: 3.0.3 + eventsource-parser: 3.0.6 express-rate-limit@7.5.1(express@5.1.0): dependencies: @@ -8735,7 +8813,7 @@ snapshots: content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.0 + debug: 4.4.1 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -8753,7 +8831,7 @@ snapshots: router: 2.2.0 send: 1.2.0 serve-static: 2.2.0 - statuses: 2.0.1 + statuses: 2.0.2 type-is: 2.0.1 vary: 1.1.2 transitivePeerDependencies: @@ -8767,15 +8845,9 @@ snapshots: extendable-error@0.1.7: {} - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - extract-zip@2.0.1: dependencies: - debug: 4.4.0 + debug: 4.4.1 get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -8807,7 +8879,7 @@ snapshots: fast-safe-stringify@2.1.1: {} - fast-uri@3.0.6: {} + fast-uri@3.1.0: {} fastq@1.19.1: dependencies: @@ -8827,9 +8899,9 @@ snapshots: dependencies: pend: 1.2.0 - fdir@6.4.4(picomatch@4.0.2): + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.3 fetch-cookie@3.1.0: dependencies: @@ -8860,12 +8932,12 @@ snapshots: finalhandler@2.1.0: dependencies: - debug: 4.4.0 + debug: 4.4.1 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color @@ -8879,6 +8951,12 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + fix-dts-default-cjs-exports@1.0.1: + dependencies: + magic-string: 0.30.19 + mlly: 1.8.0 + rollup: 4.50.1 + flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -8886,7 +8964,7 @@ snapshots: flatted@3.3.3: {} - follow-redirects@1.15.9: {} + follow-redirects@1.15.11: {} for-each@0.3.5: dependencies: @@ -8901,11 +8979,12 @@ snapshots: form-data-encoder@2.1.4: {} - form-data@4.0.2: + form-data@4.0.4: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 es-set-tostringtag: 2.1.0 + hasown: 2.0.2 mime-types: 2.1.35 format@0.2.2: {} @@ -8921,10 +9000,10 @@ snapshots: fresh@2.0.0: {} - fs-extra@11.3.0: + fs-extra@11.3.1: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fs-extra@7.0.1: @@ -8986,7 +9065,7 @@ snapshots: get-caller-file@2.0.5: {} - get-east-asian-width@1.3.0: {} + get-east-asian-width@1.4.0: {} get-intrinsic@1.3.0: dependencies: @@ -9008,7 +9087,7 @@ snapshots: get-stream@5.2.0: dependencies: - pump: 3.0.2 + pump: 3.0.3 get-stream@6.0.1: {} @@ -9018,15 +9097,15 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.10.0: + get-tsconfig@4.10.1: dependencies: resolve-pkg-maps: 1.0.0 - get-uri@6.0.4: + get-uri@6.0.5: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -9175,7 +9254,7 @@ snapshots: hast-util-from-parse5: 8.0.3 parse5: 7.3.0 vfile: 6.0.3 - vfile-message: 4.0.2 + vfile-message: 4.0.3 hast-util-from-parse5@8.0.3: dependencies: @@ -9183,7 +9262,7 @@ snapshots: '@types/unist': 3.0.3 devlop: 1.1.0 hastscript: 9.0.1 - property-information: 7.0.0 + property-information: 7.1.0 vfile: 6.0.3 vfile-location: 5.0.3 web-namespaces: 2.0.1 @@ -9233,9 +9312,9 @@ snapshots: mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.0.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.16 + style-to-js: 1.1.17 unist-util-position: 5.0.0 zwitch: 2.0.4 transitivePeerDependencies: @@ -9250,7 +9329,7 @@ snapshots: hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 mdast-util-to-hast: 13.2.0 - property-information: 7.0.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 zwitch: 2.0.4 @@ -9267,11 +9346,11 @@ snapshots: mdast-util-mdx-expression: 2.0.1 mdast-util-mdx-jsx: 3.2.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.0.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 - style-to-js: 1.1.16 + style-to-js: 1.1.17 unist-util-position: 5.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 transitivePeerDependencies: - supports-color @@ -9312,21 +9391,21 @@ snapshots: '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 4.0.0 - property-information: 7.0.0 + property-information: 7.1.0 space-separated-tokens: 2.0.2 help-me@5.0.0: {} html-void-elements@3.0.0: {} - htmlparser2@9.1.0: + htmlparser2@10.0.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 - entities: 4.5.0 + entities: 6.0.1 - http-cache-semantics@4.1.1: {} + http-cache-semantics@4.2.0: {} http-errors@2.0.0: dependencies: @@ -9338,8 +9417,8 @@ snapshots: http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.3 - debug: 4.4.0 + agent-base: 7.1.4 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -9350,8 +9429,8 @@ snapshots: https-proxy-agent@7.0.6: dependencies: - agent-base: 7.1.3 - debug: 4.4.0 + agent-base: 7.1.4 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -9369,10 +9448,16 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.7.0: + dependencies: + safer-buffer: 2.1.2 + ieee754@1.2.1: {} ignore@5.3.2: {} + ignore@7.0.5: {} + immediate@3.0.6: {} immer@9.0.21: {} @@ -9388,58 +9473,57 @@ snapshots: inherits@2.0.4: {} - ink-spinner@5.0.0(ink@5.2.1(@types/react@19.1.3)(react@18.3.1))(react@18.3.1): + ink-spinner@5.0.0(ink@6.3.0(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): dependencies: cli-spinners: 2.9.2 - ink: 5.2.1(@types/react@19.1.3)(react@18.3.1) - react: 18.3.1 + ink: 6.3.0(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 - ink@5.2.1(@types/react@19.1.3)(react@18.3.1): + ink@6.3.0(@types/react@19.1.12)(react@19.1.1): dependencies: - '@alcalzone/ansi-tokenize': 0.1.3 - ansi-escapes: 7.0.0 - ansi-styles: 6.2.1 + '@alcalzone/ansi-tokenize': 0.2.0 + ansi-escapes: 7.1.0 + ansi-styles: 6.2.3 auto-bind: 5.0.1 - chalk: 5.4.1 + chalk: 5.6.2 cli-boxes: 3.0.0 cli-cursor: 4.0.0 cli-truncate: 4.0.0 code-excerpt: 4.0.0 es-toolkit: 1.39.10 indent-string: 5.0.0 - is-in-ci: 1.0.0 + is-in-ci: 2.0.0 patch-console: 2.0.0 - react: 18.3.1 - react-reconciler: 0.29.2(react@18.3.1) - scheduler: 0.23.2 + react: 19.1.1 + react-reconciler: 0.32.0(react@19.1.1) signal-exit: 3.0.7 - slice-ansi: 7.1.0 + slice-ansi: 7.1.2 stack-utils: 2.0.6 string-width: 7.2.0 type-fest: 4.41.0 widest-line: 5.0.0 - wrap-ansi: 9.0.0 - ws: 8.18.1 + wrap-ansi: 9.0.2 + ws: 8.18.3 yoga-layout: 3.2.1 optionalDependencies: - '@types/react': 19.1.3 + '@types/react': 19.1.12 transitivePeerDependencies: - bufferutil - utf-8-validate inline-style-parser@0.2.4: {} - inquirer@12.6.0(@types/node@20.17.32): + inquirer@12.9.4(@types/node@20.19.13): dependencies: - '@inquirer/core': 10.1.10(@types/node@20.17.32) - '@inquirer/prompts': 7.5.0(@types/node@20.17.32) - '@inquirer/type': 3.0.6(@types/node@20.17.32) + '@inquirer/core': 10.2.0(@types/node@20.19.13) + '@inquirer/prompts': 7.8.4(@types/node@20.19.13) + '@inquirer/type': 3.0.8(@types/node@20.19.13) ansi-escapes: 4.3.2 mute-stream: 2.0.0 - run-async: 3.0.0 + run-async: 4.0.6 rxjs: 7.8.2 optionalDependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.13 install@0.13.0: {} @@ -9449,10 +9533,7 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 + ip-address@10.0.1: {} ip-regex@4.3.0: {} @@ -9533,9 +9614,9 @@ snapshots: is-fullwidth-code-point@4.0.0: {} - is-fullwidth-code-point@5.0.0: + is-fullwidth-code-point@5.1.0: dependencies: - get-east-asian-width: 1.3.0 + get-east-asian-width: 1.4.0 is-generator-function@1.1.0: dependencies: @@ -9550,7 +9631,7 @@ snapshots: is-hexadecimal@2.0.1: {} - is-in-ci@1.0.0: {} + is-in-ci@2.0.0: {} is-ip@3.1.0: dependencies: @@ -9558,6 +9639,8 @@ snapshots: is-map@2.0.3: {} + is-negative-zero@2.0.3: {} + is-number-object@1.1.1: dependencies: call-bound: 1.0.4 @@ -9649,7 +9732,7 @@ snapshots: js-levenshtein@1.1.6: {} - js-tiktoken@1.0.20: + js-tiktoken@1.0.21: dependencies: base64-js: 1.5.1 @@ -9664,13 +9747,11 @@ snapshots: dependencies: argparse: 2.0.1 - jsbn@1.1.0: {} - jsep@1.4.0: {} json-bigint@1.0.0: dependencies: - bignumber.js: 9.3.0 + bignumber.js: 9.3.1 json-buffer@3.0.1: {} @@ -9689,14 +9770,14 @@ snapshots: jsondiffpatch@0.6.0: dependencies: '@types/diff-match-patch': 1.0.36 - chalk: 5.4.1 + chalk: 5.6.2 diff-match-patch: 1.0.5 jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: @@ -9717,7 +9798,7 @@ snapshots: readable-stream: 2.3.8 setimmediate: 1.0.5 - jwa@2.0.0: + jwa@2.0.1: dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 @@ -9725,7 +9806,7 @@ snapshots: jws@4.0.0: dependencies: - jwa: 2.0.0 + jwa: 2.0.1 safe-buffer: 5.2.1 katex@0.16.22: @@ -9738,17 +9819,18 @@ snapshots: kind-of@6.0.3: {} - langsmith@0.3.23(openai@4.96.2(ws@8.18.1)(zod@3.25.67)): + langsmith@0.3.67(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67)): dependencies: '@types/uuid': 10.0.0 chalk: 4.1.2 - console-table-printer: 2.12.1 + console-table-printer: 2.14.6 p-queue: 6.6.2 p-retry: 4.6.2 - semver: 7.7.1 + semver: 7.7.2 uuid: 10.0.0 optionalDependencies: - openai: 4.96.2(ws@8.18.1)(zod@3.25.67) + '@opentelemetry/api': 1.9.0 + openai: 4.104.0(ws@8.18.3)(zod@3.25.67) lcm@0.0.3: dependencies: @@ -9774,7 +9856,7 @@ snapshots: cheminfo-types: 1.8.1 install: 0.13.0 ml-matrix: 6.12.1 - ml-spectra-processing: 14.12.0 + ml-spectra-processing: 14.17.1 lines-and-columns@1.2.4: {} @@ -9812,9 +9894,9 @@ snapshots: lru-cache@7.18.3: {} - magic-string@0.30.17: + magic-string@0.30.19: dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 markdown-extensions@2.0.0: {} @@ -9839,7 +9921,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.2.0 devlop: 1.1.0 mdast-util-to-string: 4.0.0 micromark: 4.0.2 @@ -9956,7 +10038,7 @@ snapshots: parse-entities: 4.0.2 stringify-entities: 4.0.4 unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 transitivePeerDependencies: - supports-color @@ -10030,7 +10112,7 @@ snapshots: micromark-core-commonmark@2.0.3: dependencies: - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-factory-destination: 2.0.1 micromark-factory-label: 2.0.1 @@ -10144,7 +10226,7 @@ snapshots: micromark-util-events-to-acorn: 2.0.3 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-extension-mdx-md@2.0.0: dependencies: @@ -10160,7 +10242,7 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-extension-mdxjs@3.0.0: dependencies: @@ -10196,7 +10278,7 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-factory-space@2.0.1: dependencies: @@ -10243,7 +10325,7 @@ snapshots: micromark-util-decode-string@2.0.1: dependencies: - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.2.0 micromark-util-character: 2.1.1 micromark-util-decode-numeric-character-reference: 2.0.2 micromark-util-symbol: 2.0.1 @@ -10258,7 +10340,7 @@ snapshots: estree-util-visit: 2.0.0 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - vfile-message: 4.0.2 + vfile-message: 4.0.3 micromark-util-html-tag-name@2.0.1: {} @@ -10290,8 +10372,8 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.0 - decode-named-character-reference: 1.1.0 + debug: 4.4.1 + decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-factory-space: 2.0.1 @@ -10336,11 +10418,11 @@ snapshots: minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimist@1.2.8: {} @@ -10357,9 +10439,9 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 - mintlify@4.2.78(@types/node@20.17.32)(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(typescript@5.8.3): + mintlify@4.2.108(@types/node@20.19.13)(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(typescript@5.9.2): dependencies: - '@mintlify/cli': 4.0.682(@types/node@20.17.32)(@types/react@19.1.3)(react-dom@18.3.1(react@18.3.1))(typescript@5.8.3) + '@mintlify/cli': 4.0.712(@types/node@20.19.13)(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(typescript@5.9.2) transitivePeerDependencies: - '@types/node' - '@types/react' @@ -10369,6 +10451,7 @@ snapshots: - encoding - react-devtools-core - react-dom + - react-native-b4a - supports-color - ts-node - typescript @@ -10401,7 +10484,7 @@ snapshots: is-any-array: 2.0.1 ml-array-rescale: 1.3.7 - ml-spectra-processing@14.12.0: + ml-spectra-processing@14.17.1: dependencies: binary-search: 1.3.6 cheminfo-types: 1.8.1 @@ -10412,6 +10495,13 @@ snapshots: ml-xsadd@3.0.1: {} + mlly@1.8.0: + dependencies: + acorn: 8.15.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.1 + mri@1.2.0: {} ms@2.0.0: {} @@ -10450,21 +10540,21 @@ snapshots: netmask@2.0.2: {} - next-mdx-remote-client@1.1.1(@types/react@19.1.3)(acorn@8.15.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next-mdx-remote-client@1.1.2(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)(unified@11.0.5): dependencies: '@babel/code-frame': 7.27.1 - '@mdx-js/mdx': 3.1.0(acorn@8.15.0) - '@mdx-js/react': 3.1.0(@types/react@19.1.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - remark-mdx-remove-esm: 1.1.0 + '@mdx-js/mdx': 3.1.1 + '@mdx-js/react': 3.1.1(@types/react@19.1.12)(react@19.1.1) + react: 19.1.1 + react-dom: 18.3.1(react@19.1.1) + remark-mdx-remove-esm: 1.2.0(unified@11.0.5) serialize-error: 12.0.0 vfile: 6.0.3 vfile-matter: 5.0.1 transitivePeerDependencies: - '@types/react' - - acorn - supports-color + - unified nimma@0.2.3: dependencies: @@ -10492,7 +10582,7 @@ snapshots: normalize-path@3.0.0: {} - normalize-url@8.0.1: {} + normalize-url@8.1.0: {} nth-check@2.1.1: dependencies: @@ -10518,7 +10608,7 @@ snapshots: ollama-ai-provider@1.2.0(zod@3.25.67): dependencies: '@ai-sdk/provider': 1.1.3 - '@ai-sdk/provider-utils': 2.2.7(zod@3.25.67) + '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) partial-json: 0.1.7 optionalDependencies: zod: 3.25.67 @@ -10552,40 +10642,40 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - openai@4.23.0: + openai@4.104.0(ws@8.18.3)(zod@3.25.67): dependencies: - '@types/node': 18.19.87 - '@types/node-fetch': 2.6.12 + '@types/node': 18.19.124 + '@types/node-fetch': 2.6.13 abort-controller: 3.0.0 agentkeepalive: 4.6.0 - digest-fetch: 1.3.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.7.0 - web-streams-polyfill: 3.3.3 + optionalDependencies: + ws: 8.18.3 + zod: 3.25.67 transitivePeerDependencies: - encoding - openai@4.96.2(ws@8.18.1)(zod@3.25.67): + openai@4.23.0: dependencies: - '@types/node': 18.19.87 - '@types/node-fetch': 2.6.12 + '@types/node': 18.19.124 + '@types/node-fetch': 2.6.13 abort-controller: 3.0.0 agentkeepalive: 4.6.0 + digest-fetch: 1.3.0 form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.7.0 - optionalDependencies: - ws: 8.18.1 - zod: 3.25.67 + web-streams-polyfill: 3.3.3 transitivePeerDependencies: - encoding openapi-types@12.1.3: {} - openapi3-ts@4.4.0: + openapi3-ts@4.5.0: dependencies: - yaml: 2.7.1 + yaml: 2.8.1 optionator@0.9.4: dependencies: @@ -10596,8 +10686,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - os-tmpdir@1.0.2: {} - outdent@0.5.0: {} own-keys@1.0.1: @@ -10663,9 +10751,9 @@ snapshots: pac-proxy-agent@7.2.0: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.3 - debug: 4.4.0 - get-uri: 6.0.4 + agent-base: 7.1.4 + debug: 4.4.1 + get-uri: 6.0.5 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 pac-resolver: 7.0.1 @@ -10682,7 +10770,7 @@ snapshots: package-manager-detector@0.2.11: dependencies: - quansync: 0.2.10 + quansync: 0.2.11 pako@1.0.11: {} @@ -10695,7 +10783,7 @@ snapshots: '@types/unist': 2.0.11 character-entities-legacy: 3.0.0 character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.1.0 + decode-named-character-reference: 1.2.0 is-alphanumerical: 2.0.1 is-decimal: 2.0.1 is-hexadecimal: 2.0.1 @@ -10727,7 +10815,7 @@ snapshots: parse5@7.3.0: dependencies: - entities: 6.0.0 + entities: 6.0.1 parseurl@1.3.3: {} @@ -10749,17 +10837,19 @@ snapshots: path-to-regexp@0.1.12: {} - path-to-regexp@8.2.0: {} + path-to-regexp@8.3.0: {} path-type@4.0.0: {} + pathe@2.0.3: {} + pend@1.2.0: {} picocolors@1.1.1: {} picomatch@2.3.1: {} - picomatch@4.0.2: {} + picomatch@4.0.3: {} pify@2.3.0: {} @@ -10769,7 +10859,7 @@ snapshots: dependencies: split2: 4.2.0 - pino-pretty@13.0.0: + pino-pretty@13.1.1: dependencies: colorette: 2.0.20 dateformat: 4.6.3 @@ -10780,21 +10870,21 @@ snapshots: minimist: 1.2.8 on-exit-leak-free: 2.1.2 pino-abstract-transport: 2.0.0 - pump: 3.0.2 - secure-json-parse: 2.7.0 + pump: 3.0.3 + secure-json-parse: 4.0.0 sonic-boom: 4.2.0 - strip-json-comments: 3.1.1 + strip-json-comments: 5.0.3 pino-std-serializers@7.0.0: {} - pino@9.6.0: + pino@9.9.5: dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 on-exit-leak-free: 2.1.2 pino-abstract-transport: 2.0.0 pino-std-serializers: 7.0.0 - process-warning: 4.0.1 + process-warning: 5.0.0 quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.5.0 @@ -10805,11 +10895,17 @@ snapshots: pkce-challenge@5.0.0: {} - playwright-core@1.52.0: {} + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.0 + pathe: 2.0.3 + + playwright-core@1.55.0: {} - playwright@1.52.0: + playwright@1.55.0: dependencies: - playwright-core: 1.52.0 + playwright-core: 1.55.0 optionalDependencies: fsevents: 2.3.2 @@ -10834,18 +10930,18 @@ snapshots: postcss-load-config@4.0.2(postcss@8.5.6): dependencies: lilconfig: 3.1.3 - yaml: 2.7.1 + yaml: 2.8.1 optionalDependencies: postcss: 8.5.6 - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.19.4)(yaml@2.7.1): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(yaml@2.8.1): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 1.21.7 postcss: 8.5.6 - tsx: 4.19.4 - yaml: 2.7.1 + tsx: 4.20.5 + yaml: 2.8.1 postcss-nested@6.2.0(postcss@8.5.6): dependencies: @@ -10869,15 +10965,15 @@ snapshots: prettier@2.8.8: {} - prettier@3.5.3: {} + prettier@3.6.2: {} process-nextick-args@2.0.1: {} - process-warning@4.0.1: {} + process-warning@5.0.0: {} progress@2.0.3: {} - property-information@7.0.0: {} + property-information@7.1.0: {} proxy-addr@2.0.7: dependencies: @@ -10886,8 +10982,8 @@ snapshots: proxy-agent@6.5.0: dependencies: - agent-base: 7.1.3 - debug: 4.4.0 + agent-base: 7.1.4 + debug: 4.4.1 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 lru-cache: 7.18.3 @@ -10905,9 +11001,9 @@ snapshots: got: 12.6.1 is-ip: 3.1.0 - pump@3.0.2: + pump@3.0.3: dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 once: 1.4.0 punycode@2.3.1: {} @@ -10916,24 +11012,26 @@ snapshots: dependencies: '@puppeteer/browsers': 2.3.0 chromium-bidi: 0.6.3(devtools-protocol@0.0.1312386) - debug: 4.4.0 + debug: 4.4.1 devtools-protocol: 0.0.1312386 - ws: 8.18.1 + ws: 8.18.3 transitivePeerDependencies: - bare-buffer - bufferutil + - react-native-b4a - supports-color - utf-8-validate - puppeteer@22.15.0(typescript@5.8.3): + puppeteer@22.15.0(typescript@5.9.2): dependencies: '@puppeteer/browsers': 2.3.0 - cosmiconfig: 9.0.0(typescript@5.8.3) + cosmiconfig: 9.0.0(typescript@5.9.2) devtools-protocol: 0.0.1312386 puppeteer-core: 22.15.0 transitivePeerDependencies: - bare-buffer - bufferutil + - react-native-b4a - supports-color - typescript - utf-8-validate @@ -10946,7 +11044,7 @@ snapshots: dependencies: side-channel: 1.1.0 - quansync@0.2.10: {} + quansync@0.2.11: {} queue-microtask@1.2.3: {} @@ -10963,30 +11061,25 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - raw-body@3.0.0: + raw-body@3.0.1: dependencies: bytes: 3.1.2 http-errors: 2.0.0 - iconv-lite: 0.6.3 + iconv-lite: 0.7.0 unpipe: 1.0.0 - react-dom@18.3.1(react@18.3.1): + react-dom@18.3.1(react@19.1.1): dependencies: loose-envify: 1.4.0 - react: 18.3.1 + react: 19.1.1 scheduler: 0.23.2 - react-reconciler@0.29.2(react@18.3.1): + react-reconciler@0.32.0(react@19.1.1): dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 + react: 19.1.1 + scheduler: 0.26.0 - react@19.1.0: {} + react@19.1.1: {} read-cache@1.0.0: dependencies: @@ -11023,15 +11116,14 @@ snapshots: estree-util-build-jsx: 3.0.1 vfile: 6.0.3 - recma-jsx@1.0.0(acorn@8.15.0): + recma-jsx@1.0.1(acorn@8.15.0): dependencies: + acorn: 8.15.0 acorn-jsx: 5.3.2(acorn@8.15.0) estree-util-to-js: 2.0.0 recma-parse: 1.0.0 recma-stringify: 1.0.0 unified: 11.0.5 - transitivePeerDependencies: - - acorn recma-parse@1.0.0: dependencies: @@ -11051,7 +11143,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -11135,15 +11227,16 @@ snapshots: transitivePeerDependencies: - supports-color - remark-mdx-remove-esm@1.1.0: + remark-mdx-remove-esm@1.2.0(unified@11.0.5): dependencies: '@types/mdast': 4.0.4 mdast-util-mdxjs-esm: 2.0.1 + unified: 11.0.5 unist-util-remove: 4.0.0 transitivePeerDependencies: - supports-color - remark-mdx@3.1.0: + remark-mdx@3.1.1: dependencies: mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -11245,43 +11338,44 @@ snapshots: reusify@1.1.0: {} - rollup@4.40.1: + rollup@4.50.1: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.40.1 - '@rollup/rollup-android-arm64': 4.40.1 - '@rollup/rollup-darwin-arm64': 4.40.1 - '@rollup/rollup-darwin-x64': 4.40.1 - '@rollup/rollup-freebsd-arm64': 4.40.1 - '@rollup/rollup-freebsd-x64': 4.40.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.40.1 - '@rollup/rollup-linux-arm-musleabihf': 4.40.1 - '@rollup/rollup-linux-arm64-gnu': 4.40.1 - '@rollup/rollup-linux-arm64-musl': 4.40.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.40.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.40.1 - '@rollup/rollup-linux-riscv64-gnu': 4.40.1 - '@rollup/rollup-linux-riscv64-musl': 4.40.1 - '@rollup/rollup-linux-s390x-gnu': 4.40.1 - '@rollup/rollup-linux-x64-gnu': 4.40.1 - '@rollup/rollup-linux-x64-musl': 4.40.1 - '@rollup/rollup-win32-arm64-msvc': 4.40.1 - '@rollup/rollup-win32-ia32-msvc': 4.40.1 - '@rollup/rollup-win32-x64-msvc': 4.40.1 + '@rollup/rollup-android-arm-eabi': 4.50.1 + '@rollup/rollup-android-arm64': 4.50.1 + '@rollup/rollup-darwin-arm64': 4.50.1 + '@rollup/rollup-darwin-x64': 4.50.1 + '@rollup/rollup-freebsd-arm64': 4.50.1 + '@rollup/rollup-freebsd-x64': 4.50.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.50.1 + '@rollup/rollup-linux-arm-musleabihf': 4.50.1 + '@rollup/rollup-linux-arm64-gnu': 4.50.1 + '@rollup/rollup-linux-arm64-musl': 4.50.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.50.1 + '@rollup/rollup-linux-ppc64-gnu': 4.50.1 + '@rollup/rollup-linux-riscv64-gnu': 4.50.1 + '@rollup/rollup-linux-riscv64-musl': 4.50.1 + '@rollup/rollup-linux-s390x-gnu': 4.50.1 + '@rollup/rollup-linux-x64-gnu': 4.50.1 + '@rollup/rollup-linux-x64-musl': 4.50.1 + '@rollup/rollup-openharmony-arm64': 4.50.1 + '@rollup/rollup-win32-arm64-msvc': 4.50.1 + '@rollup/rollup-win32-ia32-msvc': 4.50.1 + '@rollup/rollup-win32-x64-msvc': 4.50.1 fsevents: 2.3.3 router@2.2.0: dependencies: - debug: 4.4.0 + debug: 4.4.1 depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 - path-to-regexp: 8.2.0 + path-to-regexp: 8.3.0 transitivePeerDependencies: - supports-color - run-async@3.0.0: {} + run-async@4.0.6: {} run-parallel@1.2.0: dependencies: @@ -11326,6 +11420,8 @@ snapshots: dependencies: loose-envify: 1.4.0 + scheduler@0.26.0: {} + section-matter@1.0.0: dependencies: extend-shallow: 2.0.1 @@ -11333,7 +11429,7 @@ snapshots: secure-json-parse@2.7.0: {} - semver@7.7.1: {} + secure-json-parse@4.0.0: {} semver@7.7.2: {} @@ -11357,7 +11453,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.4.0 + debug: 4.4.1 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -11367,7 +11463,7 @@ snapshots: ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color @@ -11453,14 +11549,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@3.11.0: + shiki@3.12.2: dependencies: - '@shikijs/core': 3.11.0 - '@shikijs/engine-javascript': 3.11.0 - '@shikijs/engine-oniguruma': 3.11.0 - '@shikijs/langs': 3.11.0 - '@shikijs/themes': 3.11.0 - '@shikijs/types': 3.11.0 + '@shikijs/core': 3.12.2 + '@shikijs/engine-javascript': 3.12.2 + '@shikijs/engine-oniguruma': 3.12.2 + '@shikijs/langs': 3.12.2 + '@shikijs/themes': 3.12.2 + '@shikijs/types': 3.12.2 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -11500,11 +11596,11 @@ snapshots: dependencies: jsep: 1.4.0 - simple-git@3.27.0: + simple-git@3.28.0: dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 - debug: 4.4.0 + debug: 4.4.1 transitivePeerDependencies: - supports-color @@ -11512,19 +11608,19 @@ snapshots: dependencies: is-arrayish: 0.3.2 - simple-wcswidth@1.0.1: {} + simple-wcswidth@1.1.2: {} slash@3.0.0: {} slice-ansi@5.0.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 is-fullwidth-code-point: 4.0.0 - slice-ansi@7.1.0: + slice-ansi@7.1.2: dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 slugify@1.6.6: {} @@ -11562,15 +11658,15 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: - agent-base: 7.1.3 - debug: 4.4.0 - socks: 2.8.4 + agent-base: 7.1.4 + debug: 4.4.1 + socks: 2.8.7 transitivePeerDependencies: - supports-color - socks@2.8.4: + socks@2.8.7: dependencies: - ip-address: 9.0.5 + ip-address: 10.0.1 smart-buffer: 4.2.0 sonic-boom@4.2.0: @@ -11582,7 +11678,7 @@ snapshots: source-map@0.6.1: optional: true - source-map@0.7.4: {} + source-map@0.7.6: {} source-map@0.8.0-beta.0: dependencies: @@ -11599,11 +11695,9 @@ snapshots: sprintf-js@1.0.3: {} - sprintf-js@1.1.3: {} - - sswr@2.2.0(svelte@5.28.2): + sswr@2.2.0(svelte@5.38.8): dependencies: - svelte: 5.28.2 + svelte: 5.38.8 swrev: 4.0.0 stack-utils@2.0.6: @@ -11612,14 +11706,23 @@ snapshots: statuses@2.0.1: {} + statuses@2.0.2: {} + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + streamsearch@1.1.0: {} - streamx@2.22.0: + streamx@2.22.1: dependencies: fast-fifo: 1.3.2 text-decoder: 1.2.3 optionalDependencies: - bare-events: 2.5.4 + bare-events: 2.6.1 + transitivePeerDependencies: + - react-native-b4a string-comparison@1.3.0: {} @@ -11633,13 +11736,13 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string-width@7.2.0: dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 - strip-ansi: 7.1.0 + emoji-regex: 10.5.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 string.prototype.trim@1.2.10: dependencies: @@ -11647,7 +11750,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -11677,9 +11780,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.2 strip-bom-string@1.0.0: {} @@ -11687,17 +11790,19 @@ snapshots: strip-json-comments@3.1.1: {} - style-to-js@1.1.16: + strip-json-comments@5.0.3: {} + + style-to-js@1.1.17: dependencies: - style-to-object: 1.0.8 + style-to-object: 1.0.9 - style-to-object@1.0.8: + style-to-object@1.0.9: dependencies: inline-style-parser: 0.2.4 sucrase@3.35.0: dependencies: - '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 glob: 10.4.5 lines-and-columns: 1.2.4 @@ -11711,10 +11816,10 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte@5.28.2: + svelte@5.38.8: dependencies: - '@ampproject/remapping': 2.3.0 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.5.5 '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) '@types/estree': 1.0.8 acorn: 8.15.0 @@ -11722,23 +11827,23 @@ snapshots: axobject-query: 4.1.0 clsx: 2.1.1 esm-env: 1.2.2 - esrap: 1.4.9 + esrap: 2.1.0 is-reference: 3.0.3 locate-character: 3.0.0 - magic-string: 0.30.17 - zimmerframe: 1.1.2 + magic-string: 0.30.19 + zimmerframe: 1.1.4 - swr@2.3.3(react@19.1.0): + swr@2.3.6(react@19.1.1): dependencies: dequal: 2.0.3 - react: 19.1.0 - use-sync-external-store: 1.5.0(react@19.1.0) + react: 19.1.1 + use-sync-external-store: 1.5.0(react@19.1.1) swrev@4.0.0: {} - swrv@1.1.0(vue@3.5.13(typescript@5.8.3)): + swrv@1.1.0(vue@3.5.21(typescript@5.9.2)): dependencies: - vue: 3.5.13(typescript@5.8.3) + vue: 3.5.21(typescript@5.9.2) tailwindcss@3.4.17: dependencies: @@ -11767,21 +11872,24 @@ snapshots: transitivePeerDependencies: - ts-node - tar-fs@3.0.8: + tar-fs@3.1.0: dependencies: - pump: 3.0.2 + pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.1.4 + bare-fs: 4.3.3 bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer + - react-native-b4a tar-stream@3.1.7: dependencies: - b4a: 1.6.7 + b4a: 1.7.0 fast-fifo: 1.3.2 - streamx: 2.22.0 + streamx: 2.22.1 + transitivePeerDependencies: + - react-native-b4a tar@6.2.1: dependencies: @@ -11796,7 +11904,9 @@ snapshots: text-decoder@1.2.3: dependencies: - b4a: 1.6.7 + b4a: 1.7.0 + transitivePeerDependencies: + - react-native-b4a thenify-all@1.6.0: dependencies: @@ -11816,10 +11926,10 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.13: + tinyglobby@0.2.15: dependencies: - fdir: 6.4.4(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 tldts-core@6.1.86: {} @@ -11827,10 +11937,6 @@ snapshots: dependencies: tldts-core: 6.1.86 - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -11855,9 +11961,9 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.1.0(typescript@5.8.3): + ts-api-utils@2.1.0(typescript@5.9.2): dependencies: - typescript: 5.8.3 + typescript: 5.9.2 ts-interface-checker@0.1.13: {} @@ -11865,37 +11971,38 @@ snapshots: tslib@2.8.1: {} - tsup@8.4.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.19.4)(typescript@5.8.3)(yaml@2.7.1): + tsup@8.5.0(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1): dependencies: - bundle-require: 5.1.0(esbuild@0.25.3) + bundle-require: 5.1.0(esbuild@0.25.9) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 - debug: 4.4.0 - esbuild: 0.25.3 + debug: 4.4.1 + esbuild: 0.25.9 + fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.19.4)(yaml@2.7.1) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(yaml@2.8.1) resolve-from: 5.0.0 - rollup: 4.40.1 + rollup: 4.50.1 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.2 - tinyglobby: 0.2.13 + tinyglobby: 0.2.15 tree-kill: 1.2.2 optionalDependencies: postcss: 8.5.6 - typescript: 5.8.3 + typescript: 5.9.2 transitivePeerDependencies: - jiti - supports-color - tsx - yaml - tsx@4.19.4: + tsx@4.20.5: dependencies: - esbuild: 0.25.3 - get-tsconfig: 4.10.0 + esbuild: 0.25.9 + get-tsconfig: 4.10.1 optionalDependencies: fsevents: 2.3.3 @@ -11953,17 +12060,20 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3): + typescript-eslint@8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.31.1(@typescript-eslint/parser@8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3))(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/parser': 8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/utils': 8.31.1(eslint@9.25.1(jiti@1.21.7))(typescript@5.8.3) - eslint: 9.25.1(jiti@1.21.7) - typescript: 5.8.3 + '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2))(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@1.21.7))(typescript@5.9.2) + eslint: 9.35.0(jiti@1.21.7) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - typescript@5.8.3: {} + typescript@5.9.2: {} + + ufo@1.6.1: {} unbox-primitive@1.1.0: dependencies: @@ -11979,9 +12089,9 @@ snapshots: undici-types@5.26.5: {} - undici-types@6.19.8: {} + undici-types@6.21.0: {} - undici@6.21.2: {} + undici@7.16.0: {} unified@11.0.5: dependencies: @@ -12082,9 +12192,9 @@ snapshots: urlpattern-polyfill@10.0.0: {} - use-sync-external-store@1.5.0(react@19.1.0): + use-sync-external-store@1.5.0(react@19.1.1): dependencies: - react: 19.1.0 + react: 19.1.1 util-deprecate@1.0.2: {} @@ -12110,9 +12220,9 @@ snapshots: vfile-matter@5.0.1: dependencies: vfile: 6.0.3 - yaml: 2.7.1 + yaml: 2.8.1 - vfile-message@4.0.2: + vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 unist-util-stringify-position: 4.0.0 @@ -12120,17 +12230,17 @@ snapshots: vfile@6.0.3: dependencies: '@types/unist': 3.0.3 - vfile-message: 4.0.2 + vfile-message: 4.0.3 - vue@3.5.13(typescript@5.8.3): + vue@3.5.21(typescript@5.9.2): dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-sfc': 3.5.13 - '@vue/runtime-dom': 3.5.13 - '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.8.3)) - '@vue/shared': 3.5.13 + '@vue/compiler-dom': 3.5.21 + '@vue/compiler-sfc': 3.5.21 + '@vue/runtime-dom': 3.5.21 + '@vue/server-renderer': 3.5.21(vue@3.5.21(typescript@5.9.2)) + '@vue/shared': 3.5.21 optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.2 web-namespaces@2.0.1: {} @@ -12224,21 +12334,21 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 - wrap-ansi@9.0.0: + wrap-ansi@9.0.2: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} ws@8.17.1: {} - ws@8.18.1: {} + ws@8.18.3: {} xml2js@0.6.2: dependencies: @@ -12253,7 +12363,7 @@ snapshots: yallist@4.0.0: {} - yaml@2.7.1: {} + yaml@2.8.1: {} yargs-parser@21.1.1: {} @@ -12274,17 +12384,17 @@ snapshots: yocto-queue@0.1.0: {} - yoctocolors-cjs@2.1.2: {} + yoctocolors-cjs@2.1.3: {} yoga-layout@3.2.1: {} - zimmerframe@1.1.2: {} + zimmerframe@1.1.4: {} - zod-to-json-schema@3.24.5(zod@3.25.67): + zod-to-json-schema@3.24.6(zod@3.25.67): dependencies: zod: 3.25.67 - zod-to-json-schema@3.24.5(zod@3.25.76): + zod-to-json-schema@3.24.6(zod@3.25.76): dependencies: zod: 3.25.76 From 8eccd56a694581e96820bb834cae5270b7ddd979 Mon Sep 17 00:00:00 2001 From: Sameel Date: Mon, 15 Sep 2025 14:10:43 -0400 Subject: [PATCH 03/20] send client options on every request --- CHANGELOG.md | 3 - lib/StagehandPage.ts | 6 +- lib/a11y/utils.ts | 3 +- lib/api.ts | 30 +- lib/index.ts | 37 +- lib/llm/CerebrasClient.ts | 2 +- lib/llm/GoogleClient.ts | 2 +- lib/llm/LLMProvider.ts | 5 +- lib/utils.ts | 70 ++ package.json | 5 +- pnpm-lock.yaml | 1271 ++++++++++++++++++++++++++++++++++--- types/llm.ts | 5 +- types/model.ts | 2 +- 13 files changed, 1312 insertions(+), 129 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc9fc61cf..fd4a8f671 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -233,7 +233,6 @@ We're thrilled to announce the release of Stagehand 2.0, bringing significant improvements to make browser automation more powerful, faster, and easier to use than ever before. ### 🚀 New Features - - **Introducing `stagehand.agent`**: A powerful new way to integrate SOTA Computer use models or Browserbase's [Open Operator](https://operator.browserbase.com) into Stagehand with one line of code! Perfect for multi-step workflows and complex interactions. [Learn more](https://docs.stagehand.dev/concepts/agent) - **Lightning-fast `act` and `extract`**: Major performance improvements to make your automations run significantly faster. - **Enhanced Logging**: Better visibility into what's happening during automation with improved logging and debugging capabilities. @@ -241,7 +240,6 @@ - **Improved Error Handling**: More descriptive errors and better error recovery to help you debug issues faster. ### 🛠️ Developer Experience - - **Better TypeScript Support**: Enhanced type definitions and better IDE integration - **Better Error Messages**: Clearer, more actionable error messages to help you debug faster - **Improved Caching**: More reliable action caching for better performance @@ -502,7 +500,6 @@ - [#316](https://github.com/browserbase/stagehand/pull/316) [`902e633`](https://github.com/browserbase/stagehand/commit/902e633e126a58b80b757ea0ecada01a7675a473) Thanks [@kamath](https://github.com/kamath)! - rename browserbaseResumeSessionID -> browserbaseSessionID - [#296](https://github.com/browserbase/stagehand/pull/296) [`f11da27`](https://github.com/browserbase/stagehand/commit/f11da27a20409c240ceeea2003d520f676def61a) Thanks [@kamath](https://github.com/kamath)! - - Deprecate fields in `init` in favor of constructor options - - Deprecate `initFromPage` in favor of `browserbaseResumeSessionID` in constructor - Rename `browserBaseSessionCreateParams` -> `browserbaseSessionCreateParams` diff --git a/lib/StagehandPage.ts b/lib/StagehandPage.ts index 2f9a1acc9..5a54a91d6 100644 --- a/lib/StagehandPage.ts +++ b/lib/StagehandPage.ts @@ -739,6 +739,7 @@ ${scriptContent} \ const result = await this.api.act({ ...observeResult, frameId: this.rootFrameId, + modelClientOptions: this.stagehand["modelClientOptions"], }); this.stagehand.addToHistory("act", observeResult, result); return result; @@ -836,7 +837,10 @@ ${scriptContent} \ if (!instructionOrOptions) { let result: ExtractResult; if (this.api) { - result = await this.api.extract({ frameId: this.rootFrameId }); + result = await this.api.extract({ + frameId: this.rootFrameId, + modelClientOptions: this.stagehand["modelClientOptions"], + }); } else { result = await this.extractHandler.extract(); } diff --git a/lib/a11y/utils.ts b/lib/a11y/utils.ts index 49c9d8ab5..d18463be9 100644 --- a/lib/a11y/utils.ts +++ b/lib/a11y/utils.ts @@ -183,7 +183,8 @@ export async function buildBackendIdMaps( if (n.contentDocument && locate(n.contentDocument)) return true; return false; } else { - if (n.backendNodeId === backendNodeId) return (iframeNode = n), true; + if (n.backendNodeId === backendNodeId) + return ((iframeNode = n), true); return ( (n.children?.some(locate) ?? false) || (n.contentDocument ? locate(n.contentDocument) : false) diff --git a/lib/api.ts b/lib/api.ts index 48bca209a..f991ce1e5 100644 --- a/lib/api.ts +++ b/lib/api.ts @@ -48,7 +48,6 @@ export class StagehandAPI { async init({ modelName, - modelApiKey, domSettleTimeoutMs, verbose, debugDom, @@ -59,11 +58,6 @@ export class StagehandAPI { browserbaseSessionCreateParams, browserbaseSessionID, }: StartSessionParams): Promise { - if (!modelApiKey) { - throw new StagehandAPIError("modelApiKey is required"); - } - this.modelApiKey = modelApiKey; - const region = browserbaseSessionCreateParams?.region; if (region && region !== "us-west-2") { return { sessionId: browserbaseSessionID ?? null, available: false }; @@ -186,10 +180,19 @@ export class StagehandAPI { const queryString = urlParams.toString(); const url = `/sessions/${this.sessionId}/${method}${queryString ? `?${queryString}` : ""}`; - const response = await this.request(url, { - method: "POST", - body: JSON.stringify(args), - }); + // Extract modelClientOptions from args if present + const modelClientOptions = ( + args as { modelClientOptions?: Record } + )?.modelClientOptions; + + const response = await this.request( + url, + { + method: "POST", + body: JSON.stringify(args), + }, + modelClientOptions, + ); if (!response.ok) { const errorBody = await response.text(); @@ -248,6 +251,7 @@ export class StagehandAPI { private async request( path: string, options: RequestInit = {}, + modelClientOptions?: Record, ): Promise { const defaultHeaders: Record = { "x-bb-api-key": this.apiKey, @@ -261,6 +265,12 @@ export class StagehandAPI { "x-sdk-version": STAGEHAND_VERSION, }; + // Add modelClientOptions as a header if provided + if (modelClientOptions) { + defaultHeaders["x-model-client-options"] = + JSON.stringify(modelClientOptions); + } + if (options.method === "POST" && options.body) { defaultHeaders["Content-Type"] = "application/json"; } diff --git a/lib/index.ts b/lib/index.ts index 3e61f473e..7d19e4198 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -45,7 +45,11 @@ import { LLMProvider } from "./llm/LLMProvider"; import { StagehandLogger } from "./logger"; import { connectToMCPServer } from "./mcp/connection"; import { resolveTools } from "./mcp/utils"; -import { isRunningInBun, loadApiKeyFromEnv } from "./utils"; +import { + isRunningInBun, + loadApiKeyFromEnv, + loadBedrockClientOptions, +} from "./utils"; dotenv.config({ path: ".env" }); @@ -587,10 +591,23 @@ export class Stagehand { if (!modelClientOptions?.apiKey) { // If no API key is provided, try to load it from the environment if (LLMProvider.getModelProvider(this.modelName) === "aisdk") { - modelApiKey = loadApiKeyFromEnv( - this.modelName.split("/")[0], - this.logger, - ); + const provider = this.modelName.split("/")[0]; + + // Special handling for Amazon Bedrock's complex authentication + if (provider === "bedrock") { + const bedrockOptions = loadBedrockClientOptions(this.logger); + this.modelClientOptions = { + ...modelClientOptions, + ...bedrockOptions, + }; + } else { + // Standard single API key handling for other AISDK providers + modelApiKey = loadApiKeyFromEnv(provider, this.logger); + this.modelClientOptions = { + ...modelClientOptions, + apiKey: modelApiKey, + }; + } } else { // Temporary add for legacy providers modelApiKey = @@ -601,11 +618,11 @@ export class Stagehand { : LLMProvider.getModelProvider(this.modelName) === "google" ? process.env.GOOGLE_API_KEY : undefined; + this.modelClientOptions = { + ...modelClientOptions, + apiKey: modelApiKey, + }; } - this.modelClientOptions = { - ...modelClientOptions, - apiKey: modelApiKey, - }; } else { this.modelClientOptions = modelClientOptions; } @@ -753,7 +770,7 @@ export class Stagehand { logger: this.logger, }); - const modelApiKey = this.modelClientOptions?.apiKey; + const modelApiKey = this.modelClientOptions?.apiKey as string; const { sessionId, available } = await this.apiClient.init({ modelName: this.modelName, modelApiKey: modelApiKey, diff --git a/lib/llm/CerebrasClient.ts b/lib/llm/CerebrasClient.ts index c86028891..8dc56f507 100644 --- a/lib/llm/CerebrasClient.ts +++ b/lib/llm/CerebrasClient.ts @@ -31,7 +31,7 @@ export class CerebrasClient extends LLMClient { enableCaching?: boolean; cache?: LLMCache; modelName: AvailableModel; - clientOptions?: OpenAI.ClientOptions; + clientOptions?: ClientOptions; userProvidedInstructions?: string; }) { super(modelName, userProvidedInstructions); diff --git a/lib/llm/GoogleClient.ts b/lib/llm/GoogleClient.ts index 5460bea73..61872f165 100644 --- a/lib/llm/GoogleClient.ts +++ b/lib/llm/GoogleClient.ts @@ -83,7 +83,7 @@ export class GoogleClient extends LLMClient { clientOptions.apiKey = loadApiKeyFromEnv("google_legacy", logger); } this.clientOptions = clientOptions; - this.client = new GoogleGenAI({ apiKey: clientOptions.apiKey }); + this.client = new GoogleGenAI({ apiKey: clientOptions.apiKey as string }); this.cache = cache; this.enableCaching = enableCaching; this.modelName = modelName; diff --git a/lib/llm/LLMProvider.ts b/lib/llm/LLMProvider.ts index 62e7c8528..0cdd7ecc7 100644 --- a/lib/llm/LLMProvider.ts +++ b/lib/llm/LLMProvider.ts @@ -6,6 +6,7 @@ import { } from "@/types/stagehandErrors"; import { anthropic, createAnthropic } from "@ai-sdk/anthropic"; import { azure, createAzure } from "@ai-sdk/azure"; +import { bedrock, createAmazonBedrock } from "@ai-sdk/amazon-bedrock"; import { cerebras, createCerebras } from "@ai-sdk/cerebras"; import { createDeepSeek, deepseek } from "@ai-sdk/deepseek"; import { createGoogleGenerativeAI, google } from "@ai-sdk/google"; @@ -38,6 +39,7 @@ const AISDKProviders: Record = { xai, azure, groq, + bedrock, cerebras, togetherai, mistral, @@ -52,6 +54,7 @@ const AISDKProvidersWithAPIKey: Record = { xai: createXai, azure: createAzure, groq: createGroq, + bedrock: createAmazonBedrock, cerebras: createCerebras, togetherai: createTogetherAI, mistral: createMistral, @@ -108,7 +111,7 @@ export function getAISDKLanguageModel( ); } // Create the provider instance with the custom configuration options - const provider = creator(modelClientOptions); + const provider = creator(modelClientOptions as Record); // Get the specific model from the provider return provider(subModelName); } else { diff --git a/lib/utils.ts b/lib/utils.ts index c1104f70c..ee8376a11 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -452,6 +452,7 @@ export const providerEnvVarMap: Partial< perplexity: "PERPLEXITY_API_KEY", azure: "AZURE_API_KEY", xai: "XAI_API_KEY", + bedrock: "AWS_BEARER_TOKEN_BEDROCK", // Primary API key method for Bedrock google_legacy: "GOOGLE_API_KEY", }; @@ -493,6 +494,75 @@ export function loadApiKeyFromEnv( return undefined; } +/** + * Loads Amazon Bedrock client configuration from environment variables. + * Supports both API key authentication and SigV4 authentication methods. + * @param logger Logger function for info/error messages + * @returns Bedrock client options object or undefined if no authentication method is available + */ +export function loadBedrockClientOptions( + logger: (logLine: LogLine) => void, +): Record | undefined { + // Authentication precedence: + // 1. API key from AWS_BEARER_TOKEN_BEDROCK (recommended) + // 2. SigV4 authentication using AWS credentials + + const bearerToken = process.env.AWS_BEARER_TOKEN_BEDROCK; + const region = + process.env.AWS_DEFAULT_REGION || process.env.AWS_REGION || "us-east-1"; // Default to us-east-1 + + // Method 1: API key authentication (recommended) + if (bearerToken && bearerToken.length > 0) { + logger({ + category: "init", + message: "Using Amazon Bedrock API key authentication", + level: 1, + }); + + const config: Record = { + apiKey: bearerToken, + region: region, // Always include region (defaults to us-east-1) + }; + + return config; + } + + // Method 2: Check for SigV4 authentication credentials + const accessKeyId = process.env.AWS_ACCESS_KEY_ID; + const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY; + const sessionToken = process.env.AWS_SESSION_TOKEN; + + if (accessKeyId && secretAccessKey) { + logger({ + category: "init", + message: "Using Amazon Bedrock SigV4 authentication", + level: 1, + }); + + const config: Record = { + accessKeyId, + secretAccessKey, + region: region, // Always include region (defaults to us-east-1) + }; + + // Add session token if present (for temporary credentials) + if (sessionToken && sessionToken.length > 0) { + config.sessionToken = sessionToken; + } + + return config; + } + + logger({ + category: "init", + message: + "No Amazon Bedrock authentication credentials found. Please set either AWS_BEARER_TOKEN_BEDROCK for API key auth or AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY (and optionally AWS_SESSION_TOKEN) for SigV4 auth", + level: 0, + }); + + return undefined; +} + export function trimTrailingTextNode( path: string | undefined, ): string | undefined { diff --git a/package.json b/package.json index 3c7f019da..427b281e2 100644 --- a/package.json +++ b/package.json @@ -83,11 +83,10 @@ "pino-pretty": "^13.0.0", "playwright": "^1.52.0", "ws": "^8.18.0", - "zod-to-json-schema": "^3.23.5" - }, - "optionalDependencies": { + "zod-to-json-schema": "^3.23.5", "@ai-sdk/anthropic": "^1.2.6", "@ai-sdk/azure": "^1.3.19", + "@ai-sdk/amazon-bedrock": "^1.0.0", "@ai-sdk/cerebras": "^0.2.6", "@ai-sdk/deepseek": "^0.2.13", "@ai-sdk/google": "^1.2.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8a8340907..a1022ced5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,42 @@ importers: .: dependencies: + '@ai-sdk/amazon-bedrock': + specifier: ^1.0.0 + version: 1.1.6(zod@3.25.67) + '@ai-sdk/anthropic': + specifier: ^1.2.6 + version: 1.2.12(zod@3.25.67) + '@ai-sdk/azure': + specifier: ^1.3.19 + version: 1.3.25(zod@3.25.67) + '@ai-sdk/cerebras': + specifier: ^0.2.6 + version: 0.2.16(zod@3.25.67) + '@ai-sdk/deepseek': + specifier: ^0.2.13 + version: 0.2.16(zod@3.25.67) + '@ai-sdk/google': + specifier: ^1.2.6 + version: 1.2.22(zod@3.25.67) + '@ai-sdk/groq': + specifier: ^1.2.4 + version: 1.2.9(zod@3.25.67) + '@ai-sdk/mistral': + specifier: ^1.2.7 + version: 1.2.8(zod@3.25.67) + '@ai-sdk/openai': + specifier: ^1.0.14 + version: 1.3.24(zod@3.25.67) + '@ai-sdk/perplexity': + specifier: ^1.1.7 + version: 1.1.9(zod@3.25.67) + '@ai-sdk/togetherai': + specifier: ^0.2.6 + version: 0.2.16(zod@3.25.67) + '@ai-sdk/xai': + specifier: ^1.2.15 + version: 1.2.18(zod@3.25.67) '@anthropic-ai/sdk': specifier: 0.39.0 version: 0.39.0 @@ -35,6 +71,9 @@ importers: fetch-cookie: specifier: ^3.1.0 version: 3.1.0 + ollama-ai-provider: + specifier: ^1.2.0 + version: 1.2.0(zod@3.25.67) openai: specifier: ^4.87.1 version: 4.104.0(ws@8.18.3)(zod@3.25.67) @@ -56,43 +95,6 @@ importers: zod-to-json-schema: specifier: ^3.23.5 version: 3.24.6(zod@3.25.67) - optionalDependencies: - '@ai-sdk/anthropic': - specifier: ^1.2.6 - version: 1.2.12(zod@3.25.67) - '@ai-sdk/azure': - specifier: ^1.3.19 - version: 1.3.25(zod@3.25.67) - '@ai-sdk/cerebras': - specifier: ^0.2.6 - version: 0.2.16(zod@3.25.67) - '@ai-sdk/deepseek': - specifier: ^0.2.13 - version: 0.2.16(zod@3.25.67) - '@ai-sdk/google': - specifier: ^1.2.6 - version: 1.2.22(zod@3.25.67) - '@ai-sdk/groq': - specifier: ^1.2.4 - version: 1.2.9(zod@3.25.67) - '@ai-sdk/mistral': - specifier: ^1.2.7 - version: 1.2.8(zod@3.25.67) - '@ai-sdk/openai': - specifier: ^1.0.14 - version: 1.3.24(zod@3.25.67) - '@ai-sdk/perplexity': - specifier: ^1.1.7 - version: 1.1.9(zod@3.25.67) - '@ai-sdk/togetherai': - specifier: ^0.2.6 - version: 0.2.16(zod@3.25.67) - '@ai-sdk/xai': - specifier: ^1.2.15 - version: 1.2.18(zod@3.25.67) - ollama-ai-provider: - specifier: ^1.2.0 - version: 1.2.0(zod@3.25.67) devDependencies: '@changesets/changelog-github': specifier: ^0.5.0 @@ -135,7 +137,7 @@ importers: version: 0.0.64 braintrust: specifier: ^0.0.171 - version: 0.0.171(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.8))(svelte@5.38.8)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) + version: 0.0.171(@aws-sdk/credential-provider-web-identity@3.888.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.10))(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) chalk: specifier: ^5.4.1 version: 5.6.2 @@ -218,6 +220,12 @@ importers: packages: + '@ai-sdk/amazon-bedrock@1.1.6': + resolution: {integrity: sha512-h6SJWpku+i8OsSz0A4RT2g2uD+3E0SUgWHsWRIpxmPNgM1DnH6lgSby5sxqAZDY5xJyJtRFW5vB9G3GEBjHy/g==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + '@ai-sdk/anthropic@1.2.12': resolution: {integrity: sha512-YSzjlko7JvuiyQFmI9RN1tNZdEiZxc+6xld/0tq/VkJaHpEzGAb1yiNxxvmYVcjvfu/PcvCxAAYXmTYQQ63IHQ==} engines: {node: '>=18'} @@ -287,6 +295,15 @@ packages: zod: optional: true + '@ai-sdk/provider-utils@2.1.6': + resolution: {integrity: sha512-Pfyaj0QZS22qyVn5Iz7IXcJ8nKIKlu2MeSAdKJzTwkAks7zdLaKVB+396Rqcp1bfQnxl7vaduQVMQiXUrgK8Gw==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + '@ai-sdk/provider-utils@2.2.8': resolution: {integrity: sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==} engines: {node: '>=18'} @@ -301,6 +318,10 @@ packages: resolution: {integrity: sha512-dQkfBDs2lTYpKM8389oopPdQgIU007GQyCbuPPrV+K6MtSII3HBfE0stUIMXUb44L+LK1t6GXPP7wjSzjO6uKg==} engines: {node: '>=18'} + '@ai-sdk/provider@1.0.7': + resolution: {integrity: sha512-q1PJEZ0qD9rVR+8JFEd01/QM++csMT5UVwYXSN2u54BrVw/D8TZLTeg2FEfKK00DgAx0UtWd8XOhhwITP9BT5g==} + engines: {node: '>=18'} + '@ai-sdk/provider@1.1.3': resolution: {integrity: sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==} engines: {node: '>=18'} @@ -409,6 +430,139 @@ packages: '@asyncapi/specs@6.10.0': resolution: {integrity: sha512-vB5oKLsdrLUORIZ5BXortZTlVyGWWMC1Nud/0LtgxQ3Yn2738HigAD6EVqScvpPsDUI/bcLVsYEXN4dtXQHVng==} + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-bedrock-runtime@3.888.0': + resolution: {integrity: sha512-XuTayKaxjQkBtasJp4+mzXwE06k8YML+VKMcYEq096JFC4/bwQA1TrF/T8wlE6Xw6FD/XU2OUdLfq3j/QgEOgA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sso@3.888.0': + resolution: {integrity: sha512-8CLy/ehGKUmekjH+VtZJ4w40PqDg3u0K7uPziq/4P8Q7LLgsy8YQoHNbuY4am7JU3HWrqLXJI9aaz1+vPGPoWA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/core@3.888.0': + resolution: {integrity: sha512-L3S2FZywACo4lmWv37Y4TbefuPJ1fXWyWwIJ3J4wkPYFJ47mmtUPqThlVrSbdTHkEjnZgJe5cRfxk0qCLsFh1w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-env@3.888.0': + resolution: {integrity: sha512-shPi4AhUKbIk7LugJWvNpeZA8va7e5bOHAEKo89S0Ac8WDZt2OaNzbh/b9l0iSL2eEyte8UgIsYGcFxOwIF1VA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-http@3.888.0': + resolution: {integrity: sha512-Jvuk6nul0lE7o5qlQutcqlySBHLXOyoPtiwE6zyKbGc7RVl0//h39Lab7zMeY2drMn8xAnIopL4606Fd8JI/Hw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-ini@3.888.0': + resolution: {integrity: sha512-M82ItvS5yq+tO6ZOV1ruaVs2xOne+v8HW85GFCXnz8pecrzYdgxh6IsVqEbbWruryG/mUGkWMbkBZoEsy4MgyA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-node@3.888.0': + resolution: {integrity: sha512-KCrQh1dCDC8Y+Ap3SZa6S81kHk+p+yAaOQ5jC3dak4zhHW3RCrsGR/jYdemTOgbEGcA6ye51UbhWfrrlMmeJSA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-process@3.888.0': + resolution: {integrity: sha512-+aX6piSukPQ8DUS4JAH344GePg8/+Q1t0+kvSHAZHhYvtQ/1Zek3ySOJWH2TuzTPCafY4nmWLcQcqvU1w9+4Lw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-sso@3.888.0': + resolution: {integrity: sha512-b1ZJji7LJ6E/j1PhFTyvp51in2iCOQ3VP6mj5H6f5OUnqn7efm41iNMoinKr87n0IKZw7qput5ggXVxEdPhouA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.888.0': + resolution: {integrity: sha512-7P0QNtsDzMZdmBAaY/vY1BsZHwTGvEz3bsn2bm5VSKFAeMmZqsHK1QeYdNsFjLtegnVh+wodxMq50jqLv3LFlA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/eventstream-handler-node@3.887.0': + resolution: {integrity: sha512-BFzSgyrbCOr9O2bOZCq7uOw4fuJP0Lpt7++41YNfzAXInNSYcSKFLDhmnrDnSSqJ+yC7SWOAiPYSV5o66YNzFA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-eventstream@3.887.0': + resolution: {integrity: sha512-OeZyhx9O5u3aYmkKspByzuUes2AUbbZjr52SM2KmP/9qRBuQ20rUMir4d6iYtN0Ha24OOkhDOlEtEjkEN546rQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-host-header@3.887.0': + resolution: {integrity: sha512-ulzqXv6NNqdu/kr0sgBYupWmahISHY+azpJidtK6ZwQIC+vBUk9NdZeqQpy7KVhIk2xd4+5Oq9rxapPwPI21CA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-logger@3.887.0': + resolution: {integrity: sha512-YbbgLI6jKp2qSoAcHnXrQ5jcuc5EYAmGLVFgMVdk8dfCfJLfGGSaOLxF4CXC7QYhO50s+mPPkhBYejCik02Kug==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.887.0': + resolution: {integrity: sha512-tjrUXFtQnFLo+qwMveq5faxP5MQakoLArXtqieHphSqZTXm21wDJM73hgT4/PQQGTwgYjDKqnqsE1hvk0hcfDw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-user-agent@3.888.0': + resolution: {integrity: sha512-ZkcUkoys8AdrNNG7ATjqw2WiXqrhTvT+r4CIK3KhOqIGPHX0p0DQWzqjaIl7ZhSUToKoZ4Ud7MjF795yUr73oA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-websocket@3.887.0': + resolution: {integrity: sha512-qEv2c3sritwdYUERMYmLCt3kw/MI8or0s1C8/y5CyINJ5DAlwlnyHbKxKvG0+QuUXEctpuhji2ZO3Cb0kmYD2Q==} + engines: {node: '>= 14.0.0'} + + '@aws-sdk/nested-clients@3.888.0': + resolution: {integrity: sha512-py4o4RPSGt+uwGvSBzR6S6cCBjS4oTX5F8hrHFHfPCdIOMVjyOBejn820jXkCrcdpSj3Qg1yUZXxsByvxc9Lyg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/region-config-resolver@3.887.0': + resolution: {integrity: sha512-VdSMrIqJ3yjJb/fY+YAxrH/lCVv0iL8uA+lbMNfQGtO5tB3Zx6SU9LEpUwBNX8fPK1tUpI65CNE4w42+MY/7Mg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/token-providers@3.888.0': + resolution: {integrity: sha512-WA3NF+3W8GEuCMG1WvkDYbB4z10G3O8xuhT7QSjhvLYWQ9CPt3w4VpVIfdqmUn131TCIbhCzD0KN/1VJTjAjyw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/types@3.887.0': + resolution: {integrity: sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-endpoints@3.887.0': + resolution: {integrity: sha512-kpegvT53KT33BMeIcGLPA65CQVxLUL/C3gTz9AzlU/SDmeusBHX4nRApAicNzI/ltQ5lxZXbQn18UczzBuwF1w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-format-url@3.887.0': + resolution: {integrity: sha512-ABDSP6KsrdD+JC7qwMqUpLXqPidvfgT+Q+W8sGGuk/IBy7smgZDOdYSZLE4VBbQpH3N/zSJuslAWhL2x37Qwww==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-locate-window@3.873.0': + resolution: {integrity: sha512-xcVhZF6svjM5Rj89T1WzkjQmrTF6dpR2UvIHPMTnSZoNe6CixejPZ6f0JJ2kAhO8H+dUHwNBlsUgOTIKiK/Syg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-user-agent-browser@3.887.0': + resolution: {integrity: sha512-X71UmVsYc6ZTH4KU6hA5urOzYowSXc3qvroagJNLJYU1ilgZ529lP4J9XOYfEvTXkLR1hPFSRxa43SrwgelMjA==} + + '@aws-sdk/util-user-agent-node@3.888.0': + resolution: {integrity: sha512-rSB3OHyuKXotIGfYEo//9sU0lXAUrTY28SUUnxzOGYuQsAt0XR5iYwBAp+RjV6x8f+Hmtbg0PdCsy1iNAXa0UQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/xml-builder@3.887.0': + resolution: {integrity: sha512-lMwgWK1kNgUhHGfBvO/5uLe7TKhycwOn3eRCqsKPT9aPCx/HWuTlpcQp8oW2pCRGLS7qzcxqpQulcD+bbUL7XQ==} + engines: {node: '>=18.0.0'} + + '@aws/lambda-invoke-store@0.0.1': + resolution: {integrity: sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==} + engines: {node: '>=18.0.0'} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} @@ -1246,8 +1400,8 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.30': - resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@jsep-plugin/assignment@1.3.0': resolution: {integrity: sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==} @@ -1523,6 +1677,194 @@ packages: resolution: {integrity: sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==} engines: {node: '>=12'} + '@smithy/abort-controller@4.1.1': + resolution: {integrity: sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@4.2.1': + resolution: {integrity: sha512-FXil8q4QN7mgKwU2hCLm0ltab8NyY/1RiqEf25Jnf6WLS3wmb11zGAoLETqg1nur2Aoibun4w4MjeN9CMJ4G6A==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.11.0': + resolution: {integrity: sha512-Abs5rdP1o8/OINtE49wwNeWuynCu0kme1r4RI3VXVrHr4odVDG7h7mTnw1WXXfN5Il+c25QOnrdL2y56USfxkA==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.1.1': + resolution: {integrity: sha512-1WdBfM9DwA59pnpIizxnUvBf/de18p4GP+6zP2AqrlFzoW3ERpZaT4QueBR0nS9deDMaQRkBlngpVlnkuuTisQ==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-codec@4.1.1': + resolution: {integrity: sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-browser@4.1.1': + resolution: {integrity: sha512-Q9QWdAzRaIuVkefupRPRFAasaG/droBqn1feiMnmLa+LLEUG45pqX1+FurHFmlqiCfobB3nUlgoJfeXZsr7MPA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-config-resolver@4.2.1': + resolution: {integrity: sha512-oSUkF9zDN9zcOUBMtxp8RewJlh71E9NoHWU8jE3hU9JMYCsmW4assVTpgic/iS3/dM317j6hO5x18cc3XrfvEw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-node@4.1.1': + resolution: {integrity: sha512-tn6vulwf/ScY0vjhzptSJuDJJqlhNtUjkxJ4wiv9E3SPoEqTEKbaq6bfqRO7nvhTG29ALICRcvfFheOUPl8KNA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-universal@4.1.1': + resolution: {integrity: sha512-uLOAiM/Dmgh2CbEXQx+6/ssK7fbzFhd+LjdyFxXid5ZBCbLHTFHLdD/QbXw5aEDsLxQhgzDxLLsZhsftAYwHJA==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.2.1': + resolution: {integrity: sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@4.1.1': + resolution: {integrity: sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@4.1.1': + resolution: {integrity: sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.1.0': + resolution: {integrity: sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@4.1.1': + resolution: {integrity: sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@4.2.1': + resolution: {integrity: sha512-fUTMmQvQQZakXOuKizfu7fBLDpwvWZjfH6zUK2OLsoNZRZGbNUdNSdLJHpwk1vS208jtDjpUIskh+JoA8zMzZg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.2.1': + resolution: {integrity: sha512-JzfvjwSJXWRl7LkLgIRTUTd2Wj639yr3sQGpViGNEOjtb0AkAuYqRAHs+jSOI/LPC0ZTjmFVVtfrCICMuebexw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@4.1.1': + resolution: {integrity: sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@4.1.1': + resolution: {integrity: sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@4.2.1': + resolution: {integrity: sha512-AIA0BJZq2h295J5NeCTKhg1WwtdTA/GqBCaVjk30bDgMHwniUETyh5cP9IiE9VrId7Kt8hS7zvREVMTv1VfA6g==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.2.1': + resolution: {integrity: sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@4.1.1': + resolution: {integrity: sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@5.2.1': + resolution: {integrity: sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-builder@4.1.1': + resolution: {integrity: sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-parser@4.1.1': + resolution: {integrity: sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng==} + engines: {node: '>=18.0.0'} + + '@smithy/service-error-classification@4.1.1': + resolution: {integrity: sha512-Iam75b/JNXyDE41UvrlM6n8DNOa/r1ylFyvgruTUx7h2Uk7vDNV9AAwP1vfL1fOL8ls0xArwEGVcGZVd7IO/Cw==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.1.1': + resolution: {integrity: sha512-YkpikhIqGc4sfXeIbzSj10t2bJI/sSoP5qxLue6zG+tEE3ngOBSm8sO3+djacYvS/R5DfpxN/L9CyZsvwjWOAQ==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.2.1': + resolution: {integrity: sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@4.6.1': + resolution: {integrity: sha512-WolVLDb9UTPMEPPOncrCt6JmAMCSC/V2y5gst2STWJ5r7+8iNac+EFYQnmvDCYMfOLcilOSEpm5yXZXwbLak1Q==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.5.0': + resolution: {integrity: sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@4.1.1': + resolution: {integrity: sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@4.1.0': + resolution: {integrity: sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@4.1.0': + resolution: {integrity: sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.1.0': + resolution: {integrity: sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@4.1.0': + resolution: {integrity: sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@4.1.0': + resolution: {integrity: sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.1.1': + resolution: {integrity: sha512-hA1AKIHFUMa9Tl6q6y8p0pJ9aWHCCG8s57flmIyLE0W7HcJeYrYtnqXDcGnftvXEhdQnSexyegXnzzTGk8bKLA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.1.1': + resolution: {integrity: sha512-RGSpmoBrA+5D2WjwtK7tto6Pc2wO9KSXKLpLONhFZ8VyuCbqlLdiDAfuDTNY9AJe4JoE+Cx806cpTQQoQ71zPQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.1.1': + resolution: {integrity: sha512-qB4R9kO0SetA11Rzu6MVGFIaGYX3p6SGGGfWwsKnC6nXIf0n/0AKVwRTsYsz9ToN8CeNNtNgQRwKFBndGJZdyw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@4.1.0': + resolution: {integrity: sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@4.1.1': + resolution: {integrity: sha512-CGmZ72mL29VMfESz7S6dekqzCh8ZISj3B+w0g1hZFXaOjGTVaSqfAEFAq8EGp8fUL+Q2l8aqNmt8U1tglTikeg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.1.1': + resolution: {integrity: sha512-jGeybqEZ/LIordPLMh5bnmnoIgsqnp4IEimmUp5c5voZ8yx+5kAlN5+juyr7p+f7AtZTgvhmInQk4Q0UVbrZ0Q==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.3.1': + resolution: {integrity: sha512-khKkW/Jqkgh6caxMWbMuox9+YfGlsk9OnHOYCGVEdYQb/XVzcORXHLYUubHmmda0pubEDncofUrPNniS9d+uAA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@4.1.0': + resolution: {integrity: sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.1.0': + resolution: {integrity: sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==} + engines: {node: '>=18.0.0'} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -1715,6 +2057,9 @@ packages: '@types/uuid@10.0.0': resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} @@ -2046,10 +2391,10 @@ packages: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} - b4a@1.7.0: - resolution: {integrity: sha512-KtsH1alSKomfNi/yDAFaD8PPFfi0LxJCEbPuzogcXrMF+yH40Z1ykTDo2vyxuQfN1FLjv0LFM7CadLHEPrVifw==} + b4a@1.7.1: + resolution: {integrity: sha512-ZovbrBV0g6JxK5cGUF1Suby1vLfKjv4RWi8IxoaO/Mon8BDD9I21RxjHFtgQ+kskJqLAVyQZly3uMBui+vhc8Q==} peerDependencies: - react-native-b4a: ^0.0.0 + react-native-b4a: '*' peerDependenciesMeta: react-native-b4a: optional: true @@ -2063,8 +2408,8 @@ packages: bare-events@2.6.1: resolution: {integrity: sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==} - bare-fs@4.3.3: - resolution: {integrity: sha512-W+ZpiQx1i0dm073So22v3jColDtvyqSTyUYEnooYwKcl+SHuqnQGKyuHdwigQffWJV5ghKtskVH7ydAkBVKQZQ==} + bare-fs@4.4.0: + resolution: {integrity: sha512-DfdhZD+8fPM80vB28NMIlQIW4FBdkRMNLIa8o5HPSfGlxXek1C34qd98YItQzSl86Kt2IGom9+izFCrNuR7BXw==} engines: {bare: '>=1.16.0'} peerDependencies: bare-buffer: '*' @@ -2136,6 +2481,9 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + bowser@2.12.1: + resolution: {integrity: sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -2926,6 +3274,10 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-xml-parser@5.2.5: + resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} + hasBin: true + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -3713,8 +4065,8 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - leven@4.0.0: - resolution: {integrity: sha512-puehA3YKku3osqPlNuzGDUHq8WpwXupUg1V6NXdV38G+gr+gkBwFC8g1b/+YcIvp8gnqVIus+eJCH/eGsRmJNw==} + leven@4.1.0: + resolution: {integrity: sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} levn@0.4.1: @@ -4725,8 +5077,8 @@ packages: remark-math@6.0.0: resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} - remark-mdx-remove-esm@1.2.0: - resolution: {integrity: sha512-BOZDeA9EuHDxQsvX7y4ovdlP8dk2/ToDGjOTrT5gs57OqTZuH4J1Tn8XjUFa221xvfXxiKaWrKT04waQ+tYydg==} + remark-mdx-remove-esm@1.2.1: + resolution: {integrity: sha512-Vz1GKmRR9u7ij8TTf88DK8dFc/mVror9YUJekl1uP+S0sTzHxGdszJMeBbh96aIR+ZiI2QRKHu2UsV+/pWj7uQ==} peerDependencies: unified: ^11 @@ -5125,6 +5477,9 @@ packages: resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} engines: {node: '>=14.16'} + strnum@2.1.1: + resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} + style-to-js@1.1.17: resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} @@ -5144,8 +5499,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte@5.38.8: - resolution: {integrity: sha512-UDpTbM/iuZ4MaMnn4ODB3rf5JKDyPOi5oJcopP0j7YHQ9BuJtsAqsR71r2N6AnJf7ygbalTJU5y8eSWGAQZjlQ==} + svelte@5.38.10: + resolution: {integrity: sha512-UY+OhrWK7WI22bCZ00P/M3HtyWgwJPi9IxSRkoAE2MeAy6kl7ZlZWJZ8RaB+X4KD/G+wjis+cGVnVYaoqbzBqg==} engines: {node: '>=18'} swr@2.3.6: @@ -5652,12 +6007,20 @@ packages: snapshots: + '@ai-sdk/amazon-bedrock@1.1.6(zod@3.25.67)': + dependencies: + '@ai-sdk/provider': 1.0.7 + '@ai-sdk/provider-utils': 2.1.6(zod@3.25.67) + '@aws-sdk/client-bedrock-runtime': 3.888.0 + zod: 3.25.67 + transitivePeerDependencies: + - aws-crt + '@ai-sdk/anthropic@1.2.12(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/azure@1.3.25(zod@3.25.67)': dependencies: @@ -5665,7 +6028,6 @@ snapshots: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/cerebras@0.2.16(zod@3.25.67)': dependencies: @@ -5673,7 +6035,6 @@ snapshots: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/deepseek@0.2.16(zod@3.25.67)': dependencies: @@ -5681,54 +6042,56 @@ snapshots: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/google@1.2.22(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/groq@1.2.9(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/mistral@1.2.8(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/openai-compatible@0.2.16(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/openai@1.3.24(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/perplexity@1.1.9(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true - '@ai-sdk/provider-utils@1.0.22(zod@3.25.67)': + '@ai-sdk/provider-utils@1.0.22(zod@3.25.67)': + dependencies: + '@ai-sdk/provider': 0.0.26 + eventsource-parser: 1.1.2 + nanoid: 3.3.11 + secure-json-parse: 2.7.0 + optionalDependencies: + zod: 3.25.67 + + '@ai-sdk/provider-utils@2.1.6(zod@3.25.67)': dependencies: - '@ai-sdk/provider': 0.0.26 - eventsource-parser: 1.1.2 + '@ai-sdk/provider': 1.0.7 + eventsource-parser: 3.0.6 nanoid: 3.3.11 secure-json-parse: 2.7.0 optionalDependencies: @@ -5749,6 +6112,10 @@ snapshots: dependencies: json-schema: 0.4.0 + '@ai-sdk/provider@1.0.7': + dependencies: + json-schema: 0.4.0 + '@ai-sdk/provider@1.1.3': dependencies: json-schema: 0.4.0 @@ -5780,13 +6147,13 @@ snapshots: transitivePeerDependencies: - zod - '@ai-sdk/svelte@0.0.57(svelte@5.38.8)(zod@3.25.67)': + '@ai-sdk/svelte@0.0.57(svelte@5.38.10)(zod@3.25.67)': dependencies: '@ai-sdk/provider-utils': 1.0.22(zod@3.25.67) '@ai-sdk/ui-utils': 0.0.50(zod@3.25.67) - sswr: 2.2.0(svelte@5.38.8) + sswr: 2.2.0(svelte@5.38.10) optionalDependencies: - svelte: 5.38.8 + svelte: 5.38.10 transitivePeerDependencies: - zod @@ -5796,7 +6163,6 @@ snapshots: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/ui-utils@0.0.50(zod@3.25.67)': dependencies: @@ -5831,7 +6197,6 @@ snapshots: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@alcalzone/ansi-tokenize@0.2.0': dependencies: @@ -5891,6 +6256,410 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.887.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-locate-window': 3.873.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.887.0 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/client-bedrock-runtime@3.888.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/credential-provider-node': 3.888.0 + '@aws-sdk/eventstream-handler-node': 3.887.0 + '@aws-sdk/middleware-eventstream': 3.887.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.888.0 + '@aws-sdk/middleware-websocket': 3.887.0 + '@aws-sdk/region-config-resolver': 3.887.0 + '@aws-sdk/token-providers': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.887.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.888.0 + '@smithy/config-resolver': 4.2.1 + '@smithy/core': 3.11.0 + '@smithy/eventstream-serde-browser': 4.1.1 + '@smithy/eventstream-serde-config-resolver': 4.2.1 + '@smithy/eventstream-serde-node': 4.1.1 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.1 + '@smithy/middleware-retry': 4.2.1 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.1 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.1 + '@smithy/util-defaults-mode-node': 4.1.1 + '@smithy/util-endpoints': 3.1.1 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@smithy/util-stream': 4.3.1 + '@smithy/util-utf8': 4.1.0 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.888.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.888.0 + '@aws-sdk/region-config-resolver': 3.887.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.887.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.888.0 + '@smithy/config-resolver': 4.2.1 + '@smithy/core': 3.11.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.1 + '@smithy/middleware-retry': 4.2.1 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.1 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.1 + '@smithy/util-defaults-mode-node': 4.1.1 + '@smithy/util-endpoints': 3.1.1 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.888.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@aws-sdk/xml-builder': 3.887.0 + '@smithy/core': 3.11.0 + '@smithy/node-config-provider': 4.2.1 + '@smithy/property-provider': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/signature-v4': 5.2.1 + '@smithy/smithy-client': 4.6.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-utf8': 4.1.0 + fast-xml-parser: 5.2.5 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.888.0': + dependencies: + '@aws-sdk/core': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.888.0': + dependencies: + '@aws-sdk/core': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/property-provider': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.1 + '@smithy/types': 4.5.0 + '@smithy/util-stream': 4.3.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.888.0': + dependencies: + '@aws-sdk/core': 3.888.0 + '@aws-sdk/credential-provider-env': 3.888.0 + '@aws-sdk/credential-provider-http': 3.888.0 + '@aws-sdk/credential-provider-process': 3.888.0 + '@aws-sdk/credential-provider-sso': 3.888.0 + '@aws-sdk/credential-provider-web-identity': 3.888.0 + '@aws-sdk/nested-clients': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@smithy/credential-provider-imds': 4.1.1 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.888.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.888.0 + '@aws-sdk/credential-provider-http': 3.888.0 + '@aws-sdk/credential-provider-ini': 3.888.0 + '@aws-sdk/credential-provider-process': 3.888.0 + '@aws-sdk/credential-provider-sso': 3.888.0 + '@aws-sdk/credential-provider-web-identity': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@smithy/credential-provider-imds': 4.1.1 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.888.0': + dependencies: + '@aws-sdk/core': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.888.0': + dependencies: + '@aws-sdk/client-sso': 3.888.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/token-providers': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.888.0': + dependencies: + '@aws-sdk/core': 3.888.0 + '@aws-sdk/nested-clients': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/eventstream-handler-node@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/eventstream-codec': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-eventstream@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-host-header@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-logger@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-recursion-detection@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@aws/lambda-invoke-store': 0.0.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-user-agent@3.888.0': + dependencies: + '@aws-sdk/core': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.887.0 + '@smithy/core': 3.11.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-websocket@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-format-url': 3.887.0 + '@smithy/eventstream-codec': 4.1.1 + '@smithy/eventstream-serde-browser': 4.1.1 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/signature-v4': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-hex-encoding': 4.1.0 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.888.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.888.0 + '@aws-sdk/middleware-host-header': 3.887.0 + '@aws-sdk/middleware-logger': 3.887.0 + '@aws-sdk/middleware-recursion-detection': 3.887.0 + '@aws-sdk/middleware-user-agent': 3.888.0 + '@aws-sdk/region-config-resolver': 3.887.0 + '@aws-sdk/types': 3.887.0 + '@aws-sdk/util-endpoints': 3.887.0 + '@aws-sdk/util-user-agent-browser': 3.887.0 + '@aws-sdk/util-user-agent-node': 3.888.0 + '@smithy/config-resolver': 4.2.1 + '@smithy/core': 3.11.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.1 + '@smithy/middleware-retry': 4.2.1 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.1 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.1 + '@smithy/util-defaults-mode-node': 4.1.1 + '@smithy/util-endpoints': 3.1.1 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/node-config-provider': 4.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-config-provider': 4.1.0 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.888.0': + dependencies: + '@aws-sdk/core': 3.888.0 + '@aws-sdk/nested-clients': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.887.0': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/util-endpoints@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-endpoints': 3.1.1 + tslib: 2.8.1 + + '@aws-sdk/util-format-url@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/querystring-builder': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.873.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-browser@3.887.0': + dependencies: + '@aws-sdk/types': 3.887.0 + '@smithy/types': 4.5.0 + bowser: 2.12.1 + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-node@3.888.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.888.0 + '@aws-sdk/types': 3.887.0 + '@smithy/node-config-provider': 4.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.887.0': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws/lambda-invoke-store@0.0.1': {} + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 @@ -6590,18 +7359,18 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/remapping@2.3.5': dependencies: '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.30 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.30': + '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 @@ -6851,7 +7620,7 @@ snapshots: ajv-draft-04: 1.0.0(ajv@8.17.1) ajv-formats: 3.0.1(ajv@8.17.1) jsonpointer: 5.0.1 - leven: 4.0.0 + leven: 4.1.0 yaml: 2.8.1 '@mintlify/prebuild@1.0.646(@types/react@19.1.12)(react-dom@18.3.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2)': @@ -7135,6 +7904,308 @@ snapshots: dependencies: escape-string-regexp: 5.0.0 + '@smithy/abort-controller@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/config-resolver@4.2.1': + dependencies: + '@smithy/node-config-provider': 4.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-config-provider': 4.1.0 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 + + '@smithy/core@3.11.0': + dependencies: + '@smithy/middleware-serde': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-stream': 4.3.1 + '@smithy/util-utf8': 4.1.0 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + + '@smithy/credential-provider-imds@4.1.1': + dependencies: + '@smithy/node-config-provider': 4.2.1 + '@smithy/property-provider': 4.1.1 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + tslib: 2.8.1 + + '@smithy/eventstream-codec@4.1.1': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.5.0 + '@smithy/util-hex-encoding': 4.1.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-browser@4.1.1': + dependencies: + '@smithy/eventstream-serde-universal': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-config-resolver@4.2.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-node@4.1.1': + dependencies: + '@smithy/eventstream-serde-universal': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-universal@4.1.1': + dependencies: + '@smithy/eventstream-codec': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.2.1': + dependencies: + '@smithy/protocol-http': 5.2.1 + '@smithy/querystring-builder': 4.1.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + tslib: 2.8.1 + + '@smithy/hash-node@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.1.0': + dependencies: + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.1.1': + dependencies: + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.2.1': + dependencies: + '@smithy/core': 3.11.0 + '@smithy/middleware-serde': 4.1.1 + '@smithy/node-config-provider': 4.2.1 + '@smithy/shared-ini-file-loader': 4.1.1 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.2.1': + dependencies: + '@smithy/node-config-provider': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/service-error-classification': 4.1.1 + '@smithy/smithy-client': 4.6.1 + '@smithy/types': 4.5.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.1 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + + '@smithy/middleware-serde@4.1.1': + dependencies: + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.2.1': + dependencies: + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.2.1': + dependencies: + '@smithy/abort-controller': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/querystring-builder': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/property-provider@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/protocol-http@5.2.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/querystring-builder@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + '@smithy/util-uri-escape': 4.1.0 + tslib: 2.8.1 + + '@smithy/querystring-parser@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/service-error-classification@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + + '@smithy/shared-ini-file-loader@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/signature-v4@5.2.1': + dependencies: + '@smithy/is-array-buffer': 4.1.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-hex-encoding': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-uri-escape': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + + '@smithy/smithy-client@4.6.1': + dependencies: + '@smithy/core': 3.11.0 + '@smithy/middleware-endpoint': 4.2.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-stream': 4.3.1 + tslib: 2.8.1 + + '@smithy/types@4.5.0': + dependencies: + tslib: 2.8.1 + + '@smithy/url-parser@4.1.1': + dependencies: + '@smithy/querystring-parser': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/util-base64@4.1.0': + dependencies: + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.1.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-body-length-node@4.1.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-buffer-from@4.1.0': + dependencies: + '@smithy/is-array-buffer': 4.1.0 + tslib: 2.8.1 + + '@smithy/util-config-provider@4.1.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-defaults-mode-browser@4.1.1': + dependencies: + '@smithy/property-provider': 4.1.1 + '@smithy/smithy-client': 4.6.1 + '@smithy/types': 4.5.0 + bowser: 2.12.1 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-node@4.1.1': + dependencies: + '@smithy/config-resolver': 4.2.1 + '@smithy/credential-provider-imds': 4.1.1 + '@smithy/node-config-provider': 4.2.1 + '@smithy/property-provider': 4.1.1 + '@smithy/smithy-client': 4.6.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/util-endpoints@3.1.1': + dependencies: + '@smithy/node-config-provider': 4.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/util-hex-encoding@4.1.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-middleware@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/util-retry@4.1.1': + dependencies: + '@smithy/service-error-classification': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/util-stream@4.3.1': + dependencies: + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-hex-encoding': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + + '@smithy/util-uri-escape@4.1.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@4.1.0': + dependencies: + '@smithy/util-buffer-from': 4.1.0 + tslib: 2.8.1 + '@socket.io/component-emitter@3.1.2': {} '@stoplight/better-ajv-errors@1.0.3(ajv@8.17.1)': @@ -7411,6 +8482,8 @@ snapshots: '@types/uuid@10.0.0': {} + '@types/uuid@9.0.8': {} + '@types/ws@8.18.1': dependencies: '@types/node': 20.19.13 @@ -7515,7 +8588,9 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vercel/functions@1.6.0': {} + '@vercel/functions@1.6.0(@aws-sdk/credential-provider-web-identity@3.888.0)': + optionalDependencies: + '@aws-sdk/credential-provider-web-identity': 3.888.0 '@vue/compiler-core@3.5.21': dependencies: @@ -7606,13 +8681,13 @@ snapshots: clean-stack: 4.2.0 indent-string: 5.0.0 - ai@3.4.33(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.8))(svelte@5.38.8)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67): + ai@3.4.33(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.10))(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67): dependencies: '@ai-sdk/provider': 0.0.26 '@ai-sdk/provider-utils': 1.0.22(zod@3.25.67) '@ai-sdk/react': 0.0.70(react@19.1.1)(zod@3.25.67) '@ai-sdk/solid': 0.0.54(zod@3.25.67) - '@ai-sdk/svelte': 0.0.57(svelte@5.38.8)(zod@3.25.67) + '@ai-sdk/svelte': 0.0.57(svelte@5.38.10)(zod@3.25.67) '@ai-sdk/ui-utils': 0.0.50(zod@3.25.67) '@ai-sdk/vue': 0.0.59(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) '@opentelemetry/api': 1.9.0 @@ -7624,8 +8699,8 @@ snapshots: optionalDependencies: openai: 4.104.0(ws@8.18.3)(zod@3.25.67) react: 19.1.1 - sswr: 2.2.0(svelte@5.38.8) - svelte: 5.38.8 + sswr: 2.2.0(svelte@5.38.10) + svelte: 5.38.10 zod: 3.25.67 transitivePeerDependencies: - solid-js @@ -7784,7 +8859,7 @@ snapshots: axobject-query@4.1.0: {} - b4a@1.7.0: {} + b4a@1.7.1: {} bail@2.0.2: {} @@ -7793,7 +8868,7 @@ snapshots: bare-events@2.6.1: optional: true - bare-fs@4.3.3: + bare-fs@4.4.0: dependencies: bare-events: 2.6.1 bare-path: 3.0.0 @@ -7881,6 +8956,8 @@ snapshots: boolbase@1.0.0: {} + bowser@2.12.1: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -7894,13 +8971,13 @@ snapshots: dependencies: fill-range: 7.1.1 - braintrust@0.0.171(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.8))(svelte@5.38.8)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67): + braintrust@0.0.171(@aws-sdk/credential-provider-web-identity@3.888.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.10))(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67): dependencies: '@ai-sdk/provider': 0.0.11 '@braintrust/core': 0.0.67 '@next/env': 14.2.32 - '@vercel/functions': 1.6.0 - ai: 3.4.33(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.8))(svelte@5.38.8)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) + '@vercel/functions': 1.6.0(@aws-sdk/credential-provider-web-identity@3.888.0) + ai: 3.4.33(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.10))(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) argparse: 2.0.1 chalk: 4.1.2 cli-progress: 3.12.0 @@ -8881,6 +9958,10 @@ snapshots: fast-uri@3.1.0: {} + fast-xml-parser@5.2.5: + dependencies: + strnum: 2.1.1 + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -9838,7 +10919,7 @@ snapshots: leven@3.1.0: {} - leven@4.0.0: {} + leven@4.1.0: {} levn@0.4.1: dependencies: @@ -10547,7 +11628,7 @@ snapshots: '@mdx-js/react': 3.1.1(@types/react@19.1.12)(react@19.1.1) react: 19.1.1 react-dom: 18.3.1(react@19.1.1) - remark-mdx-remove-esm: 1.2.0(unified@11.0.5) + remark-mdx-remove-esm: 1.2.1(unified@11.0.5) serialize-error: 12.0.0 vfile: 6.0.3 vfile-matter: 5.0.1 @@ -10612,7 +11693,6 @@ snapshots: partial-json: 0.1.7 optionalDependencies: zod: 3.25.67 - optional: true on-exit-leak-free@2.1.2: {} @@ -10819,8 +11899,7 @@ snapshots: parseurl@1.3.3: {} - partial-json@0.1.7: - optional: true + partial-json@0.1.7: {} patch-console@2.0.0: {} @@ -11227,7 +12306,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-mdx-remove-esm@1.2.0(unified@11.0.5): + remark-mdx-remove-esm@1.2.1(unified@11.0.5): dependencies: '@types/mdast': 4.0.4 mdast-util-mdxjs-esm: 2.0.1 @@ -11695,9 +12774,9 @@ snapshots: sprintf-js@1.0.3: {} - sswr@2.2.0(svelte@5.38.8): + sswr@2.2.0(svelte@5.38.10): dependencies: - svelte: 5.38.8 + svelte: 5.38.10 swrev: 4.0.0 stack-utils@2.0.6: @@ -11792,6 +12871,8 @@ snapshots: strip-json-comments@5.0.3: {} + strnum@2.1.1: {} + style-to-js@1.1.17: dependencies: style-to-object: 1.0.9 @@ -11816,7 +12897,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte@5.38.8: + svelte@5.38.10: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 @@ -11877,7 +12958,7 @@ snapshots: pump: 3.0.3 tar-stream: 3.1.7 optionalDependencies: - bare-fs: 4.3.3 + bare-fs: 4.4.0 bare-path: 3.0.0 transitivePeerDependencies: - bare-buffer @@ -11885,7 +12966,7 @@ snapshots: tar-stream@3.1.7: dependencies: - b4a: 1.7.0 + b4a: 1.7.1 fast-fifo: 1.3.2 streamx: 2.22.1 transitivePeerDependencies: @@ -11904,7 +12985,7 @@ snapshots: text-decoder@1.2.3: dependencies: - b4a: 1.7.0 + b4a: 1.7.1 transitivePeerDependencies: - react-native-b4a diff --git a/types/llm.ts b/types/llm.ts index d3ba9939e..c9afae39d 100644 --- a/types/llm.ts +++ b/types/llm.ts @@ -1,5 +1,4 @@ import { LanguageModel } from "ai"; -import { ClientOptions } from "./model"; export interface LLMTool { type: "function"; @@ -10,4 +9,6 @@ export interface LLMTool { export type AISDKProvider = (modelName: string) => LanguageModel; // Represents a function that takes options (like apiKey) and returns an AISDKProvider -export type AISDKCustomProvider = (options: ClientOptions) => AISDKProvider; +export type AISDKCustomProvider = ( + options: Record, +) => AISDKProvider; diff --git a/types/model.ts b/types/model.ts index 10a5fd623..18bbde2da 100644 --- a/types/model.ts +++ b/types/model.ts @@ -45,7 +45,7 @@ export type ModelProvider = | "aisdk"; export type ClientOptions = - | Record + | Record | OpenAIClientOptions | AnthropicClientOptions; From c6a752d52243054e633aebc32ed6564ffeabbea2 Mon Sep 17 00:00:00 2001 From: Filip Michalsky Date: Tue, 23 Sep 2025 13:37:36 +0200 Subject: [PATCH 04/20] test bedrock file --- examples/test-bedrock.ts | 138 +++++++++ lib/utils.ts | 93 ++++-- pnpm-lock.yaml | 614 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 812 insertions(+), 33 deletions(-) create mode 100644 examples/test-bedrock.ts diff --git a/examples/test-bedrock.ts b/examples/test-bedrock.ts new file mode 100644 index 000000000..a75ee02b0 --- /dev/null +++ b/examples/test-bedrock.ts @@ -0,0 +1,138 @@ +import { Stagehand } from "@browserbasehq/stagehand"; + +/** + * AWS Bedrock Integration Test for Stagehand + * + * This test demonstrates AWS Bedrock integration using bearer token authentication. + * + * NOTE: This test focuses on basic functionality as OpenAI models in Bedrock + * work best for navigation and simple operations. For advanced features like + * structured extraction and observation, consider using Anthropic models. + * + * SETUP INSTRUCTIONS: + * + * 1. GET AWS BEDROCK API KEY: + * - Go to AWS Bedrock Console: https://console.aws.amazon.com/bedrock/ + * - Navigate to "Model access" in the left sidebar + * - Click "Enable model access" + * - Enable access for desired models (e.g., Anthropic Claude, OpenAI models) + * - Wait for approval (can take minutes to hours) + * + * 2. GENERATE BEARER TOKEN: + * - In AWS Bedrock Console, go to "API keys" section + * - Create a new API key + * - Copy the bearer token (starts with "bedrock-api-key-") + * + * 3. SET ENVIRONMENT VARIABLES: + * Create a .env file with: + * ``` + * AWS_BEARER_TOKEN_BEDROCK=bedrock-api-key-[your-base64-token] + * AWS_REGION=us-east-1 + * AWS_MODEL_ID=anthropic.claude-3-haiku-20240307-v1:0 + * ``` + * + * 4. ALTERNATIVE - STANDARD AWS CREDENTIALS: + * If you prefer standard AWS credentials instead of bearer token: + * ``` + * AWS_ACCESS_KEY_ID=your-access-key + * AWS_SECRET_ACCESS_KEY=your-secret-key + * AWS_REGION=us-east-1 + * AWS_MODEL_ID=anthropic.claude-3-haiku-20240307-v1:0 + * ``` + * + * SUPPORTED MODEL IDs: + * - anthropic.claude-3-haiku-20240307-v1:0 (recommended for extract/observe) + * - anthropic.claude-3-5-sonnet-20240620-v1:0 (recommended for extract/observe) + * - openai.gpt-oss-120b-1:0 (works well for act/observe, may need adjustments for extract) + * - See AWS Bedrock Console for full list of available models + */ + +async function testBedrockIntegration() { + // Use model ID from environment or default to OpenAI GPT-OSS-120B + const modelId = process.env.AWS_MODEL_ID || "openai.gpt-oss-120b-1:0"; + + console.log("🧪 AWS Bedrock Integration Test"); + console.log(`📋 Model: ${modelId}`); + console.log(`🌍 Region: ${process.env.AWS_REGION || "us-east-1"}`); + + // Check authentication setup + const hasBearer = !!process.env.AWS_BEARER_TOKEN_BEDROCK; + const hasStandard = !!(process.env.AWS_ACCESS_KEY_ID && process.env.AWS_SECRET_ACCESS_KEY); + + if (!hasBearer && !hasStandard) { + console.error("❌ No AWS authentication found!"); + console.error("💡 Set either AWS_BEARER_TOKEN_BEDROCK or AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY"); + process.exit(1); + } + + console.log(`🔐 Auth: ${hasBearer ? "Bearer Token" : "AWS Credentials"}`); + + const stagehand = new Stagehand({ + env: "LOCAL", + verbose: 2, // Maximum verbosity to see all LLM details + modelName: `bedrock/${modelId}`, + }); + + try { + await stagehand.init(); + const page = stagehand.page; + + console.log("✅ Stagehand initialized successfully"); + + // Test 1: Navigation + console.log("\n🌐 Test 1: Navigation"); + await page.goto("https://example.com"); + console.log("✅ Navigation successful"); + + // Test 2: Page interaction with clicking (with retries for OpenAI model) + console.log("\n🎯 Test 2: Page Interaction with Retries"); + + let success = false; + let lastError: Error | null = null; + const maxRetries = 3; + + for (let attempt = 1; attempt <= maxRetries; attempt++) { + try { + console.log(`🔄 Attempt ${attempt}/${maxRetries}: Trying page.act("click the link")`); + await page.act("click the link"); + console.log(`✅ Click successful on attempt ${attempt} - URL: ${page.url()}`); + success = true; + break; + } catch (error) { + lastError = error as Error; + console.log(`⚠️ Attempt ${attempt} failed: ${error.message.split('\n')[0]}`); + + if (attempt < maxRetries) { + console.log(`🔄 Retrying in 1 second...`); + await new Promise(resolve => setTimeout(resolve, 1000)); + } + } + } + + if (!success) { + console.log(`❌ All ${maxRetries} attempts failed. Last error: ${lastError?.message}`); + throw lastError; + } + + await stagehand.close(); + + console.log("\n🎉 AWS Bedrock integration with OpenAI model is working perfectly!"); + + } catch (error) { + console.error("\n❌ Test failed:", error.message); + + // Provide helpful error guidance + if (error.message?.includes("You don't have access")) { + console.error("💡 Enable model access in AWS Bedrock Console:"); + console.error(" https://console.aws.amazon.com/bedrock/"); + } else if (error.message?.includes("credentials") || error.message?.includes("authentication")) { + console.error("💡 Check your AWS credentials in .env file"); + } + + await stagehand.close(); + process.exit(1); + } +} + +// Run the test +testBedrockIntegration(); \ No newline at end of file diff --git a/lib/utils.ts b/lib/utils.ts index ee8376a11..f7b514d1f 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -496,7 +496,7 @@ export function loadApiKeyFromEnv( /** * Loads Amazon Bedrock client configuration from environment variables. - * Supports both API key authentication and SigV4 authentication methods. + * Supports both AWS credentials and AWS Bedrock API key authentication. * @param logger Logger function for info/error messages * @returns Bedrock client options object or undefined if no authentication method is available */ @@ -504,30 +504,13 @@ export function loadBedrockClientOptions( logger: (logLine: LogLine) => void, ): Record | undefined { // Authentication precedence: - // 1. API key from AWS_BEARER_TOKEN_BEDROCK (recommended) - // 2. SigV4 authentication using AWS credentials + // 1. Standard AWS credentials (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) + // 2. AWS Bedrock bearer token (AWS_BEARER_TOKEN_BEDROCK) - const bearerToken = process.env.AWS_BEARER_TOKEN_BEDROCK; const region = - process.env.AWS_DEFAULT_REGION || process.env.AWS_REGION || "us-east-1"; // Default to us-east-1 - - // Method 1: API key authentication (recommended) - if (bearerToken && bearerToken.length > 0) { - logger({ - category: "init", - message: "Using Amazon Bedrock API key authentication", - level: 1, - }); - - const config: Record = { - apiKey: bearerToken, - region: region, // Always include region (defaults to us-east-1) - }; - - return config; - } + process.env.AWS_DEFAULT_REGION || process.env.AWS_REGION || "us-east-1"; - // Method 2: Check for SigV4 authentication credentials + // Method 1: Check for standard AWS credentials first const accessKeyId = process.env.AWS_ACCESS_KEY_ID; const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY; const sessionToken = process.env.AWS_SESSION_TOKEN; @@ -535,14 +518,14 @@ export function loadBedrockClientOptions( if (accessKeyId && secretAccessKey) { logger({ category: "init", - message: "Using Amazon Bedrock SigV4 authentication", + message: "Using AWS credentials for Bedrock authentication", level: 1, }); const config: Record = { accessKeyId, secretAccessKey, - region: region, // Always include region (defaults to us-east-1) + region, }; // Add session token if present (for temporary credentials) @@ -553,10 +536,70 @@ export function loadBedrockClientOptions( return config; } + // Method 2: Handle AWS Bedrock bearer token + const bearerToken = process.env.AWS_BEARER_TOKEN_BEDROCK; + if (bearerToken && bearerToken.length > 0) { + logger({ + category: "init", + message: "Using AWS Bedrock bearer token authentication", + level: 1, + }); + + try { + // Extract region and credentials from the bearer token + const base64Token = bearerToken.replace(/^bedrock-api-key-/, ""); + const decodedUrl = Buffer.from(base64Token, "base64").toString("utf-8"); + + // Add https:// protocol if missing + const fullUrl = decodedUrl.startsWith("http") + ? decodedUrl + : `https://${decodedUrl}`; + const url = new URL(fullUrl); + const params = url.searchParams; + + const credential = params.get("X-Amz-Credential"); + const securityToken = params.get("X-Amz-Security-Token"); + + if (credential && securityToken) { + const credentialParts = credential.split("/"); + if (credentialParts.length >= 4) { + const tokenAccessKeyId = credentialParts[0]; + const tokenRegion = credentialParts[2]; + const decodedSessionToken = decodeURIComponent(securityToken); + + // Use both direct credentials and credential provider for compatibility + const config: Record = { + region: tokenRegion || region, + accessKeyId: tokenAccessKeyId, + secretAccessKey: "dummy-secret-key", // Bearer tokens handle auth differently, but SDK requires this + sessionToken: decodedSessionToken, + credentialProvider: async () => ({ + accessKeyId: tokenAccessKeyId, + secretAccessKey: "dummy-secret-key", + sessionToken: decodedSessionToken, + }), + }; + + return config; + } + } + + // If parsing fails, return minimal config and let AWS SDK handle it + return { + region, + }; + } catch (error) { + return { + region, + }; + } + } + + // No authentication method found logger({ category: "init", message: - "No Amazon Bedrock authentication credentials found. Please set either AWS_BEARER_TOKEN_BEDROCK for API key auth or AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY (and optionally AWS_SESSION_TOKEN) for SigV4 auth", + "No Amazon Bedrock authentication credentials found. Please set either AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY for standard auth or AWS_BEARER_TOKEN_BEDROCK for API key auth", level: 0, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a1022ced5..178a6bcfd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,6 +47,9 @@ importers: '@anthropic-ai/sdk': specifier: 0.39.0 version: 0.39.0 + '@aws-sdk/client-bedrock': + specifier: ^3.894.0 + version: 3.894.0 '@browserbasehq/sdk': specifier: ^2.4.0 version: 2.6.0 @@ -137,7 +140,7 @@ importers: version: 0.0.64 braintrust: specifier: ^0.0.171 - version: 0.0.171(@aws-sdk/credential-provider-web-identity@3.888.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.10))(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) + version: 0.0.171(@aws-sdk/credential-provider-web-identity@3.894.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.10))(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) chalk: specifier: ^5.4.1 version: 5.6.2 @@ -451,42 +454,82 @@ packages: resolution: {integrity: sha512-XuTayKaxjQkBtasJp4+mzXwE06k8YML+VKMcYEq096JFC4/bwQA1TrF/T8wlE6Xw6FD/XU2OUdLfq3j/QgEOgA==} engines: {node: '>=18.0.0'} + '@aws-sdk/client-bedrock@3.894.0': + resolution: {integrity: sha512-lasZcOcwFxjHaRiXiMU3El4tTrQPOy/5B5zDPrJUW4ZvcT4SdCiugaeh3O5oUsvlmktaUs/QRsD1kZuD8t54yw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/client-sso@3.888.0': resolution: {integrity: sha512-8CLy/ehGKUmekjH+VtZJ4w40PqDg3u0K7uPziq/4P8Q7LLgsy8YQoHNbuY4am7JU3HWrqLXJI9aaz1+vPGPoWA==} engines: {node: '>=18.0.0'} + '@aws-sdk/client-sso@3.894.0': + resolution: {integrity: sha512-lsznYIOiaMtbJfxTlMbvc6d37a1D6OIYF/RgFu9ue765XtiAG2RUF4aoEKA9e448Bwv+078eE+ndNxH3fd0uEw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/core@3.888.0': resolution: {integrity: sha512-L3S2FZywACo4lmWv37Y4TbefuPJ1fXWyWwIJ3J4wkPYFJ47mmtUPqThlVrSbdTHkEjnZgJe5cRfxk0qCLsFh1w==} engines: {node: '>=18.0.0'} + '@aws-sdk/core@3.894.0': + resolution: {integrity: sha512-7zbO31NV2FaocmMtWOg/fuTk3PC2Ji2AC0Fi2KqrppEDIcwLlTTuT9w/rdu/93Pz+wyUhCxWnDc0tPbwtCLs+A==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-env@3.888.0': resolution: {integrity: sha512-shPi4AhUKbIk7LugJWvNpeZA8va7e5bOHAEKo89S0Ac8WDZt2OaNzbh/b9l0iSL2eEyte8UgIsYGcFxOwIF1VA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-env@3.894.0': + resolution: {integrity: sha512-2aiQJIRWOuROPPISKgzQnH/HqSfucdk5z5VMemVH3Mm2EYOrzBwmmiiFpmSMN3ST+sE8c7gusqycUchP+KfALQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-http@3.888.0': resolution: {integrity: sha512-Jvuk6nul0lE7o5qlQutcqlySBHLXOyoPtiwE6zyKbGc7RVl0//h39Lab7zMeY2drMn8xAnIopL4606Fd8JI/Hw==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-http@3.894.0': + resolution: {integrity: sha512-Z5QQpqFRflszrT+lUq6+ORuu4jRDcpgCUSoTtlhczidMqfdOSckKmK3chZEfmUUJPSwoFQZ7EiVTsX3c886fBg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-ini@3.888.0': resolution: {integrity: sha512-M82ItvS5yq+tO6ZOV1ruaVs2xOne+v8HW85GFCXnz8pecrzYdgxh6IsVqEbbWruryG/mUGkWMbkBZoEsy4MgyA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-ini@3.894.0': + resolution: {integrity: sha512-SpSR7ULrdBpOrqP7HtpBg1LtJiud+AKH+w8nXX9EjedbIVQgy5uNoGMxRt+fp3aa1D4TXooRPE183YpG6+zwLg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-node@3.888.0': resolution: {integrity: sha512-KCrQh1dCDC8Y+Ap3SZa6S81kHk+p+yAaOQ5jC3dak4zhHW3RCrsGR/jYdemTOgbEGcA6ye51UbhWfrrlMmeJSA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-node@3.894.0': + resolution: {integrity: sha512-B2QNQtZBYHCQLfxSyftGoW2gPtpM2ndhMfmKvIMrSuKUXz3v+p70FLsGRETeOu6kOHsobGlgK+TQCg08qGQfeQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-process@3.888.0': resolution: {integrity: sha512-+aX6piSukPQ8DUS4JAH344GePg8/+Q1t0+kvSHAZHhYvtQ/1Zek3ySOJWH2TuzTPCafY4nmWLcQcqvU1w9+4Lw==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-process@3.894.0': + resolution: {integrity: sha512-VU74GNsj+SsO+pl4d+JimlQ7+AcderZaC6bFndQssQdFZ5NRad8yFNz5Xbec8CPJr+z/VAwHib6431F5nYF46g==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-sso@3.888.0': resolution: {integrity: sha512-b1ZJji7LJ6E/j1PhFTyvp51in2iCOQ3VP6mj5H6f5OUnqn7efm41iNMoinKr87n0IKZw7qput5ggXVxEdPhouA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-sso@3.894.0': + resolution: {integrity: sha512-ZZ1jF8x70RObXbRAcUPMANqX0LhgxVCQBzAfy3tslOp3h6aTgB+WMdGpVVR91x00DbSJnswMMN+mgWkaw78fSQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-web-identity@3.888.0': resolution: {integrity: sha512-7P0QNtsDzMZdmBAaY/vY1BsZHwTGvEz3bsn2bm5VSKFAeMmZqsHK1QeYdNsFjLtegnVh+wodxMq50jqLv3LFlA==} engines: {node: '>=18.0.0'} + '@aws-sdk/credential-provider-web-identity@3.894.0': + resolution: {integrity: sha512-6IwlCueEwzu2RAzUWufb4ZPf+LxF30vSTB1aHy9RVNce8MTaBt5VZ0EPdicdnhL0xqGuYNERP5+WpS70K7D1dw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/eventstream-handler-node@3.887.0': resolution: {integrity: sha512-BFzSgyrbCOr9O2bOZCq7uOw4fuJP0Lpt7++41YNfzAXInNSYcSKFLDhmnrDnSSqJ+yC7SWOAiPYSV5o66YNzFA==} engines: {node: '>=18.0.0'} @@ -499,18 +542,34 @@ packages: resolution: {integrity: sha512-ulzqXv6NNqdu/kr0sgBYupWmahISHY+azpJidtK6ZwQIC+vBUk9NdZeqQpy7KVhIk2xd4+5Oq9rxapPwPI21CA==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-host-header@3.893.0': + resolution: {integrity: sha512-qL5xYRt80ahDfj9nDYLhpCNkDinEXvjLe/Qen/Y/u12+djrR2MB4DRa6mzBCkLkdXDtf0WAoW2EZsNCfGrmOEQ==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-logger@3.887.0': resolution: {integrity: sha512-YbbgLI6jKp2qSoAcHnXrQ5jcuc5EYAmGLVFgMVdk8dfCfJLfGGSaOLxF4CXC7QYhO50s+mPPkhBYejCik02Kug==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-logger@3.893.0': + resolution: {integrity: sha512-ZqzMecjju5zkBquSIfVfCORI/3Mge21nUY4nWaGQy+NUXehqCGG4W7AiVpiHGOcY2cGJa7xeEkYcr2E2U9U0AA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-recursion-detection@3.887.0': resolution: {integrity: sha512-tjrUXFtQnFLo+qwMveq5faxP5MQakoLArXtqieHphSqZTXm21wDJM73hgT4/PQQGTwgYjDKqnqsE1hvk0hcfDw==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-recursion-detection@3.893.0': + resolution: {integrity: sha512-H7Zotd9zUHQAr/wr3bcWHULYhEeoQrF54artgsoUGIf/9emv6LzY89QUccKIxYd6oHKNTrTyXm9F0ZZrzXNxlg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-user-agent@3.888.0': resolution: {integrity: sha512-ZkcUkoys8AdrNNG7ATjqw2WiXqrhTvT+r4CIK3KhOqIGPHX0p0DQWzqjaIl7ZhSUToKoZ4Ud7MjF795yUr73oA==} engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-user-agent@3.894.0': + resolution: {integrity: sha512-+s1HRLDIuSMhOzVsxRKbatUjJib0w1AGxDfWNZWrSnM7Aq9U1cap0XgR9/zy7NhJ+I3Twrx6SCVfpjpZspoRTA==} + engines: {node: '>=18.0.0'} + '@aws-sdk/middleware-websocket@3.887.0': resolution: {integrity: sha512-qEv2c3sritwdYUERMYmLCt3kw/MI8or0s1C8/y5CyINJ5DAlwlnyHbKxKvG0+QuUXEctpuhji2ZO3Cb0kmYD2Q==} engines: {node: '>= 14.0.0'} @@ -519,22 +578,42 @@ packages: resolution: {integrity: sha512-py4o4RPSGt+uwGvSBzR6S6cCBjS4oTX5F8hrHFHfPCdIOMVjyOBejn820jXkCrcdpSj3Qg1yUZXxsByvxc9Lyg==} engines: {node: '>=18.0.0'} + '@aws-sdk/nested-clients@3.894.0': + resolution: {integrity: sha512-FEEIk43RLO7Oy2BHXfwbo4gjCec7pK7i5nnUT9GbJQh6JMcS0FqPJGF95lQa93quS3SgwdCpWbv01TH86i+41w==} + engines: {node: '>=18.0.0'} + '@aws-sdk/region-config-resolver@3.887.0': resolution: {integrity: sha512-VdSMrIqJ3yjJb/fY+YAxrH/lCVv0iL8uA+lbMNfQGtO5tB3Zx6SU9LEpUwBNX8fPK1tUpI65CNE4w42+MY/7Mg==} engines: {node: '>=18.0.0'} + '@aws-sdk/region-config-resolver@3.893.0': + resolution: {integrity: sha512-/cJvh3Zsa+Of0Zbg7vl9wp/kZtdb40yk/2+XcroAMVPO9hPvmS9r/UOm6tO7FeX4TtkRFwWaQJiTZTgSdsPY+Q==} + engines: {node: '>=18.0.0'} + '@aws-sdk/token-providers@3.888.0': resolution: {integrity: sha512-WA3NF+3W8GEuCMG1WvkDYbB4z10G3O8xuhT7QSjhvLYWQ9CPt3w4VpVIfdqmUn131TCIbhCzD0KN/1VJTjAjyw==} engines: {node: '>=18.0.0'} + '@aws-sdk/token-providers@3.894.0': + resolution: {integrity: sha512-tOkrD6U3UrU5IJfbBl932RBi8EjFVFkU1hAjPgAWWBDy6uRQunpuh3i1z6dRQoelVT88BmEyEv1l/WpM5uZezg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/types@3.887.0': resolution: {integrity: sha512-fmTEJpUhsPsovQ12vZSpVTEP/IaRoJAMBGQXlQNjtCpkBp6Iq3KQDa/HDaPINE+3xxo6XvTdtibsNOd5zJLV9A==} engines: {node: '>=18.0.0'} + '@aws-sdk/types@3.893.0': + resolution: {integrity: sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg==} + engines: {node: '>=18.0.0'} + '@aws-sdk/util-endpoints@3.887.0': resolution: {integrity: sha512-kpegvT53KT33BMeIcGLPA65CQVxLUL/C3gTz9AzlU/SDmeusBHX4nRApAicNzI/ltQ5lxZXbQn18UczzBuwF1w==} engines: {node: '>=18.0.0'} + '@aws-sdk/util-endpoints@3.893.0': + resolution: {integrity: sha512-xeMcL31jXHKyxRwB3oeNjs8YEpyvMnSYWr2OwLydgzgTr0G349AHlJHwYGCF9xiJ2C27kDxVvXV/Hpdp0p7TWw==} + engines: {node: '>=18.0.0'} + '@aws-sdk/util-format-url@3.887.0': resolution: {integrity: sha512-ABDSP6KsrdD+JC7qwMqUpLXqPidvfgT+Q+W8sGGuk/IBy7smgZDOdYSZLE4VBbQpH3N/zSJuslAWhL2x37Qwww==} engines: {node: '>=18.0.0'} @@ -546,6 +625,9 @@ packages: '@aws-sdk/util-user-agent-browser@3.887.0': resolution: {integrity: sha512-X71UmVsYc6ZTH4KU6hA5urOzYowSXc3qvroagJNLJYU1ilgZ529lP4J9XOYfEvTXkLR1hPFSRxa43SrwgelMjA==} + '@aws-sdk/util-user-agent-browser@3.893.0': + resolution: {integrity: sha512-PE9NtbDBW6Kgl1bG6A5fF3EPo168tnkj8TgMcT0sg4xYBWsBpq0bpJZRh+Jm5Bkwiw9IgTCLjEU7mR6xWaMB9w==} + '@aws-sdk/util-user-agent-node@3.888.0': resolution: {integrity: sha512-rSB3OHyuKXotIGfYEo//9sU0lXAUrTY28SUUnxzOGYuQsAt0XR5iYwBAp+RjV6x8f+Hmtbg0PdCsy1iNAXa0UQ==} engines: {node: '>=18.0.0'} @@ -555,10 +637,23 @@ packages: aws-crt: optional: true + '@aws-sdk/util-user-agent-node@3.894.0': + resolution: {integrity: sha512-tmA3XtQA6nPGyJGl9+7Bbo/5UmUvqCiweC5fNmfTg/aLpT3YkiivOG36XhuJxXVBkX3jr5Sc+IsaANUlJmblEA==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + '@aws-sdk/xml-builder@3.887.0': resolution: {integrity: sha512-lMwgWK1kNgUhHGfBvO/5uLe7TKhycwOn3eRCqsKPT9aPCx/HWuTlpcQp8oW2pCRGLS7qzcxqpQulcD+bbUL7XQ==} engines: {node: '>=18.0.0'} + '@aws-sdk/xml-builder@3.894.0': + resolution: {integrity: sha512-E6EAMc9dT1a2DOdo4zyOf3fp5+NJ2wI+mcm7RaW1baFIWDwcb99PpvWoV7YEiK7oaBDshuOEGWKUSYXdW+JYgA==} + engines: {node: '>=18.0.0'} + '@aws/lambda-invoke-store@0.0.1': resolution: {integrity: sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==} engines: {node: '>=18.0.0'} @@ -1685,14 +1780,26 @@ packages: resolution: {integrity: sha512-FXil8q4QN7mgKwU2hCLm0ltab8NyY/1RiqEf25Jnf6WLS3wmb11zGAoLETqg1nur2Aoibun4w4MjeN9CMJ4G6A==} engines: {node: '>=18.0.0'} + '@smithy/config-resolver@4.2.2': + resolution: {integrity: sha512-IT6MatgBWagLybZl1xQcURXRICvqz1z3APSCAI9IqdvfCkrA7RaQIEfgC6G/KvfxnDfQUDqFV+ZlixcuFznGBQ==} + engines: {node: '>=18.0.0'} + '@smithy/core@3.11.0': resolution: {integrity: sha512-Abs5rdP1o8/OINtE49wwNeWuynCu0kme1r4RI3VXVrHr4odVDG7h7mTnw1WXXfN5Il+c25QOnrdL2y56USfxkA==} engines: {node: '>=18.0.0'} + '@smithy/core@3.11.1': + resolution: {integrity: sha512-REH7crwORgdjSpYs15JBiIWOYjj0hJNC3aCecpJvAlMMaaqL5i2CLb1i6Hc4yevToTKSqslLMI9FKjhugEwALA==} + engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.1.1': resolution: {integrity: sha512-1WdBfM9DwA59pnpIizxnUvBf/de18p4GP+6zP2AqrlFzoW3ERpZaT4QueBR0nS9deDMaQRkBlngpVlnkuuTisQ==} engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.1.2': + resolution: {integrity: sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg==} + engines: {node: '>=18.0.0'} + '@smithy/eventstream-codec@4.1.1': resolution: {integrity: sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw==} engines: {node: '>=18.0.0'} @@ -1741,10 +1848,18 @@ packages: resolution: {integrity: sha512-fUTMmQvQQZakXOuKizfu7fBLDpwvWZjfH6zUK2OLsoNZRZGbNUdNSdLJHpwk1vS208jtDjpUIskh+JoA8zMzZg==} engines: {node: '>=18.0.0'} + '@smithy/middleware-endpoint@4.2.3': + resolution: {integrity: sha512-+1H5A28DeffRVrqmVmtqtRraEjoaC6JVap3xEQdVoBh2EagCVY7noPmcBcG4y7mnr9AJitR1ZAse2l+tEtK5vg==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-retry@4.2.1': resolution: {integrity: sha512-JzfvjwSJXWRl7LkLgIRTUTd2Wj639yr3sQGpViGNEOjtb0AkAuYqRAHs+jSOI/LPC0ZTjmFVVtfrCICMuebexw==} engines: {node: '>=18.0.0'} + '@smithy/middleware-retry@4.2.4': + resolution: {integrity: sha512-amyqYQFewnAviX3yy/rI/n1HqAgfvUdkEhc04kDjxsngAUREKuOI24iwqQUirrj6GtodWmR4iO5Zeyl3/3BwWg==} + engines: {node: '>=18.0.0'} + '@smithy/middleware-serde@4.1.1': resolution: {integrity: sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg==} engines: {node: '>=18.0.0'} @@ -1757,6 +1872,10 @@ packages: resolution: {integrity: sha512-AIA0BJZq2h295J5NeCTKhg1WwtdTA/GqBCaVjk30bDgMHwniUETyh5cP9IiE9VrId7Kt8hS7zvREVMTv1VfA6g==} engines: {node: '>=18.0.0'} + '@smithy/node-config-provider@4.2.2': + resolution: {integrity: sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A==} + engines: {node: '>=18.0.0'} + '@smithy/node-http-handler@4.2.1': resolution: {integrity: sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw==} engines: {node: '>=18.0.0'} @@ -1781,10 +1900,18 @@ packages: resolution: {integrity: sha512-Iam75b/JNXyDE41UvrlM6n8DNOa/r1ylFyvgruTUx7h2Uk7vDNV9AAwP1vfL1fOL8ls0xArwEGVcGZVd7IO/Cw==} engines: {node: '>=18.0.0'} + '@smithy/service-error-classification@4.1.2': + resolution: {integrity: sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ==} + engines: {node: '>=18.0.0'} + '@smithy/shared-ini-file-loader@4.1.1': resolution: {integrity: sha512-YkpikhIqGc4sfXeIbzSj10t2bJI/sSoP5qxLue6zG+tEE3ngOBSm8sO3+djacYvS/R5DfpxN/L9CyZsvwjWOAQ==} engines: {node: '>=18.0.0'} + '@smithy/shared-ini-file-loader@4.2.0': + resolution: {integrity: sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw==} + engines: {node: '>=18.0.0'} + '@smithy/signature-v4@5.2.1': resolution: {integrity: sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA==} engines: {node: '>=18.0.0'} @@ -1793,6 +1920,10 @@ packages: resolution: {integrity: sha512-WolVLDb9UTPMEPPOncrCt6JmAMCSC/V2y5gst2STWJ5r7+8iNac+EFYQnmvDCYMfOLcilOSEpm5yXZXwbLak1Q==} engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.6.3': + resolution: {integrity: sha512-K27LqywsaqKz4jusdUQYJh/YP2VbnbdskZ42zG8xfV+eovbTtMc2/ZatLWCfSkW0PDsTUXlpvlaMyu8925HsOw==} + engines: {node: '>=18.0.0'} + '@smithy/types@4.5.0': resolution: {integrity: sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg==} engines: {node: '>=18.0.0'} @@ -1829,14 +1960,26 @@ packages: resolution: {integrity: sha512-hA1AKIHFUMa9Tl6q6y8p0pJ9aWHCCG8s57flmIyLE0W7HcJeYrYtnqXDcGnftvXEhdQnSexyegXnzzTGk8bKLA==} engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-browser@4.1.3': + resolution: {integrity: sha512-5fm3i2laE95uhY6n6O6uGFxI5SVbqo3/RWEuS3YsT0LVmSZk+0eUqPhKd4qk0KxBRPaT5VNT/WEBUqdMyYoRgg==} + engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-node@4.1.1': resolution: {integrity: sha512-RGSpmoBrA+5D2WjwtK7tto6Pc2wO9KSXKLpLONhFZ8VyuCbqlLdiDAfuDTNY9AJe4JoE+Cx806cpTQQoQ71zPQ==} engines: {node: '>=18.0.0'} + '@smithy/util-defaults-mode-node@4.1.3': + resolution: {integrity: sha512-lwnMzlMslZ9GJNt+/wVjz6+fe9Wp5tqR1xAyQn+iywmP+Ymj0F6NhU/KfHM5jhGPQchRSCcau5weKhFdLIM4cA==} + engines: {node: '>=18.0.0'} + '@smithy/util-endpoints@3.1.1': resolution: {integrity: sha512-qB4R9kO0SetA11Rzu6MVGFIaGYX3p6SGGGfWwsKnC6nXIf0n/0AKVwRTsYsz9ToN8CeNNtNgQRwKFBndGJZdyw==} engines: {node: '>=18.0.0'} + '@smithy/util-endpoints@3.1.2': + resolution: {integrity: sha512-+AJsaaEGb5ySvf1SKMRrPZdYHRYSzMkCoK16jWnIMpREAnflVspMIDeCVSZJuj+5muZfgGpNpijE3mUNtjv01Q==} + engines: {node: '>=18.0.0'} + '@smithy/util-hex-encoding@4.1.0': resolution: {integrity: sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w==} engines: {node: '>=18.0.0'} @@ -1849,10 +1992,18 @@ packages: resolution: {integrity: sha512-jGeybqEZ/LIordPLMh5bnmnoIgsqnp4IEimmUp5c5voZ8yx+5kAlN5+juyr7p+f7AtZTgvhmInQk4Q0UVbrZ0Q==} engines: {node: '>=18.0.0'} + '@smithy/util-retry@4.1.2': + resolution: {integrity: sha512-NCgr1d0/EdeP6U5PSZ9Uv5SMR5XRRYoVr1kRVtKZxWL3tixEL3UatrPIMFZSKwHlCcp2zPLDvMubVDULRqeunA==} + engines: {node: '>=18.0.0'} + '@smithy/util-stream@4.3.1': resolution: {integrity: sha512-khKkW/Jqkgh6caxMWbMuox9+YfGlsk9OnHOYCGVEdYQb/XVzcORXHLYUubHmmda0pubEDncofUrPNniS9d+uAA==} engines: {node: '>=18.0.0'} + '@smithy/util-stream@4.3.2': + resolution: {integrity: sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g==} + engines: {node: '>=18.0.0'} + '@smithy/util-uri-escape@4.1.0': resolution: {integrity: sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg==} engines: {node: '>=18.0.0'} @@ -6267,7 +6418,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.887.0 + '@aws-sdk/types': 3.893.0 '@aws-sdk/util-locate-window': 3.873.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -6275,7 +6426,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.887.0 + '@aws-sdk/types': 3.893.0 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -6284,7 +6435,7 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.887.0 + '@aws-sdk/types': 3.893.0 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -6342,6 +6493,53 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-bedrock@3.894.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.894.0 + '@aws-sdk/credential-provider-node': 3.894.0 + '@aws-sdk/middleware-host-header': 3.893.0 + '@aws-sdk/middleware-logger': 3.893.0 + '@aws-sdk/middleware-recursion-detection': 3.893.0 + '@aws-sdk/middleware-user-agent': 3.894.0 + '@aws-sdk/region-config-resolver': 3.893.0 + '@aws-sdk/token-providers': 3.894.0 + '@aws-sdk/types': 3.893.0 + '@aws-sdk/util-endpoints': 3.893.0 + '@aws-sdk/util-user-agent-browser': 3.893.0 + '@aws-sdk/util-user-agent-node': 3.894.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.11.1 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.3 + '@smithy/middleware-retry': 4.2.4 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.3 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.3 + '@smithy/util-defaults-mode-node': 4.1.3 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.2 + '@smithy/util-utf8': 4.1.0 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/client-sso@3.888.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -6385,6 +6583,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-sso@3.894.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.894.0 + '@aws-sdk/middleware-host-header': 3.893.0 + '@aws-sdk/middleware-logger': 3.893.0 + '@aws-sdk/middleware-recursion-detection': 3.893.0 + '@aws-sdk/middleware-user-agent': 3.894.0 + '@aws-sdk/region-config-resolver': 3.893.0 + '@aws-sdk/types': 3.893.0 + '@aws-sdk/util-endpoints': 3.893.0 + '@aws-sdk/util-user-agent-browser': 3.893.0 + '@aws-sdk/util-user-agent-node': 3.894.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.11.1 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.3 + '@smithy/middleware-retry': 4.2.4 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.3 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.3 + '@smithy/util-defaults-mode-node': 4.1.3 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.2 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/core@3.888.0': dependencies: '@aws-sdk/types': 3.887.0 @@ -6403,6 +6644,23 @@ snapshots: fast-xml-parser: 5.2.5 tslib: 2.8.1 + '@aws-sdk/core@3.894.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@aws-sdk/xml-builder': 3.894.0 + '@smithy/core': 3.11.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/property-provider': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/signature-v4': 5.2.1 + '@smithy/smithy-client': 4.6.3 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.888.0': dependencies: '@aws-sdk/core': 3.888.0 @@ -6411,6 +6669,14 @@ snapshots: '@smithy/types': 4.5.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.894.0': + dependencies: + '@aws-sdk/core': 3.894.0 + '@aws-sdk/types': 3.893.0 + '@smithy/property-provider': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.888.0': dependencies: '@aws-sdk/core': 3.888.0 @@ -6424,6 +6690,19 @@ snapshots: '@smithy/util-stream': 4.3.1 tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.894.0': + dependencies: + '@aws-sdk/core': 3.894.0 + '@aws-sdk/types': 3.893.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/property-provider': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.3 + '@smithy/types': 4.5.0 + '@smithy/util-stream': 4.3.2 + tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.888.0': dependencies: '@aws-sdk/core': 3.888.0 @@ -6442,6 +6721,24 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-ini@3.894.0': + dependencies: + '@aws-sdk/core': 3.894.0 + '@aws-sdk/credential-provider-env': 3.894.0 + '@aws-sdk/credential-provider-http': 3.894.0 + '@aws-sdk/credential-provider-process': 3.894.0 + '@aws-sdk/credential-provider-sso': 3.894.0 + '@aws-sdk/credential-provider-web-identity': 3.894.0 + '@aws-sdk/nested-clients': 3.894.0 + '@aws-sdk/types': 3.893.0 + '@smithy/credential-provider-imds': 4.1.2 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-node@3.888.0': dependencies: '@aws-sdk/credential-provider-env': 3.888.0 @@ -6459,6 +6756,23 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-node@3.894.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.894.0 + '@aws-sdk/credential-provider-http': 3.894.0 + '@aws-sdk/credential-provider-ini': 3.894.0 + '@aws-sdk/credential-provider-process': 3.894.0 + '@aws-sdk/credential-provider-sso': 3.894.0 + '@aws-sdk/credential-provider-web-identity': 3.894.0 + '@aws-sdk/types': 3.893.0 + '@smithy/credential-provider-imds': 4.1.2 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-process@3.888.0': dependencies: '@aws-sdk/core': 3.888.0 @@ -6468,6 +6782,15 @@ snapshots: '@smithy/types': 4.5.0 tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.894.0': + dependencies: + '@aws-sdk/core': 3.894.0 + '@aws-sdk/types': 3.893.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.888.0': dependencies: '@aws-sdk/client-sso': 3.888.0 @@ -6481,6 +6804,19 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-sso@3.894.0': + dependencies: + '@aws-sdk/client-sso': 3.894.0 + '@aws-sdk/core': 3.894.0 + '@aws-sdk/token-providers': 3.894.0 + '@aws-sdk/types': 3.893.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/credential-provider-web-identity@3.888.0': dependencies: '@aws-sdk/core': 3.888.0 @@ -6492,6 +6828,18 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-web-identity@3.894.0': + dependencies: + '@aws-sdk/core': 3.894.0 + '@aws-sdk/nested-clients': 3.894.0 + '@aws-sdk/types': 3.893.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/eventstream-handler-node@3.887.0': dependencies: '@aws-sdk/types': 3.887.0 @@ -6513,12 +6861,25 @@ snapshots: '@smithy/types': 4.5.0 tslib: 2.8.1 + '@aws-sdk/middleware-host-header@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@aws-sdk/middleware-logger@3.887.0': dependencies: '@aws-sdk/types': 3.887.0 '@smithy/types': 4.5.0 tslib: 2.8.1 + '@aws-sdk/middleware-logger@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@aws-sdk/middleware-recursion-detection@3.887.0': dependencies: '@aws-sdk/types': 3.887.0 @@ -6527,6 +6888,14 @@ snapshots: '@smithy/types': 4.5.0 tslib: 2.8.1 + '@aws-sdk/middleware-recursion-detection@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@aws/lambda-invoke-store': 0.0.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@aws-sdk/middleware-user-agent@3.888.0': dependencies: '@aws-sdk/core': 3.888.0 @@ -6537,6 +6906,16 @@ snapshots: '@smithy/types': 4.5.0 tslib: 2.8.1 + '@aws-sdk/middleware-user-agent@3.894.0': + dependencies: + '@aws-sdk/core': 3.894.0 + '@aws-sdk/types': 3.893.0 + '@aws-sdk/util-endpoints': 3.893.0 + '@smithy/core': 3.11.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@aws-sdk/middleware-websocket@3.887.0': dependencies: '@aws-sdk/types': 3.887.0 @@ -6593,6 +6972,49 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/nested-clients@3.894.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.894.0 + '@aws-sdk/middleware-host-header': 3.893.0 + '@aws-sdk/middleware-logger': 3.893.0 + '@aws-sdk/middleware-recursion-detection': 3.893.0 + '@aws-sdk/middleware-user-agent': 3.894.0 + '@aws-sdk/region-config-resolver': 3.893.0 + '@aws-sdk/types': 3.893.0 + '@aws-sdk/util-endpoints': 3.893.0 + '@aws-sdk/util-user-agent-browser': 3.893.0 + '@aws-sdk/util-user-agent-node': 3.894.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.11.1 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.3 + '@smithy/middleware-retry': 4.2.4 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.3 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.3 + '@smithy/util-defaults-mode-node': 4.1.3 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.2 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/region-config-resolver@3.887.0': dependencies: '@aws-sdk/types': 3.887.0 @@ -6602,6 +7024,15 @@ snapshots: '@smithy/util-middleware': 4.1.1 tslib: 2.8.1 + '@aws-sdk/region-config-resolver@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + '@smithy/util-config-provider': 4.1.0 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 + '@aws-sdk/token-providers@3.888.0': dependencies: '@aws-sdk/core': 3.888.0 @@ -6614,11 +7045,28 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/token-providers@3.894.0': + dependencies: + '@aws-sdk/core': 3.894.0 + '@aws-sdk/nested-clients': 3.894.0 + '@aws-sdk/types': 3.893.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/types@3.887.0': dependencies: '@smithy/types': 4.5.0 tslib: 2.8.1 + '@aws-sdk/types@3.893.0': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@aws-sdk/util-endpoints@3.887.0': dependencies: '@aws-sdk/types': 3.887.0 @@ -6627,6 +7075,14 @@ snapshots: '@smithy/util-endpoints': 3.1.1 tslib: 2.8.1 + '@aws-sdk/util-endpoints@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-endpoints': 3.1.2 + tslib: 2.8.1 + '@aws-sdk/util-format-url@3.887.0': dependencies: '@aws-sdk/types': 3.887.0 @@ -6645,6 +7101,13 @@ snapshots: bowser: 2.12.1 tslib: 2.8.1 + '@aws-sdk/util-user-agent-browser@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/types': 4.5.0 + bowser: 2.12.1 + tslib: 2.8.1 + '@aws-sdk/util-user-agent-node@3.888.0': dependencies: '@aws-sdk/middleware-user-agent': 3.888.0 @@ -6653,11 +7116,25 @@ snapshots: '@smithy/types': 4.5.0 tslib: 2.8.1 + '@aws-sdk/util-user-agent-node@3.894.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.894.0 + '@aws-sdk/types': 3.893.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@aws-sdk/xml-builder@3.887.0': dependencies: '@smithy/types': 4.5.0 tslib: 2.8.1 + '@aws-sdk/xml-builder@3.894.0': + dependencies: + '@smithy/types': 4.5.0 + fast-xml-parser: 5.2.5 + tslib: 2.8.1 + '@aws/lambda-invoke-store@0.0.1': {} '@babel/code-frame@7.27.1': @@ -7917,6 +8394,14 @@ snapshots: '@smithy/util-middleware': 4.1.1 tslib: 2.8.1 + '@smithy/config-resolver@4.2.2': + dependencies: + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + '@smithy/util-config-provider': 4.1.0 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 + '@smithy/core@3.11.0': dependencies: '@smithy/middleware-serde': 4.1.1 @@ -7931,6 +8416,20 @@ snapshots: tslib: 2.8.1 uuid: 9.0.1 + '@smithy/core@3.11.1': + dependencies: + '@smithy/middleware-serde': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-stream': 4.3.2 + '@smithy/util-utf8': 4.1.0 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + '@smithy/credential-provider-imds@4.1.1': dependencies: '@smithy/node-config-provider': 4.2.1 @@ -7939,6 +8438,14 @@ snapshots: '@smithy/url-parser': 4.1.1 tslib: 2.8.1 + '@smithy/credential-provider-imds@4.1.2': + dependencies: + '@smithy/node-config-provider': 4.2.2 + '@smithy/property-provider': 4.1.1 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + tslib: 2.8.1 + '@smithy/eventstream-codec@4.1.1': dependencies: '@aws-crypto/crc32': 5.2.0 @@ -8014,6 +8521,17 @@ snapshots: '@smithy/util-middleware': 4.1.1 tslib: 2.8.1 + '@smithy/middleware-endpoint@4.2.3': + dependencies: + '@smithy/core': 3.11.1 + '@smithy/middleware-serde': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 + '@smithy/middleware-retry@4.2.1': dependencies: '@smithy/node-config-provider': 4.2.1 @@ -8027,6 +8545,19 @@ snapshots: tslib: 2.8.1 uuid: 9.0.1 + '@smithy/middleware-retry@4.2.4': + dependencies: + '@smithy/node-config-provider': 4.2.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/service-error-classification': 4.1.2 + '@smithy/smithy-client': 4.6.3 + '@smithy/types': 4.5.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.2 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + '@smithy/middleware-serde@4.1.1': dependencies: '@smithy/protocol-http': 5.2.1 @@ -8045,6 +8576,13 @@ snapshots: '@smithy/types': 4.5.0 tslib: 2.8.1 + '@smithy/node-config-provider@4.2.2': + dependencies: + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@smithy/node-http-handler@4.2.1': dependencies: '@smithy/abort-controller': 4.1.1 @@ -8078,11 +8616,20 @@ snapshots: dependencies: '@smithy/types': 4.5.0 + '@smithy/service-error-classification@4.1.2': + dependencies: + '@smithy/types': 4.5.0 + '@smithy/shared-ini-file-loader@4.1.1': dependencies: '@smithy/types': 4.5.0 tslib: 2.8.1 + '@smithy/shared-ini-file-loader@4.2.0': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@smithy/signature-v4@5.2.1': dependencies: '@smithy/is-array-buffer': 4.1.0 @@ -8104,6 +8651,16 @@ snapshots: '@smithy/util-stream': 4.3.1 tslib: 2.8.1 + '@smithy/smithy-client@4.6.3': + dependencies: + '@smithy/core': 3.11.1 + '@smithy/middleware-endpoint': 4.2.3 + '@smithy/middleware-stack': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-stream': 4.3.2 + tslib: 2.8.1 + '@smithy/types@4.5.0': dependencies: tslib: 2.8.1 @@ -8150,6 +8707,14 @@ snapshots: bowser: 2.12.1 tslib: 2.8.1 + '@smithy/util-defaults-mode-browser@4.1.3': + dependencies: + '@smithy/property-provider': 4.1.1 + '@smithy/smithy-client': 4.6.3 + '@smithy/types': 4.5.0 + bowser: 2.12.1 + tslib: 2.8.1 + '@smithy/util-defaults-mode-node@4.1.1': dependencies: '@smithy/config-resolver': 4.2.1 @@ -8160,12 +8725,28 @@ snapshots: '@smithy/types': 4.5.0 tslib: 2.8.1 + '@smithy/util-defaults-mode-node@4.1.3': + dependencies: + '@smithy/config-resolver': 4.2.2 + '@smithy/credential-provider-imds': 4.1.2 + '@smithy/node-config-provider': 4.2.2 + '@smithy/property-provider': 4.1.1 + '@smithy/smithy-client': 4.6.3 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@smithy/util-endpoints@3.1.1': dependencies: '@smithy/node-config-provider': 4.2.1 '@smithy/types': 4.5.0 tslib: 2.8.1 + '@smithy/util-endpoints@3.1.2': + dependencies: + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@smithy/util-hex-encoding@4.1.0': dependencies: tslib: 2.8.1 @@ -8181,6 +8762,12 @@ snapshots: '@smithy/types': 4.5.0 tslib: 2.8.1 + '@smithy/util-retry@4.1.2': + dependencies: + '@smithy/service-error-classification': 4.1.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + '@smithy/util-stream@4.3.1': dependencies: '@smithy/fetch-http-handler': 5.2.1 @@ -8192,6 +8779,17 @@ snapshots: '@smithy/util-utf8': 4.1.0 tslib: 2.8.1 + '@smithy/util-stream@4.3.2': + dependencies: + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-hex-encoding': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + '@smithy/util-uri-escape@4.1.0': dependencies: tslib: 2.8.1 @@ -8588,9 +9186,9 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vercel/functions@1.6.0(@aws-sdk/credential-provider-web-identity@3.888.0)': + '@vercel/functions@1.6.0(@aws-sdk/credential-provider-web-identity@3.894.0)': optionalDependencies: - '@aws-sdk/credential-provider-web-identity': 3.888.0 + '@aws-sdk/credential-provider-web-identity': 3.894.0 '@vue/compiler-core@3.5.21': dependencies: @@ -8971,12 +9569,12 @@ snapshots: dependencies: fill-range: 7.1.1 - braintrust@0.0.171(@aws-sdk/credential-provider-web-identity@3.888.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.10))(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67): + braintrust@0.0.171(@aws-sdk/credential-provider-web-identity@3.894.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.10))(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67): dependencies: '@ai-sdk/provider': 0.0.11 '@braintrust/core': 0.0.67 '@next/env': 14.2.32 - '@vercel/functions': 1.6.0(@aws-sdk/credential-provider-web-identity@3.888.0) + '@vercel/functions': 1.6.0(@aws-sdk/credential-provider-web-identity@3.894.0) ai: 3.4.33(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.38.10))(svelte@5.38.10)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) argparse: 2.0.1 chalk: 4.1.2 From 2931804cef841df27aca55ffbc73a78887d61a97 Mon Sep 17 00:00:00 2001 From: Filip Michalsky Date: Tue, 23 Sep 2025 13:40:35 +0200 Subject: [PATCH 05/20] add azure test file --- examples/test-azure.ts | 250 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 250 insertions(+) create mode 100644 examples/test-azure.ts diff --git a/examples/test-azure.ts b/examples/test-azure.ts new file mode 100644 index 000000000..ef60929a0 --- /dev/null +++ b/examples/test-azure.ts @@ -0,0 +1,250 @@ +import { Stagehand } from "@browserbasehq/stagehand"; +import StagehandConfig from "@/stagehand.config"; +import { z } from "zod/v3"; + +/** + * Test Azure OpenAI integration with Stagehand + * + * Prerequisites: + * - Set AZURE_API_KEY for your Azure OpenAI resource + * - Set AZURE_OPENAI_ENDPOINT (e.g., https://your-resource.openai.azure.com) + * - Set AZURE_DEPLOYMENT_NAME for your deployment (e.g., gpt-4) + * - Optionally set AZURE_RESOURCE_NAME (extracted from endpoint) + */ + +async function testAzureOpenAI() { + console.log("=== Azure OpenAI Integration Test ==="); + + // Check for required environment variables + const deploymentName = process.env.AZURE_DEPLOYMENT_NAME; + const apiKey = process.env.AZURE_API_KEY; + const endpoint = process.env.AZURE_OPENAI_ENDPOINT; + + if (!deploymentName) { + console.error( + "❌ AZURE_DEPLOYMENT_NAME not set. Please set it to your Azure OpenAI deployment name.", + ); + process.exit(1); + } + + if (!apiKey && !process.env.AZURE_CLIENT_ID) { + console.error( + "❌ AZURE_API_KEY not set. Please set it to your Azure OpenAI API key.", + ); + process.exit(1); + } + + console.log("Testing Azure OpenAI with deployment:", deploymentName); + console.log("Endpoint:", endpoint || "Using default"); + + // Extract resource name from endpoint if available + let resourceName = process.env.AZURE_RESOURCE_NAME; + if (!resourceName && endpoint) { + const match = endpoint.match(/https:\/\/(.+?)\.openai\.azure\.com/); + if (match) { + resourceName = match[1]; + } + } + + const stagehand = new Stagehand({ + ...StagehandConfig, + env: "LOCAL", + verbose: 1, + modelName: `azure/${deploymentName}`, + modelClientOptions: { + apiKey: apiKey, + resourceName: resourceName, + apiVersion: "2024-10-21", // Latest stable version + // Alternative: use the full endpoint + ...(endpoint && !resourceName ? { baseURL: endpoint } : {}), + }, + }); + + try { + await stagehand.init(); + const page = stagehand.page; + + // Test 1: Navigation and extraction + console.log("\n1. Testing navigation and extraction..."); + await page.goto("https://github.com/browserbase/stagehand"); + + const { description, language } = await page.extract({ + instruction: + "Extract the repository description and main programming language", + schema: z.object({ + description: z.string().describe("Repository description"), + language: z.string().describe("Main programming language"), + }), + }); + + console.log("Repository info:", { description, language }); + + // Test 2: Observation + console.log("\n2. Testing observation..."); + const elements = await page.observe("Find the star button"); + console.log("Found elements:", elements.length); + + // Test 3: Action + console.log("\n3. Testing action..."); + await page.act("click on the README section if visible"); + + await stagehand.close(); + console.log("\n✅ Azure OpenAI test completed successfully!"); + } catch (error) { + console.error("❌ Test failed:", error); + await stagehand.close(); + process.exit(1); + } +} + +// Alternative: Using Azure AD authentication (requires additional setup) +async function testAzureWithAAD() { + console.log("\n=== Azure OpenAI with Azure AD Authentication ==="); + + // Check if Azure AD credentials are available + if (!process.env.AZURE_CLIENT_ID || !process.env.AZURE_TENANT_ID) { + console.log( + "Skipping Azure AD test - AZURE_CLIENT_ID or AZURE_TENANT_ID not set", + ); + return; + } + + try { + // This requires @azure/identity package + // npm install @azure/identity + const { DefaultAzureCredential, getBearerTokenProvider } = await import( + "@azure/identity" + ); + + const credential = new DefaultAzureCredential(); + const scope = "https://cognitiveservices.azure.com/.default"; + const azureADTokenProvider = getBearerTokenProvider(credential, scope); + + const deploymentName = process.env.AZURE_DEPLOYMENT_NAME || "gpt-4"; + const resourceName = process.env.AZURE_RESOURCE_NAME; + + if (!resourceName) { + console.error( + "❌ AZURE_RESOURCE_NAME is required for Azure AD authentication", + ); + return; + } + + console.log( + "Using Azure AD authentication with deployment:", + deploymentName, + ); + + const stagehand = new Stagehand({ + ...StagehandConfig, + env: "LOCAL", + verbose: 1, + modelName: `azure/${deploymentName}`, + modelClientOptions: { + azureADTokenProvider, + resourceName: resourceName, + apiVersion: "2024-10-21", + }, + }); + + await stagehand.init(); + const page = stagehand.page; + + await page.goto("https://example.com"); + + const { text } = await page.extract({ + instruction: "Extract the main text content", + schema: z.object({ + text: z.string().describe("Main text content"), + }), + }); + + console.log("Extracted text:", text); + + await stagehand.close(); + console.log("✅ Azure AD authentication test completed successfully!"); + } catch (error) { + if (error.message?.includes("Cannot find module '@azure/identity'")) { + console.log( + "ℹ️ @azure/identity not installed. Install it to use Azure AD authentication:", + ); + console.log(" npm install @azure/identity"); + } else { + console.error("❌ Azure AD test failed:", error); + } + } +} + +async function testAzureWithSimplePage() { + const deploymentName = process.env.AZURE_DEPLOYMENT_NAME; + const apiKey = process.env.AZURE_API_KEY; + + if (!deploymentName || !apiKey) { + console.log("Skipping simple page test - missing configuration"); + return; + } + + console.log("\n4. Testing with a simple page..."); + + const resourceName = process.env.AZURE_RESOURCE_NAME; + const endpoint = process.env.AZURE_OPENAI_ENDPOINT; + + const stagehand = new Stagehand({ + ...StagehandConfig, + env: "LOCAL", + verbose: 1, + modelName: `azure/${deploymentName}`, + modelClientOptions: { + apiKey: apiKey, + ...(resourceName ? { resourceName } : {}), + ...(endpoint && !resourceName ? { baseURL: endpoint } : {}), + apiVersion: "2024-10-21", + }, + }); + + try { + await stagehand.init(); + const page = stagehand.page; + + await page.goto("https://example.com"); + + // Simple extraction + const { domain } = await page.extract({ + instruction: "What is the domain name shown on this page?", + schema: z.object({ + domain: z.string().describe("The domain name"), + }), + }); + + console.log("Domain found:", domain); + + // Try clicking + await page.act("click on More information"); + console.log("Action completed, current URL:", page.url()); + + await stagehand.close(); + console.log("✅ Simple page test completed successfully!"); + } catch (error) { + console.error("❌ Simple page test failed:", error); + await stagehand.close(); + } +} + +// Run tests +(async () => { + try { + // Run main Azure OpenAI test + await testAzureOpenAI(); + + // Run simple page test + await testAzureWithSimplePage(); + + // Optionally run Azure AD test if configured + await testAzureWithAAD(); + + console.log("\n🎉 All Azure tests completed!"); + } catch (error) { + console.error("Test suite failed:", error); + process.exit(1); + } +})(); From 2f3b8b96bbc1afafa3ddb375c0f57e88307a0c9d Mon Sep 17 00:00:00 2001 From: Sameel Date: Wed, 24 Sep 2025 13:10:23 -0400 Subject: [PATCH 06/20] fix bedrock test --- examples/test-azure.ts | 250 --------------------------------------- examples/test-bedrock.ts | 50 +++++--- lib/utils.ts | 5 + 3 files changed, 38 insertions(+), 267 deletions(-) delete mode 100644 examples/test-azure.ts diff --git a/examples/test-azure.ts b/examples/test-azure.ts deleted file mode 100644 index ef60929a0..000000000 --- a/examples/test-azure.ts +++ /dev/null @@ -1,250 +0,0 @@ -import { Stagehand } from "@browserbasehq/stagehand"; -import StagehandConfig from "@/stagehand.config"; -import { z } from "zod/v3"; - -/** - * Test Azure OpenAI integration with Stagehand - * - * Prerequisites: - * - Set AZURE_API_KEY for your Azure OpenAI resource - * - Set AZURE_OPENAI_ENDPOINT (e.g., https://your-resource.openai.azure.com) - * - Set AZURE_DEPLOYMENT_NAME for your deployment (e.g., gpt-4) - * - Optionally set AZURE_RESOURCE_NAME (extracted from endpoint) - */ - -async function testAzureOpenAI() { - console.log("=== Azure OpenAI Integration Test ==="); - - // Check for required environment variables - const deploymentName = process.env.AZURE_DEPLOYMENT_NAME; - const apiKey = process.env.AZURE_API_KEY; - const endpoint = process.env.AZURE_OPENAI_ENDPOINT; - - if (!deploymentName) { - console.error( - "❌ AZURE_DEPLOYMENT_NAME not set. Please set it to your Azure OpenAI deployment name.", - ); - process.exit(1); - } - - if (!apiKey && !process.env.AZURE_CLIENT_ID) { - console.error( - "❌ AZURE_API_KEY not set. Please set it to your Azure OpenAI API key.", - ); - process.exit(1); - } - - console.log("Testing Azure OpenAI with deployment:", deploymentName); - console.log("Endpoint:", endpoint || "Using default"); - - // Extract resource name from endpoint if available - let resourceName = process.env.AZURE_RESOURCE_NAME; - if (!resourceName && endpoint) { - const match = endpoint.match(/https:\/\/(.+?)\.openai\.azure\.com/); - if (match) { - resourceName = match[1]; - } - } - - const stagehand = new Stagehand({ - ...StagehandConfig, - env: "LOCAL", - verbose: 1, - modelName: `azure/${deploymentName}`, - modelClientOptions: { - apiKey: apiKey, - resourceName: resourceName, - apiVersion: "2024-10-21", // Latest stable version - // Alternative: use the full endpoint - ...(endpoint && !resourceName ? { baseURL: endpoint } : {}), - }, - }); - - try { - await stagehand.init(); - const page = stagehand.page; - - // Test 1: Navigation and extraction - console.log("\n1. Testing navigation and extraction..."); - await page.goto("https://github.com/browserbase/stagehand"); - - const { description, language } = await page.extract({ - instruction: - "Extract the repository description and main programming language", - schema: z.object({ - description: z.string().describe("Repository description"), - language: z.string().describe("Main programming language"), - }), - }); - - console.log("Repository info:", { description, language }); - - // Test 2: Observation - console.log("\n2. Testing observation..."); - const elements = await page.observe("Find the star button"); - console.log("Found elements:", elements.length); - - // Test 3: Action - console.log("\n3. Testing action..."); - await page.act("click on the README section if visible"); - - await stagehand.close(); - console.log("\n✅ Azure OpenAI test completed successfully!"); - } catch (error) { - console.error("❌ Test failed:", error); - await stagehand.close(); - process.exit(1); - } -} - -// Alternative: Using Azure AD authentication (requires additional setup) -async function testAzureWithAAD() { - console.log("\n=== Azure OpenAI with Azure AD Authentication ==="); - - // Check if Azure AD credentials are available - if (!process.env.AZURE_CLIENT_ID || !process.env.AZURE_TENANT_ID) { - console.log( - "Skipping Azure AD test - AZURE_CLIENT_ID or AZURE_TENANT_ID not set", - ); - return; - } - - try { - // This requires @azure/identity package - // npm install @azure/identity - const { DefaultAzureCredential, getBearerTokenProvider } = await import( - "@azure/identity" - ); - - const credential = new DefaultAzureCredential(); - const scope = "https://cognitiveservices.azure.com/.default"; - const azureADTokenProvider = getBearerTokenProvider(credential, scope); - - const deploymentName = process.env.AZURE_DEPLOYMENT_NAME || "gpt-4"; - const resourceName = process.env.AZURE_RESOURCE_NAME; - - if (!resourceName) { - console.error( - "❌ AZURE_RESOURCE_NAME is required for Azure AD authentication", - ); - return; - } - - console.log( - "Using Azure AD authentication with deployment:", - deploymentName, - ); - - const stagehand = new Stagehand({ - ...StagehandConfig, - env: "LOCAL", - verbose: 1, - modelName: `azure/${deploymentName}`, - modelClientOptions: { - azureADTokenProvider, - resourceName: resourceName, - apiVersion: "2024-10-21", - }, - }); - - await stagehand.init(); - const page = stagehand.page; - - await page.goto("https://example.com"); - - const { text } = await page.extract({ - instruction: "Extract the main text content", - schema: z.object({ - text: z.string().describe("Main text content"), - }), - }); - - console.log("Extracted text:", text); - - await stagehand.close(); - console.log("✅ Azure AD authentication test completed successfully!"); - } catch (error) { - if (error.message?.includes("Cannot find module '@azure/identity'")) { - console.log( - "ℹ️ @azure/identity not installed. Install it to use Azure AD authentication:", - ); - console.log(" npm install @azure/identity"); - } else { - console.error("❌ Azure AD test failed:", error); - } - } -} - -async function testAzureWithSimplePage() { - const deploymentName = process.env.AZURE_DEPLOYMENT_NAME; - const apiKey = process.env.AZURE_API_KEY; - - if (!deploymentName || !apiKey) { - console.log("Skipping simple page test - missing configuration"); - return; - } - - console.log("\n4. Testing with a simple page..."); - - const resourceName = process.env.AZURE_RESOURCE_NAME; - const endpoint = process.env.AZURE_OPENAI_ENDPOINT; - - const stagehand = new Stagehand({ - ...StagehandConfig, - env: "LOCAL", - verbose: 1, - modelName: `azure/${deploymentName}`, - modelClientOptions: { - apiKey: apiKey, - ...(resourceName ? { resourceName } : {}), - ...(endpoint && !resourceName ? { baseURL: endpoint } : {}), - apiVersion: "2024-10-21", - }, - }); - - try { - await stagehand.init(); - const page = stagehand.page; - - await page.goto("https://example.com"); - - // Simple extraction - const { domain } = await page.extract({ - instruction: "What is the domain name shown on this page?", - schema: z.object({ - domain: z.string().describe("The domain name"), - }), - }); - - console.log("Domain found:", domain); - - // Try clicking - await page.act("click on More information"); - console.log("Action completed, current URL:", page.url()); - - await stagehand.close(); - console.log("✅ Simple page test completed successfully!"); - } catch (error) { - console.error("❌ Simple page test failed:", error); - await stagehand.close(); - } -} - -// Run tests -(async () => { - try { - // Run main Azure OpenAI test - await testAzureOpenAI(); - - // Run simple page test - await testAzureWithSimplePage(); - - // Optionally run Azure AD test if configured - await testAzureWithAAD(); - - console.log("\n🎉 All Azure tests completed!"); - } catch (error) { - console.error("Test suite failed:", error); - process.exit(1); - } -})(); diff --git a/examples/test-bedrock.ts b/examples/test-bedrock.ts index a75ee02b0..910eae1eb 100644 --- a/examples/test-bedrock.ts +++ b/examples/test-bedrock.ts @@ -56,16 +56,20 @@ async function testBedrockIntegration() { console.log(`🌍 Region: ${process.env.AWS_REGION || "us-east-1"}`); // Check authentication setup - const hasBearer = !!process.env.AWS_BEARER_TOKEN_BEDROCK; - const hasStandard = !!(process.env.AWS_ACCESS_KEY_ID && process.env.AWS_SECRET_ACCESS_KEY); + // const hasBearer = !!process.env.AWS_BEARER_TOKEN_BEDROCK; + // const hasStandard = !!( + // process.env.AWS_ACCESS_KEY_ID && process.env.AWS_SECRET_ACCESS_KEY + // ); - if (!hasBearer && !hasStandard) { - console.error("❌ No AWS authentication found!"); - console.error("💡 Set either AWS_BEARER_TOKEN_BEDROCK or AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY"); - process.exit(1); - } + // if (!hasBearer && !hasStandard) { + // console.error("❌ No AWS authentication found!"); + // console.error( + // "💡 Set either AWS_BEARER_TOKEN_BEDROCK or AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY", + // ); + // process.exit(1); + // } - console.log(`🔐 Auth: ${hasBearer ? "Bearer Token" : "AWS Credentials"}`); + // console.log(`🔐 Auth: ${hasBearer ? "Bearer Token" : "AWS Credentials"}`); const stagehand = new Stagehand({ env: "LOCAL", @@ -93,31 +97,40 @@ async function testBedrockIntegration() { for (let attempt = 1; attempt <= maxRetries; attempt++) { try { - console.log(`🔄 Attempt ${attempt}/${maxRetries}: Trying page.act("click the link")`); + console.log( + `🔄 Attempt ${attempt}/${maxRetries}: Trying page.act("click the link")`, + ); await page.act("click the link"); - console.log(`✅ Click successful on attempt ${attempt} - URL: ${page.url()}`); + console.log( + `✅ Click successful on attempt ${attempt} - URL: ${page.url()}`, + ); success = true; break; } catch (error) { lastError = error as Error; - console.log(`⚠️ Attempt ${attempt} failed: ${error.message.split('\n')[0]}`); + console.log( + `⚠️ Attempt ${attempt} failed: ${error.message.split("\n")[0]}`, + ); if (attempt < maxRetries) { console.log(`🔄 Retrying in 1 second...`); - await new Promise(resolve => setTimeout(resolve, 1000)); + await new Promise((resolve) => setTimeout(resolve, 1000)); } } } if (!success) { - console.log(`❌ All ${maxRetries} attempts failed. Last error: ${lastError?.message}`); + console.log( + `❌ All ${maxRetries} attempts failed. Last error: ${lastError?.message}`, + ); throw lastError; } await stagehand.close(); - console.log("\n🎉 AWS Bedrock integration with OpenAI model is working perfectly!"); - + console.log( + "\n🎉 AWS Bedrock integration with OpenAI model is working perfectly!", + ); } catch (error) { console.error("\n❌ Test failed:", error.message); @@ -125,7 +138,10 @@ async function testBedrockIntegration() { if (error.message?.includes("You don't have access")) { console.error("💡 Enable model access in AWS Bedrock Console:"); console.error(" https://console.aws.amazon.com/bedrock/"); - } else if (error.message?.includes("credentials") || error.message?.includes("authentication")) { + } else if ( + error.message?.includes("credentials") || + error.message?.includes("authentication") + ) { console.error("💡 Check your AWS credentials in .env file"); } @@ -135,4 +151,4 @@ async function testBedrockIntegration() { } // Run the test -testBedrockIntegration(); \ No newline at end of file +testBedrockIntegration(); diff --git a/lib/utils.ts b/lib/utils.ts index f7b514d1f..cec552831 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -589,6 +589,11 @@ export function loadBedrockClientOptions( region, }; } catch (error) { + logger({ + category: "init", + message: `Error loading AWS Bedrock client options: ${error}`, + level: 0, + }); return { region, }; From 27c722c99c698766cbb037edb40e8a944f7ea049 Mon Sep 17 00:00:00 2001 From: Sameel Date: Thu, 25 Sep 2025 14:20:09 -0400 Subject: [PATCH 07/20] Update pnpm-lock.yaml --- pnpm-lock.yaml | 1193 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 1137 insertions(+), 56 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cbd994598..a891cdf40 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,42 @@ importers: .: dependencies: + '@ai-sdk/amazon-bedrock': + specifier: ^1.0.0 + version: 1.1.6(zod@3.25.67) + '@ai-sdk/anthropic': + specifier: ^1.2.6 + version: 1.2.12(zod@3.25.67) + '@ai-sdk/azure': + specifier: ^1.3.19 + version: 1.3.25(zod@3.25.67) + '@ai-sdk/cerebras': + specifier: ^0.2.6 + version: 0.2.16(zod@3.25.67) + '@ai-sdk/deepseek': + specifier: ^0.2.13 + version: 0.2.16(zod@3.25.67) + '@ai-sdk/google': + specifier: ^1.2.6 + version: 1.2.22(zod@3.25.67) + '@ai-sdk/groq': + specifier: ^1.2.4 + version: 1.2.9(zod@3.25.67) + '@ai-sdk/mistral': + specifier: ^1.2.7 + version: 1.2.8(zod@3.25.67) + '@ai-sdk/openai': + specifier: ^1.0.14 + version: 1.3.24(zod@3.25.67) + '@ai-sdk/perplexity': + specifier: ^1.1.7 + version: 1.1.9(zod@3.25.67) + '@ai-sdk/togetherai': + specifier: ^0.2.6 + version: 0.2.16(zod@3.25.67) + '@ai-sdk/xai': + specifier: ^1.2.15 + version: 1.2.18(zod@3.25.67) '@anthropic-ai/sdk': specifier: 0.39.0 version: 0.39.0 @@ -35,6 +71,9 @@ importers: fetch-cookie: specifier: ^3.1.0 version: 3.1.0 + ollama-ai-provider: + specifier: ^1.2.0 + version: 1.2.0(zod@3.25.67) openai: specifier: ^4.87.1 version: 4.104.0(ws@8.18.3)(zod@3.25.67) @@ -56,43 +95,6 @@ importers: zod-to-json-schema: specifier: ^3.23.5 version: 3.24.6(zod@3.25.67) - optionalDependencies: - '@ai-sdk/anthropic': - specifier: ^1.2.6 - version: 1.2.12(zod@3.25.67) - '@ai-sdk/azure': - specifier: ^1.3.19 - version: 1.3.25(zod@3.25.67) - '@ai-sdk/cerebras': - specifier: ^0.2.6 - version: 0.2.16(zod@3.25.67) - '@ai-sdk/deepseek': - specifier: ^0.2.13 - version: 0.2.16(zod@3.25.67) - '@ai-sdk/google': - specifier: ^1.2.6 - version: 1.2.22(zod@3.25.67) - '@ai-sdk/groq': - specifier: ^1.2.4 - version: 1.2.9(zod@3.25.67) - '@ai-sdk/mistral': - specifier: ^1.2.7 - version: 1.2.8(zod@3.25.67) - '@ai-sdk/openai': - specifier: ^1.0.14 - version: 1.3.24(zod@3.25.67) - '@ai-sdk/perplexity': - specifier: ^1.1.7 - version: 1.1.9(zod@3.25.67) - '@ai-sdk/togetherai': - specifier: ^0.2.6 - version: 0.2.16(zod@3.25.67) - '@ai-sdk/xai': - specifier: ^1.2.15 - version: 1.2.18(zod@3.25.67) - ollama-ai-provider: - specifier: ^1.2.0 - version: 1.2.0(zod@3.25.67) devDependencies: '@changesets/changelog-github': specifier: ^0.5.0 @@ -135,7 +137,7 @@ importers: version: 0.0.64 braintrust: specifier: ^0.0.171 - version: 0.0.171(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.39.3))(svelte@5.39.3)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) + version: 0.0.171(@aws-sdk/credential-provider-web-identity@3.896.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.39.3))(svelte@5.39.3)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) chalk: specifier: ^5.4.1 version: 5.6.2 @@ -227,6 +229,12 @@ importers: packages: + '@ai-sdk/amazon-bedrock@1.1.6': + resolution: {integrity: sha512-h6SJWpku+i8OsSz0A4RT2g2uD+3E0SUgWHsWRIpxmPNgM1DnH6lgSby5sxqAZDY5xJyJtRFW5vB9G3GEBjHy/g==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + '@ai-sdk/anthropic@1.2.12': resolution: {integrity: sha512-YSzjlko7JvuiyQFmI9RN1tNZdEiZxc+6xld/0tq/VkJaHpEzGAb1yiNxxvmYVcjvfu/PcvCxAAYXmTYQQ63IHQ==} engines: {node: '>=18'} @@ -296,6 +304,15 @@ packages: zod: optional: true + '@ai-sdk/provider-utils@2.1.6': + resolution: {integrity: sha512-Pfyaj0QZS22qyVn5Iz7IXcJ8nKIKlu2MeSAdKJzTwkAks7zdLaKVB+396Rqcp1bfQnxl7vaduQVMQiXUrgK8Gw==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + '@ai-sdk/provider-utils@2.2.8': resolution: {integrity: sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==} engines: {node: '>=18'} @@ -310,6 +327,10 @@ packages: resolution: {integrity: sha512-dQkfBDs2lTYpKM8389oopPdQgIU007GQyCbuPPrV+K6MtSII3HBfE0stUIMXUb44L+LK1t6GXPP7wjSzjO6uKg==} engines: {node: '>=18'} + '@ai-sdk/provider@1.0.7': + resolution: {integrity: sha512-q1PJEZ0qD9rVR+8JFEd01/QM++csMT5UVwYXSN2u54BrVw/D8TZLTeg2FEfKK00DgAx0UtWd8XOhhwITP9BT5g==} + engines: {node: '>=18'} + '@ai-sdk/provider@1.1.3': resolution: {integrity: sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==} engines: {node: '>=18'} @@ -418,6 +439,139 @@ packages: '@asyncapi/specs@6.10.0': resolution: {integrity: sha512-vB5oKLsdrLUORIZ5BXortZTlVyGWWMC1Nud/0LtgxQ3Yn2738HigAD6EVqScvpPsDUI/bcLVsYEXN4dtXQHVng==} + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-bedrock-runtime@3.896.0': + resolution: {integrity: sha512-3fmVdAh/6PzGK6lgpY/kAvxN9WwTwhOvkR1NfaUKT1khWGiZrHZfSMw3QXEkuWifbmv1M5krVYVHn5ki/dWYJg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sso@3.896.0': + resolution: {integrity: sha512-mpE3mrNili1dcvEvxaYjyoib8HlRXkb2bY5a3WeK++KObFY+HUujKtgQmiNSRX5YwQszm//fTrmGMmv9zpMcKg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/core@3.896.0': + resolution: {integrity: sha512-uJaoyWKeGNyCyeI+cIJrD7LEB4iF/W8/x2ij7zg32OFpAAJx96N34/e+XSKp/xkJpO5FKiBOskKLnHeUsJsAPA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-env@3.896.0': + resolution: {integrity: sha512-Cnqhupdkp825ICySrz4QTI64Nq3AmUAscPW8dueanni0avYBDp7RBppX4H0+6icqN569B983XNfQ0YSImQhfhg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-http@3.896.0': + resolution: {integrity: sha512-CN0fTCKCUA1OTSx1c76o8XyJCy2WoI/av3J8r8mL6GmxTerhLRyzDy/MwxzPjTYPoL+GLEg6V4a9fRkWj1hBUA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-ini@3.896.0': + resolution: {integrity: sha512-+rbYG98czzwZLTYHJasK+VBjnIeXk73mRpZXHvaa4kDNxBezdN2YsoGNpLlPSxPdbpq18LY3LRtkdFTaT6DIQA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-node@3.896.0': + resolution: {integrity: sha512-J0Jm+56MNngk1PIyqoJFf5FC2fjA4CYXlqODqNRDtid7yk7HB9W3UTtvxofmii5KJOLcHGNPdGnHWKkUc+xYgw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-process@3.896.0': + resolution: {integrity: sha512-UfWVMQPZy7dus40c4LWxh5vQ+I51z0q4vf09Eqas5848e9DrGRG46GYIuc/gy+4CqEypjbg/XNMjnZfGLHxVnQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-sso@3.896.0': + resolution: {integrity: sha512-77Te8WrVdLABKlv7QyetXP6aYEX1UORiahLA1PXQb/p66aFBw18Xc6JiN/6zJ4RqdyV1Xr9rwYBwGYua93ANIA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.896.0': + resolution: {integrity: sha512-gwMwZWumo+V0xJplO8j2HIb1TfPsF9fbcRGXS0CanEvjg4fF2Xs1pOQl2oCw3biPZpxHB0plNZjqSF2eneGg9g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/eventstream-handler-node@3.893.0': + resolution: {integrity: sha512-5BrpRYhYBUefbY2cXm0NQtrLnmre6923l2/Ep/233V6p6yjQVlG6Wd2IXG7Dw6aXW0KyJ8P9QzjP5BzPZpLjqQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-eventstream@3.893.0': + resolution: {integrity: sha512-fdjiXQ/4rKdSN/KvQMwIOwBFaptuE6xiHCvFNT4cv9PIKjvbsw08E4x0wI3WkHdl9Xd/OrwERZ7LofWbESIcBg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-host-header@3.893.0': + resolution: {integrity: sha512-qL5xYRt80ahDfj9nDYLhpCNkDinEXvjLe/Qen/Y/u12+djrR2MB4DRa6mzBCkLkdXDtf0WAoW2EZsNCfGrmOEQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-logger@3.893.0': + resolution: {integrity: sha512-ZqzMecjju5zkBquSIfVfCORI/3Mge21nUY4nWaGQy+NUXehqCGG4W7AiVpiHGOcY2cGJa7xeEkYcr2E2U9U0AA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.893.0': + resolution: {integrity: sha512-H7Zotd9zUHQAr/wr3bcWHULYhEeoQrF54artgsoUGIf/9emv6LzY89QUccKIxYd6oHKNTrTyXm9F0ZZrzXNxlg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-user-agent@3.896.0': + resolution: {integrity: sha512-so/3tZH34YIeqG/QJgn5ZinnmHRdXV1ehsj4wVUrezL/dVW86jfwIkQIwpw8roOC657UoUf91c9FDhCxs3J5aQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-websocket@3.893.0': + resolution: {integrity: sha512-IZ8fWTbe509mrQW/G221WV/XPepxXngb0xxuBEzlyVTkkiTcsyD445M/zK2DxrokNQAPHPmWQmA9KjysP7gQCA==} + engines: {node: '>= 14.0.0'} + + '@aws-sdk/nested-clients@3.896.0': + resolution: {integrity: sha512-KaHALB6DIXScJL/ExmonADr3jtTV6dpOHoEeTRSskJ/aW+rhZo7kH8SLmrwOT/qX8d5tza17YyR/oRkIKY6Eaw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/region-config-resolver@3.893.0': + resolution: {integrity: sha512-/cJvh3Zsa+Of0Zbg7vl9wp/kZtdb40yk/2+XcroAMVPO9hPvmS9r/UOm6tO7FeX4TtkRFwWaQJiTZTgSdsPY+Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/token-providers@3.896.0': + resolution: {integrity: sha512-WBoD+RY7tUfW9M+wGrZ2vdveR+ziZOjGHWFY3lcGnDvI8KE+fcSccEOTxgJBNBS5Z8B+WHKU2sZjb+Z7QqGwjw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/types@3.893.0': + resolution: {integrity: sha512-Aht1nn5SnA0N+Tjv0dzhAY7CQbxVtmq1bBR6xI0MhG7p2XYVh1wXuKTzrldEvQWwA3odOYunAfT9aBiKZx9qIg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-endpoints@3.895.0': + resolution: {integrity: sha512-MhxBvWbwxmKknuggO2NeMwOVkHOYL98pZ+1ZRI5YwckoCL3AvISMnPJgfN60ww6AIXHGpkp+HhpFdKOe8RHSEg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-format-url@3.893.0': + resolution: {integrity: sha512-VmAvcedZfQlekiSFJ9y/+YjuCFT3b/vXImbkqjYoD4gbsDjmKm5lxo/w1p9ch0s602obRPLMkh9H20YgXnmwEA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-locate-window@3.893.0': + resolution: {integrity: sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-user-agent-browser@3.893.0': + resolution: {integrity: sha512-PE9NtbDBW6Kgl1bG6A5fF3EPo168tnkj8TgMcT0sg4xYBWsBpq0bpJZRh+Jm5Bkwiw9IgTCLjEU7mR6xWaMB9w==} + + '@aws-sdk/util-user-agent-node@3.896.0': + resolution: {integrity: sha512-jegizucAwoxyBddKl0kRGNEgRHcfGuMeyhP1Nf+wIUmHz/9CxobIajqcVk/KRNLdZY5mSn7YG2VtP3z0BcBb0w==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/xml-builder@3.894.0': + resolution: {integrity: sha512-E6EAMc9dT1a2DOdo4zyOf3fp5+NJ2wI+mcm7RaW1baFIWDwcb99PpvWoV7YEiK7oaBDshuOEGWKUSYXdW+JYgA==} + engines: {node: '>=18.0.0'} + + '@aws/lambda-invoke-store@0.0.1': + resolution: {integrity: sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==} + engines: {node: '>=18.0.0'} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} @@ -1780,6 +1934,198 @@ packages: resolution: {integrity: sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==} engines: {node: '>=12'} + '@smithy/abort-controller@4.1.1': + resolution: {integrity: sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@4.2.2': + resolution: {integrity: sha512-IT6MatgBWagLybZl1xQcURXRICvqz1z3APSCAI9IqdvfCkrA7RaQIEfgC6G/KvfxnDfQUDqFV+ZlixcuFznGBQ==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.12.0': + resolution: {integrity: sha512-zJeAgogZfbwlPGL93y4Z/XNeIN37YCreRUd6YMIRvaq+6RnBK8PPYYIQ85Is/GglPh3kNImD5riDCXbVSDpCiQ==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.1.2': + resolution: {integrity: sha512-JlYNq8TShnqCLg0h+afqe2wLAwZpuoSgOyzhYvTgbiKBWRov+uUve+vrZEQO6lkdLOWPh7gK5dtb9dS+KGendg==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-codec@4.1.1': + resolution: {integrity: sha512-PwkQw1hZwHTQB6X5hSUWz2OSeuj5Z6enWuAqke7DgWoP3t6vg3ktPpqPz3Erkn6w+tmsl8Oss6nrgyezoea2Iw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-browser@4.1.1': + resolution: {integrity: sha512-Q9QWdAzRaIuVkefupRPRFAasaG/droBqn1feiMnmLa+LLEUG45pqX1+FurHFmlqiCfobB3nUlgoJfeXZsr7MPA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-config-resolver@4.2.1': + resolution: {integrity: sha512-oSUkF9zDN9zcOUBMtxp8RewJlh71E9NoHWU8jE3hU9JMYCsmW4assVTpgic/iS3/dM317j6hO5x18cc3XrfvEw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-node@4.1.1': + resolution: {integrity: sha512-tn6vulwf/ScY0vjhzptSJuDJJqlhNtUjkxJ4wiv9E3SPoEqTEKbaq6bfqRO7nvhTG29ALICRcvfFheOUPl8KNA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-universal@4.1.1': + resolution: {integrity: sha512-uLOAiM/Dmgh2CbEXQx+6/ssK7fbzFhd+LjdyFxXid5ZBCbLHTFHLdD/QbXw5aEDsLxQhgzDxLLsZhsftAYwHJA==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.2.1': + resolution: {integrity: sha512-5/3wxKNtV3wO/hk1is+CZUhL8a1yy/U+9u9LKQ9kZTkMsHaQjJhc3stFfiujtMnkITjzWfndGA2f7g9Uh9vKng==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@4.1.1': + resolution: {integrity: sha512-H9DIU9WBLhYrvPs9v4sYvnZ1PiAI0oc8CgNQUJ1rpN3pP7QADbTOUjchI2FB764Ub0DstH5xbTqcMJu1pnVqxA==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@4.1.1': + resolution: {integrity: sha512-1AqLyFlfrrDkyES8uhINRlJXmHA2FkG+3DY8X+rmLSqmFwk3DJnvhyGzyByPyewh2jbmV+TYQBEfngQax8IFGg==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.1.0': + resolution: {integrity: sha512-ePTYUOV54wMogio+he4pBybe8fwg4sDvEVDBU8ZlHOZXbXK3/C0XfJgUCu6qAZcawv05ZhZzODGUerFBPsPUDQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@4.1.1': + resolution: {integrity: sha512-9wlfBBgTsRvC2JxLJxv4xDGNBrZuio3AgSl0lSFX7fneW2cGskXTYpFxCdRYD2+5yzmsiTuaAJD1Wp7gWt9y9w==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@4.2.4': + resolution: {integrity: sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.3.0': + resolution: {integrity: sha512-qhEX9745fAxZvtLM4bQJAVC98elWjiMO2OiHl1s6p7hUzS4QfZO1gXUYNwEK8m0J6NoCD5W52ggWxbIDHI0XSg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@4.1.1': + resolution: {integrity: sha512-lh48uQdbCoj619kRouev5XbWhCwRKLmphAif16c4J6JgJ4uXjub1PI6RL38d3BLliUvSso6klyB/LTNpWSNIyg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@4.1.1': + resolution: {integrity: sha512-ygRnniqNcDhHzs6QAPIdia26M7e7z9gpkIMUe/pK0RsrQ7i5MblwxY8078/QCnGq6AmlUUWgljK2HlelsKIb/A==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@4.2.2': + resolution: {integrity: sha512-SYGTKyPvyCfEzIN5rD8q/bYaOPZprYUPD2f5g9M7OjaYupWOoQFYJ5ho+0wvxIRf471i2SR4GoiZ2r94Jq9h6A==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.2.1': + resolution: {integrity: sha512-REyybygHlxo3TJICPF89N2pMQSf+p+tBJqpVe1+77Cfi9HBPReNjTgtZ1Vg73exq24vkqJskKDpfF74reXjxfw==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@4.1.1': + resolution: {integrity: sha512-gm3ZS7DHxUbzC2wr8MUCsAabyiXY0gaj3ROWnhSx/9sPMc6eYLMM4rX81w1zsMaObj2Lq3PZtNCC1J6lpEY7zg==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@5.2.1': + resolution: {integrity: sha512-T8SlkLYCwfT/6m33SIU/JOVGNwoelkrvGjFKDSDtVvAXj/9gOT78JVJEas5a+ETjOu4SVvpCstKgd0PxSu/aHw==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-builder@4.1.1': + resolution: {integrity: sha512-J9b55bfimP4z/Jg1gNo+AT84hr90p716/nvxDkPGCD4W70MPms0h8KF50RDRgBGZeL83/u59DWNqJv6tEP/DHA==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-parser@4.1.1': + resolution: {integrity: sha512-63TEp92YFz0oQ7Pj9IuI3IgnprP92LrZtRAkE3c6wLWJxfy/yOPRt39IOKerVr0JS770olzl0kGafXlAXZ1vng==} + engines: {node: '>=18.0.0'} + + '@smithy/service-error-classification@4.1.2': + resolution: {integrity: sha512-Kqd8wyfmBWHZNppZSMfrQFpc3M9Y/kjyN8n8P4DqJJtuwgK1H914R471HTw7+RL+T7+kI1f1gOnL7Vb5z9+NgQ==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.2.0': + resolution: {integrity: sha512-OQTfmIEp2LLuWdxa8nEEPhZmiOREO6bcB6pjs0AySf4yiZhl6kMOfqmcwcY8BaBPX+0Tb+tG7/Ia/6mwpoZ7Pw==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.2.1': + resolution: {integrity: sha512-M9rZhWQLjlQVCCR37cSjHfhriGRN+FQ8UfgrYNufv66TJgk+acaggShl3KS5U/ssxivvZLlnj7QH2CUOKlxPyA==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@4.6.4': + resolution: {integrity: sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.5.0': + resolution: {integrity: sha512-RkUpIOsVlAwUIZXO1dsz8Zm+N72LClFfsNqf173catVlvRZiwPy0x2u0JLEA4byreOPKDZPGjmPDylMoP8ZJRg==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@4.1.1': + resolution: {integrity: sha512-bx32FUpkhcaKlEoOMbScvc93isaSiRM75pQ5IgIBaMkT7qMlIibpPRONyx/0CvrXHzJLpOn/u6YiDX2hcvs7Dg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@4.1.0': + resolution: {integrity: sha512-RUGd4wNb8GeW7xk+AY5ghGnIwM96V0l2uzvs/uVHf+tIuVX2WSvynk5CxNoBCsM2rQRSZElAo9rt3G5mJ/gktQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@4.1.0': + resolution: {integrity: sha512-V2E2Iez+bo6bUMOTENPr6eEmepdY8Hbs+Uc1vkDKgKNA/brTJqOW/ai3JO1BGj9GbCeLqw90pbbH7HFQyFotGQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.1.0': + resolution: {integrity: sha512-BOI5dYjheZdgR9XiEM3HJcEMCXSoqbzu7CzIgYrx0UtmvtC3tC2iDGpJLsSRFffUpy8ymsg2ARMP5fR8mtuUQQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@4.1.0': + resolution: {integrity: sha512-N6yXcjfe/E+xKEccWEKzK6M+crMrlwaCepKja0pNnlSkm6SjAeLKKA++er5Ba0I17gvKfN/ThV+ZOx/CntKTVw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@4.1.0': + resolution: {integrity: sha512-swXz2vMjrP1ZusZWVTB/ai5gK+J8U0BWvP10v9fpcFvg+Xi/87LHvHfst2IgCs1i0v4qFZfGwCmeD/KNCdJZbQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.1.4': + resolution: {integrity: sha512-mLDJ1s4eA3vwOGaQOEPlg5LB4LdZUUMpB5UMOMofeGhWqiS7WR7dTpLiNi9zVn+YziKUd3Af5NLfxDs7NJqmIw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.1.4': + resolution: {integrity: sha512-pjX2iMTcOASaSanAd7bu6i3fcMMezr3NTr8Rh64etB0uHRZi+Aw86DoCxPESjY4UTIuA06hhqtTtw95o//imYA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.1.2': + resolution: {integrity: sha512-+AJsaaEGb5ySvf1SKMRrPZdYHRYSzMkCoK16jWnIMpREAnflVspMIDeCVSZJuj+5muZfgGpNpijE3mUNtjv01Q==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@4.1.0': + resolution: {integrity: sha512-1LcueNN5GYC4tr8mo14yVYbh/Ur8jHhWOxniZXii+1+ePiIbsLZ5fEI0QQGtbRRP5mOhmooos+rLmVASGGoq5w==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@4.1.1': + resolution: {integrity: sha512-CGmZ72mL29VMfESz7S6dekqzCh8ZISj3B+w0g1hZFXaOjGTVaSqfAEFAq8EGp8fUL+Q2l8aqNmt8U1tglTikeg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.1.2': + resolution: {integrity: sha512-NCgr1d0/EdeP6U5PSZ9Uv5SMR5XRRYoVr1kRVtKZxWL3tixEL3UatrPIMFZSKwHlCcp2zPLDvMubVDULRqeunA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.3.2': + resolution: {integrity: sha512-Ka+FA2UCC/Q1dEqUanCdpqwxOFdf5Dg2VXtPtB1qxLcSGh5C1HdzklIt18xL504Wiy9nNUKwDMRTVCbKGoK69g==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@4.1.0': + resolution: {integrity: sha512-b0EFQkq35K5NHUYxU72JuoheM6+pytEVUGlTwiFxWFpmddA+Bpz3LgsPRIpBk8lnPE47yT7AF2Egc3jVnKLuPg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.1.0': + resolution: {integrity: sha512-mEu1/UIXAdNYuBcyEPbjScKi/+MQVXNIuY/7Cm5XLIWe319kDrT5SizBE95jqtmEXoDbGoZxKLCMttdZdqTZKQ==} + engines: {node: '>=18.0.0'} + + '@smithy/uuid@1.0.0': + resolution: {integrity: sha512-OlA/yZHh0ekYFnbUkmYBDQPE6fGfdrvgz39ktp8Xf+FA6BfxLejPTMDOG0Nfk5/rDySAz1dRbFf24zaAFYVXlQ==} + engines: {node: '>=18.0.0'} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -2401,6 +2747,9 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + bowser@2.12.1: + resolution: {integrity: sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -3194,6 +3543,10 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-xml-parser@5.2.5: + resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} + hasBin: true + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -5430,6 +5783,9 @@ packages: resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} engines: {node: '>=14.16'} + strnum@2.1.1: + resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} + style-to-js@1.1.17: resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} @@ -5981,12 +6337,20 @@ packages: snapshots: + '@ai-sdk/amazon-bedrock@1.1.6(zod@3.25.67)': + dependencies: + '@ai-sdk/provider': 1.0.7 + '@ai-sdk/provider-utils': 2.1.6(zod@3.25.67) + '@aws-sdk/client-bedrock-runtime': 3.896.0 + zod: 3.25.67 + transitivePeerDependencies: + - aws-crt + '@ai-sdk/anthropic@1.2.12(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/azure@1.3.25(zod@3.25.67)': dependencies: @@ -5994,7 +6358,6 @@ snapshots: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/cerebras@0.2.16(zod@3.25.67)': dependencies: @@ -6002,7 +6365,6 @@ snapshots: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/deepseek@0.2.16(zod@3.25.67)': dependencies: @@ -6010,49 +6372,42 @@ snapshots: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/google@1.2.22(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/groq@1.2.9(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/mistral@1.2.8(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/openai-compatible@0.2.16(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/openai@1.3.24(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/perplexity@1.1.9(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/provider-utils@1.0.22(zod@3.25.67)': dependencies: @@ -6063,6 +6418,15 @@ snapshots: optionalDependencies: zod: 3.25.67 + '@ai-sdk/provider-utils@2.1.6(zod@3.25.67)': + dependencies: + '@ai-sdk/provider': 1.0.7 + eventsource-parser: 3.0.6 + nanoid: 3.3.11 + secure-json-parse: 2.7.0 + optionalDependencies: + zod: 3.25.67 + '@ai-sdk/provider-utils@2.2.8(zod@3.25.67)': dependencies: '@ai-sdk/provider': 1.1.3 @@ -6078,6 +6442,10 @@ snapshots: dependencies: json-schema: 0.4.0 + '@ai-sdk/provider@1.0.7': + dependencies: + json-schema: 0.4.0 + '@ai-sdk/provider@1.1.3': dependencies: json-schema: 0.4.0 @@ -6125,7 +6493,6 @@ snapshots: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@ai-sdk/ui-utils@0.0.50(zod@3.25.67)': dependencies: @@ -6160,7 +6527,6 @@ snapshots: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.67) zod: 3.25.67 - optional: true '@alcalzone/ansi-tokenize@0.2.0': dependencies: @@ -6220,6 +6586,409 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.893.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.893.0 + '@aws-sdk/util-locate-window': 3.893.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.893.0 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/client-bedrock-runtime@3.896.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.896.0 + '@aws-sdk/credential-provider-node': 3.896.0 + '@aws-sdk/eventstream-handler-node': 3.893.0 + '@aws-sdk/middleware-eventstream': 3.893.0 + '@aws-sdk/middleware-host-header': 3.893.0 + '@aws-sdk/middleware-logger': 3.893.0 + '@aws-sdk/middleware-recursion-detection': 3.893.0 + '@aws-sdk/middleware-user-agent': 3.896.0 + '@aws-sdk/middleware-websocket': 3.893.0 + '@aws-sdk/region-config-resolver': 3.893.0 + '@aws-sdk/token-providers': 3.896.0 + '@aws-sdk/types': 3.893.0 + '@aws-sdk/util-endpoints': 3.895.0 + '@aws-sdk/util-user-agent-browser': 3.893.0 + '@aws-sdk/util-user-agent-node': 3.896.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.12.0 + '@smithy/eventstream-serde-browser': 4.1.1 + '@smithy/eventstream-serde-config-resolver': 4.2.1 + '@smithy/eventstream-serde-node': 4.1.1 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.4 + '@smithy/middleware-retry': 4.3.0 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.4 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.4 + '@smithy/util-defaults-mode-node': 4.1.4 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.2 + '@smithy/util-stream': 4.3.2 + '@smithy/util-utf8': 4.1.0 + '@smithy/uuid': 1.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.896.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.896.0 + '@aws-sdk/middleware-host-header': 3.893.0 + '@aws-sdk/middleware-logger': 3.893.0 + '@aws-sdk/middleware-recursion-detection': 3.893.0 + '@aws-sdk/middleware-user-agent': 3.896.0 + '@aws-sdk/region-config-resolver': 3.893.0 + '@aws-sdk/types': 3.893.0 + '@aws-sdk/util-endpoints': 3.895.0 + '@aws-sdk/util-user-agent-browser': 3.893.0 + '@aws-sdk/util-user-agent-node': 3.896.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.12.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.4 + '@smithy/middleware-retry': 4.3.0 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.4 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.4 + '@smithy/util-defaults-mode-node': 4.1.4 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.2 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.896.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@aws-sdk/xml-builder': 3.894.0 + '@smithy/core': 3.12.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/property-provider': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/signature-v4': 5.2.1 + '@smithy/smithy-client': 4.6.4 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.896.0': + dependencies: + '@aws-sdk/core': 3.896.0 + '@aws-sdk/types': 3.893.0 + '@smithy/property-provider': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.896.0': + dependencies: + '@aws-sdk/core': 3.896.0 + '@aws-sdk/types': 3.893.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/property-provider': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.4 + '@smithy/types': 4.5.0 + '@smithy/util-stream': 4.3.2 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.896.0': + dependencies: + '@aws-sdk/core': 3.896.0 + '@aws-sdk/credential-provider-env': 3.896.0 + '@aws-sdk/credential-provider-http': 3.896.0 + '@aws-sdk/credential-provider-process': 3.896.0 + '@aws-sdk/credential-provider-sso': 3.896.0 + '@aws-sdk/credential-provider-web-identity': 3.896.0 + '@aws-sdk/nested-clients': 3.896.0 + '@aws-sdk/types': 3.893.0 + '@smithy/credential-provider-imds': 4.1.2 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.896.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.896.0 + '@aws-sdk/credential-provider-http': 3.896.0 + '@aws-sdk/credential-provider-ini': 3.896.0 + '@aws-sdk/credential-provider-process': 3.896.0 + '@aws-sdk/credential-provider-sso': 3.896.0 + '@aws-sdk/credential-provider-web-identity': 3.896.0 + '@aws-sdk/types': 3.893.0 + '@smithy/credential-provider-imds': 4.1.2 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.896.0': + dependencies: + '@aws-sdk/core': 3.896.0 + '@aws-sdk/types': 3.893.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.896.0': + dependencies: + '@aws-sdk/client-sso': 3.896.0 + '@aws-sdk/core': 3.896.0 + '@aws-sdk/token-providers': 3.896.0 + '@aws-sdk/types': 3.893.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.896.0': + dependencies: + '@aws-sdk/core': 3.896.0 + '@aws-sdk/nested-clients': 3.896.0 + '@aws-sdk/types': 3.893.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/eventstream-handler-node@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/eventstream-codec': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-eventstream@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-host-header@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-logger@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-recursion-detection@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@aws/lambda-invoke-store': 0.0.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-user-agent@3.896.0': + dependencies: + '@aws-sdk/core': 3.896.0 + '@aws-sdk/types': 3.893.0 + '@aws-sdk/util-endpoints': 3.895.0 + '@smithy/core': 3.12.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-websocket@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@aws-sdk/util-format-url': 3.893.0 + '@smithy/eventstream-codec': 4.1.1 + '@smithy/eventstream-serde-browser': 4.1.1 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/signature-v4': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-hex-encoding': 4.1.0 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.896.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.896.0 + '@aws-sdk/middleware-host-header': 3.893.0 + '@aws-sdk/middleware-logger': 3.893.0 + '@aws-sdk/middleware-recursion-detection': 3.893.0 + '@aws-sdk/middleware-user-agent': 3.896.0 + '@aws-sdk/region-config-resolver': 3.893.0 + '@aws-sdk/types': 3.893.0 + '@aws-sdk/util-endpoints': 3.895.0 + '@aws-sdk/util-user-agent-browser': 3.893.0 + '@aws-sdk/util-user-agent-node': 3.896.0 + '@smithy/config-resolver': 4.2.2 + '@smithy/core': 3.12.0 + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/hash-node': 4.1.1 + '@smithy/invalid-dependency': 4.1.1 + '@smithy/middleware-content-length': 4.1.1 + '@smithy/middleware-endpoint': 4.2.4 + '@smithy/middleware-retry': 4.3.0 + '@smithy/middleware-serde': 4.1.1 + '@smithy/middleware-stack': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/node-http-handler': 4.2.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/smithy-client': 4.6.4 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-body-length-node': 4.1.0 + '@smithy/util-defaults-mode-browser': 4.1.4 + '@smithy/util-defaults-mode-node': 4.1.4 + '@smithy/util-endpoints': 3.1.2 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.2 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + '@smithy/util-config-provider': 4.1.0 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.896.0': + dependencies: + '@aws-sdk/core': 3.896.0 + '@aws-sdk/nested-clients': 3.896.0 + '@aws-sdk/types': 3.893.0 + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.893.0': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/util-endpoints@3.895.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-endpoints': 3.1.2 + tslib: 2.8.1 + + '@aws-sdk/util-format-url@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/querystring-builder': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.893.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-browser@3.893.0': + dependencies: + '@aws-sdk/types': 3.893.0 + '@smithy/types': 4.5.0 + bowser: 2.12.1 + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-node@3.896.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.896.0 + '@aws-sdk/types': 3.893.0 + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.894.0': + dependencies: + '@smithy/types': 4.5.0 + fast-xml-parser: 5.2.5 + tslib: 2.8.1 + + '@aws/lambda-invoke-store@0.0.1': {} + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 @@ -7687,6 +8456,310 @@ snapshots: dependencies: escape-string-regexp: 5.0.0 + '@smithy/abort-controller@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/config-resolver@4.2.2': + dependencies: + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + '@smithy/util-config-provider': 4.1.0 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 + + '@smithy/core@3.12.0': + dependencies: + '@smithy/middleware-serde': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-body-length-browser': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-stream': 4.3.2 + '@smithy/util-utf8': 4.1.0 + '@smithy/uuid': 1.0.0 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.1.2': + dependencies: + '@smithy/node-config-provider': 4.2.2 + '@smithy/property-provider': 4.1.1 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + tslib: 2.8.1 + + '@smithy/eventstream-codec@4.1.1': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.5.0 + '@smithy/util-hex-encoding': 4.1.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-browser@4.1.1': + dependencies: + '@smithy/eventstream-serde-universal': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-config-resolver@4.2.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-node@4.1.1': + dependencies: + '@smithy/eventstream-serde-universal': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-universal@4.1.1': + dependencies: + '@smithy/eventstream-codec': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.2.1': + dependencies: + '@smithy/protocol-http': 5.2.1 + '@smithy/querystring-builder': 4.1.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + tslib: 2.8.1 + + '@smithy/hash-node@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.1.0': + dependencies: + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.1.1': + dependencies: + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.2.4': + dependencies: + '@smithy/core': 3.12.0 + '@smithy/middleware-serde': 4.1.1 + '@smithy/node-config-provider': 4.2.2 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + '@smithy/url-parser': 4.1.1 + '@smithy/util-middleware': 4.1.1 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.3.0': + dependencies: + '@smithy/node-config-provider': 4.2.2 + '@smithy/protocol-http': 5.2.1 + '@smithy/service-error-classification': 4.1.2 + '@smithy/smithy-client': 4.6.4 + '@smithy/types': 4.5.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-retry': 4.1.2 + '@smithy/uuid': 1.0.0 + tslib: 2.8.1 + + '@smithy/middleware-serde@4.1.1': + dependencies: + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.2.2': + dependencies: + '@smithy/property-provider': 4.1.1 + '@smithy/shared-ini-file-loader': 4.2.0 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.2.1': + dependencies: + '@smithy/abort-controller': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/querystring-builder': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/property-provider@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/protocol-http@5.2.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/querystring-builder@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + '@smithy/util-uri-escape': 4.1.0 + tslib: 2.8.1 + + '@smithy/querystring-parser@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/service-error-classification@4.1.2': + dependencies: + '@smithy/types': 4.5.0 + + '@smithy/shared-ini-file-loader@4.2.0': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/signature-v4@5.2.1': + dependencies: + '@smithy/is-array-buffer': 4.1.0 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-hex-encoding': 4.1.0 + '@smithy/util-middleware': 4.1.1 + '@smithy/util-uri-escape': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + + '@smithy/smithy-client@4.6.4': + dependencies: + '@smithy/core': 3.12.0 + '@smithy/middleware-endpoint': 4.2.4 + '@smithy/middleware-stack': 4.1.1 + '@smithy/protocol-http': 5.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-stream': 4.3.2 + tslib: 2.8.1 + + '@smithy/types@4.5.0': + dependencies: + tslib: 2.8.1 + + '@smithy/url-parser@4.1.1': + dependencies: + '@smithy/querystring-parser': 4.1.1 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/util-base64@4.1.0': + dependencies: + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.1.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-body-length-node@4.1.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-buffer-from@4.1.0': + dependencies: + '@smithy/is-array-buffer': 4.1.0 + tslib: 2.8.1 + + '@smithy/util-config-provider@4.1.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-defaults-mode-browser@4.1.4': + dependencies: + '@smithy/property-provider': 4.1.1 + '@smithy/smithy-client': 4.6.4 + '@smithy/types': 4.5.0 + bowser: 2.12.1 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-node@4.1.4': + dependencies: + '@smithy/config-resolver': 4.2.2 + '@smithy/credential-provider-imds': 4.1.2 + '@smithy/node-config-provider': 4.2.2 + '@smithy/property-provider': 4.1.1 + '@smithy/smithy-client': 4.6.4 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/util-endpoints@3.1.2': + dependencies: + '@smithy/node-config-provider': 4.2.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/util-hex-encoding@4.1.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-middleware@4.1.1': + dependencies: + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/util-retry@4.1.2': + dependencies: + '@smithy/service-error-classification': 4.1.2 + '@smithy/types': 4.5.0 + tslib: 2.8.1 + + '@smithy/util-stream@4.3.2': + dependencies: + '@smithy/fetch-http-handler': 5.2.1 + '@smithy/node-http-handler': 4.2.1 + '@smithy/types': 4.5.0 + '@smithy/util-base64': 4.1.0 + '@smithy/util-buffer-from': 4.1.0 + '@smithy/util-hex-encoding': 4.1.0 + '@smithy/util-utf8': 4.1.0 + tslib: 2.8.1 + + '@smithy/util-uri-escape@4.1.0': + dependencies: + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@4.1.0': + dependencies: + '@smithy/util-buffer-from': 4.1.0 + tslib: 2.8.1 + + '@smithy/uuid@1.0.0': + dependencies: + tslib: 2.8.1 + '@socket.io/component-emitter@3.1.2': {} '@stoplight/better-ajv-errors@1.0.3(ajv@8.17.1)': @@ -8078,7 +9151,9 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vercel/functions@1.6.0': {} + '@vercel/functions@1.6.0(@aws-sdk/credential-provider-web-identity@3.896.0)': + optionalDependencies: + '@aws-sdk/credential-provider-web-identity': 3.896.0 '@vue/compiler-core@3.5.21': dependencies: @@ -8444,6 +9519,8 @@ snapshots: boolbase@1.0.0: {} + bowser@2.12.1: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -8457,12 +9534,12 @@ snapshots: dependencies: fill-range: 7.1.1 - braintrust@0.0.171(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.39.3))(svelte@5.39.3)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67): + braintrust@0.0.171(@aws-sdk/credential-provider-web-identity@3.896.0)(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.39.3))(svelte@5.39.3)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67): dependencies: '@ai-sdk/provider': 0.0.11 '@braintrust/core': 0.0.67 '@next/env': 14.2.32 - '@vercel/functions': 1.6.0 + '@vercel/functions': 1.6.0(@aws-sdk/credential-provider-web-identity@3.896.0) ai: 3.4.33(openai@4.104.0(ws@8.18.3)(zod@3.25.67))(react@19.1.1)(sswr@2.2.0(svelte@5.39.3))(svelte@5.39.3)(vue@3.5.21(typescript@5.9.2))(zod@3.25.67) argparse: 2.0.1 chalk: 4.1.2 @@ -9446,6 +10523,10 @@ snapshots: fast-uri@3.1.0: {} + fast-xml-parser@5.2.5: + dependencies: + strnum: 2.1.1 + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -11180,7 +12261,6 @@ snapshots: partial-json: 0.1.7 optionalDependencies: zod: 3.25.67 - optional: true on-exit-leak-free@2.1.2: {} @@ -11389,8 +12469,7 @@ snapshots: parseurl@1.3.3: {} - partial-json@0.1.7: - optional: true + partial-json@0.1.7: {} patch-console@2.0.0: {} @@ -12390,6 +13469,8 @@ snapshots: strip-json-comments@5.0.3: {} + strnum@2.1.1: {} + style-to-js@1.1.17: dependencies: style-to-object: 1.0.9 From 69c3d9317f067602b234538d967056277648d10f Mon Sep 17 00:00:00 2001 From: Sameel Date: Fri, 26 Sep 2025 02:43:47 -0400 Subject: [PATCH 08/20] better modelclientoption api handling --- lib/StagehandPage.ts | 3 +++ lib/api.ts | 28 +++++++++------------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/lib/StagehandPage.ts b/lib/StagehandPage.ts index edb695963..dccfd7241 100644 --- a/lib/StagehandPage.ts +++ b/lib/StagehandPage.ts @@ -784,6 +784,7 @@ ${scriptContent} \ frameId: this.rootFrameId, modelClientOptions: modelClientOptions || this.stagehand["modelClientOptions"], + modelName: modelName || this.stagehand["modelName"], }; const result = await this.api.act(opts); this.stagehand.addToHistory("act", actionOrOptions, result); @@ -886,6 +887,7 @@ ${scriptContent} \ frameId: this.rootFrameId, modelClientOptions: modelClientOptions || this.stagehand["modelClientOptions"], + modelName: modelName || this.stagehand["modelName"], }; const result = await this.api.extract(opts); this.stagehand.addToHistory("extract", instructionOrOptions, result); @@ -995,6 +997,7 @@ ${scriptContent} \ frameId: this.rootFrameId, modelClientOptions: modelClientOptions || this.stagehand["modelClientOptions"], + modelName: modelName || this.stagehand["modelName"], }; const result = await this.api.observe(opts); this.stagehand.addToHistory("observe", instructionOrOptions, result); diff --git a/lib/api.ts b/lib/api.ts index d196aa649..304f9b1f4 100644 --- a/lib/api.ts +++ b/lib/api.ts @@ -185,19 +185,16 @@ export class StagehandAPI { const queryString = urlParams.toString(); const url = `/sessions/${this.sessionId}/${method}${queryString ? `?${queryString}` : ""}`; - // Extract modelClientOptions from args if present - const modelClientOptions = ( - args as { modelClientOptions?: Record } - )?.modelClientOptions; + this.logger({ + category: "execute", + message: `Executing ${method} with args: ${JSON.stringify(args)}`, + level: 1, + }); - const response = await this.request( - url, - { - method: "POST", - body: JSON.stringify(args), - }, - modelClientOptions, - ); + const response = await this.request(url, { + method: "POST", + body: JSON.stringify(args), + }); if (!response.ok) { const errorBody = await response.text(); @@ -256,7 +253,6 @@ export class StagehandAPI { private async request( path: string, options: RequestInit = {}, - modelClientOptions?: Record, ): Promise { const defaultHeaders: Record = { "x-bb-api-key": this.apiKey, @@ -270,12 +266,6 @@ export class StagehandAPI { "x-sdk-version": STAGEHAND_VERSION, }; - // Add modelClientOptions as a header if provided - if (modelClientOptions) { - defaultHeaders["x-model-client-options"] = - JSON.stringify(modelClientOptions); - } - if (options.method === "POST" && options.body) { defaultHeaders["Content-Type"] = "application/json"; } From 467dadefe42d0dadd4ccbd2b70b4e65f39da1c76 Mon Sep 17 00:00:00 2001 From: Sameel Date: Fri, 26 Sep 2025 15:25:28 -0400 Subject: [PATCH 09/20] dont override region --- examples/example-bedrock.ts | 97 +++++++++++++++++++++++ examples/test-bedrock.ts | 154 ------------------------------------ lib/index.ts | 5 +- lib/llm/LLMProvider.ts | 5 +- lib/utils.ts | 22 +++++- 5 files changed, 123 insertions(+), 160 deletions(-) create mode 100644 examples/example-bedrock.ts delete mode 100644 examples/test-bedrock.ts diff --git a/examples/example-bedrock.ts b/examples/example-bedrock.ts new file mode 100644 index 000000000..546914471 --- /dev/null +++ b/examples/example-bedrock.ts @@ -0,0 +1,97 @@ +import { Stagehand } from "@browserbasehq/stagehand"; + +/** + * AWS Bedrock Integration Example for Stagehand + * + * This example demonstrates how to use Stagehand with AWS Bedrock models. + * Anthropic models work best for advanced features like structured extraction + * and observation, while OpenAI models work well for navigation and basic operations. + * + * SETUP: + * + * 1. Enable model access in AWS Bedrock Console: + * - Visit: https://console.aws.amazon.com/bedrock/ + * - Go to "Model access" → "Enable model access" + * - Enable desired models (e.g., Anthropic Claude, OpenAI models) + * - Wait for approval + * + * 2. Authentication (choose one): + * + * Option A - Bearer Token: + * ``` + * AWS_BEARER_TOKEN_BEDROCK=bedrock-api-key-[your-base64-token] + * ``` + * + * Option B - Standard AWS Credentials: + * ``` + * AWS_ACCESS_KEY_ID=your-access-key + * AWS_SECRET_ACCESS_KEY=your-secret-key + * ``` + * + * 3. Set region and model: + * ``` + * AWS_REGION=us-east-1 + * ``` + * + * RECOMMENDED MODELS: + * - anthropic.claude-3-5-sonnet-20240620-v1:0 (best for extraction/observation) + * - anthropic.claude-3-haiku-20240307-v1:0 (faster, good for basic tasks) + * - openai.gpt-oss-120b-1:0 (good for navigation and simple operations) + */ + +async function runBedrockExample() { + // Initialize Stagehand with AWS Bedrock + const stagehand = new Stagehand({ + env: "LOCAL", + modelName: "bedrock/anthropic.claude-3-5-sonnet-20240620-v1:0", + modelClientOptions: { + region: "us-west-2", // Will use environment variables if not specified + }, + }); + + try { + await stagehand.init(); + const page = stagehand.page; + + console.log("🚀 Stagehand initialized with AWS Bedrock"); + + // Navigate to a website + await page.goto("https://example.com"); + console.log("📄 Navigated to example.com"); + + // Perform actions on the page + await page.act("click the link"); + console.log("🎯 Clicked the 'More information...' link"); + + // Extract structured data + const pageInfo = await page.extract({ + title: "The page title", + url: "The current URL", + }); + + console.log("📊 Extracted data:", pageInfo); + + // Observe elements on the page + const elements = await page.observe(); + console.log(`👀 Found ${elements.length} interactive elements`); + + console.log("✅ AWS Bedrock example completed successfully!"); + } catch (error) { + console.error("❌ Error:", error.message); + + // Common troubleshooting hints + if (error.message?.includes("access")) { + console.error("💡 Check model access in AWS Bedrock Console"); + } else if ( + error.message?.includes("credentials") || + error.message?.includes("authentication") + ) { + console.error("💡 Verify your AWS credentials are set correctly"); + } + } finally { + await stagehand.close(); + } +} + +// Run the example +runBedrockExample(); diff --git a/examples/test-bedrock.ts b/examples/test-bedrock.ts deleted file mode 100644 index 910eae1eb..000000000 --- a/examples/test-bedrock.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { Stagehand } from "@browserbasehq/stagehand"; - -/** - * AWS Bedrock Integration Test for Stagehand - * - * This test demonstrates AWS Bedrock integration using bearer token authentication. - * - * NOTE: This test focuses on basic functionality as OpenAI models in Bedrock - * work best for navigation and simple operations. For advanced features like - * structured extraction and observation, consider using Anthropic models. - * - * SETUP INSTRUCTIONS: - * - * 1. GET AWS BEDROCK API KEY: - * - Go to AWS Bedrock Console: https://console.aws.amazon.com/bedrock/ - * - Navigate to "Model access" in the left sidebar - * - Click "Enable model access" - * - Enable access for desired models (e.g., Anthropic Claude, OpenAI models) - * - Wait for approval (can take minutes to hours) - * - * 2. GENERATE BEARER TOKEN: - * - In AWS Bedrock Console, go to "API keys" section - * - Create a new API key - * - Copy the bearer token (starts with "bedrock-api-key-") - * - * 3. SET ENVIRONMENT VARIABLES: - * Create a .env file with: - * ``` - * AWS_BEARER_TOKEN_BEDROCK=bedrock-api-key-[your-base64-token] - * AWS_REGION=us-east-1 - * AWS_MODEL_ID=anthropic.claude-3-haiku-20240307-v1:0 - * ``` - * - * 4. ALTERNATIVE - STANDARD AWS CREDENTIALS: - * If you prefer standard AWS credentials instead of bearer token: - * ``` - * AWS_ACCESS_KEY_ID=your-access-key - * AWS_SECRET_ACCESS_KEY=your-secret-key - * AWS_REGION=us-east-1 - * AWS_MODEL_ID=anthropic.claude-3-haiku-20240307-v1:0 - * ``` - * - * SUPPORTED MODEL IDs: - * - anthropic.claude-3-haiku-20240307-v1:0 (recommended for extract/observe) - * - anthropic.claude-3-5-sonnet-20240620-v1:0 (recommended for extract/observe) - * - openai.gpt-oss-120b-1:0 (works well for act/observe, may need adjustments for extract) - * - See AWS Bedrock Console for full list of available models - */ - -async function testBedrockIntegration() { - // Use model ID from environment or default to OpenAI GPT-OSS-120B - const modelId = process.env.AWS_MODEL_ID || "openai.gpt-oss-120b-1:0"; - - console.log("🧪 AWS Bedrock Integration Test"); - console.log(`📋 Model: ${modelId}`); - console.log(`🌍 Region: ${process.env.AWS_REGION || "us-east-1"}`); - - // Check authentication setup - // const hasBearer = !!process.env.AWS_BEARER_TOKEN_BEDROCK; - // const hasStandard = !!( - // process.env.AWS_ACCESS_KEY_ID && process.env.AWS_SECRET_ACCESS_KEY - // ); - - // if (!hasBearer && !hasStandard) { - // console.error("❌ No AWS authentication found!"); - // console.error( - // "💡 Set either AWS_BEARER_TOKEN_BEDROCK or AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY", - // ); - // process.exit(1); - // } - - // console.log(`🔐 Auth: ${hasBearer ? "Bearer Token" : "AWS Credentials"}`); - - const stagehand = new Stagehand({ - env: "LOCAL", - verbose: 2, // Maximum verbosity to see all LLM details - modelName: `bedrock/${modelId}`, - }); - - try { - await stagehand.init(); - const page = stagehand.page; - - console.log("✅ Stagehand initialized successfully"); - - // Test 1: Navigation - console.log("\n🌐 Test 1: Navigation"); - await page.goto("https://example.com"); - console.log("✅ Navigation successful"); - - // Test 2: Page interaction with clicking (with retries for OpenAI model) - console.log("\n🎯 Test 2: Page Interaction with Retries"); - - let success = false; - let lastError: Error | null = null; - const maxRetries = 3; - - for (let attempt = 1; attempt <= maxRetries; attempt++) { - try { - console.log( - `🔄 Attempt ${attempt}/${maxRetries}: Trying page.act("click the link")`, - ); - await page.act("click the link"); - console.log( - `✅ Click successful on attempt ${attempt} - URL: ${page.url()}`, - ); - success = true; - break; - } catch (error) { - lastError = error as Error; - console.log( - `⚠️ Attempt ${attempt} failed: ${error.message.split("\n")[0]}`, - ); - - if (attempt < maxRetries) { - console.log(`🔄 Retrying in 1 second...`); - await new Promise((resolve) => setTimeout(resolve, 1000)); - } - } - } - - if (!success) { - console.log( - `❌ All ${maxRetries} attempts failed. Last error: ${lastError?.message}`, - ); - throw lastError; - } - - await stagehand.close(); - - console.log( - "\n🎉 AWS Bedrock integration with OpenAI model is working perfectly!", - ); - } catch (error) { - console.error("\n❌ Test failed:", error.message); - - // Provide helpful error guidance - if (error.message?.includes("You don't have access")) { - console.error("💡 Enable model access in AWS Bedrock Console:"); - console.error(" https://console.aws.amazon.com/bedrock/"); - } else if ( - error.message?.includes("credentials") || - error.message?.includes("authentication") - ) { - console.error("💡 Check your AWS credentials in .env file"); - } - - await stagehand.close(); - process.exit(1); - } -} - -// Run the test -testBedrockIntegration(); diff --git a/lib/index.ts b/lib/index.ts index 0aa2ace79..a0f86e2e5 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -596,7 +596,10 @@ export class Stagehand { // Special handling for Amazon Bedrock's complex authentication if (provider === "bedrock") { - const bedrockOptions = loadBedrockClientOptions(this.logger); + const bedrockOptions = loadBedrockClientOptions( + this.logger, + modelClientOptions, + ); this.modelClientOptions = { ...modelClientOptions, ...bedrockOptions, diff --git a/lib/llm/LLMProvider.ts b/lib/llm/LLMProvider.ts index 0cdd7ecc7..e93495f9e 100644 --- a/lib/llm/LLMProvider.ts +++ b/lib/llm/LLMProvider.ts @@ -100,7 +100,7 @@ const modelToProviderMap: { [key in AvailableModel]: ModelProvider } = { export function getAISDKLanguageModel( subProvider: string, subModelName: string, - modelClientOptions?: ClientOptions, + modelClientOptions?: Record, ) { if (modelClientOptions && Object.keys(modelClientOptions).length > 0) { const creator = AISDKProvidersWithAPIKey[subProvider]; @@ -110,6 +110,7 @@ export function getAISDKLanguageModel( Object.keys(AISDKProvidersWithAPIKey), ); } + // Create the provider instance with the custom configuration options const provider = creator(modelClientOptions as Record); // Get the specific model from the provider @@ -168,7 +169,7 @@ export class LLMProvider { const languageModel = getAISDKLanguageModel( subProvider, subModelName, - clientOptions, + clientOptions as Record, ); return new AISdkClient({ diff --git a/lib/utils.ts b/lib/utils.ts index cec552831..adc06b18a 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -4,7 +4,7 @@ import { Schema, Type } from "@google/genai"; import { ZodFirstPartyTypeKind as Kind, z, ZodTypeAny } from "zod/v3"; import { ObserveResult, Page } from "."; import { LogLine } from "../types/log"; -import { ModelProvider } from "../types/model"; +import { ClientOptions, ModelProvider } from "../types/model"; import { ZodPathSegments } from "../types/stagehand"; export function validateZodSchema(schema: z.ZodTypeAny, data: unknown) { @@ -498,17 +498,33 @@ export function loadApiKeyFromEnv( * Loads Amazon Bedrock client configuration from environment variables. * Supports both AWS credentials and AWS Bedrock API key authentication. * @param logger Logger function for info/error messages + * @param modelClientOptions Existing model client options that may already have a region set * @returns Bedrock client options object or undefined if no authentication method is available */ export function loadBedrockClientOptions( logger: (logLine: LogLine) => void, + modelClientOptions: ClientOptions = {}, ): Record | undefined { // Authentication precedence: // 1. Standard AWS credentials (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) // 2. AWS Bedrock bearer token (AWS_BEARER_TOKEN_BEDROCK) - const region = - process.env.AWS_DEFAULT_REGION || process.env.AWS_REGION || "us-east-1"; + // Check if region is already set in modelClientOptions + let region = (modelClientOptions as Record) + ?.region as string; + + if (!region) { + region = process.env.AWS_DEFAULT_REGION || process.env.AWS_REGION; + + if (!region) { + region = "us-west-2"; + logger({ + category: "init", + message: "No region was set for Bedrock, defaulting to us-west-2", + level: 1, + }); + } + } // Method 1: Check for standard AWS credentials first const accessKeyId = process.env.AWS_ACCESS_KEY_ID; From 0735ca3716d0b294e6d92b65098b7e1155e4e536 Mon Sep 17 00:00:00 2001 From: Sameel Date: Fri, 26 Sep 2025 16:42:39 -0400 Subject: [PATCH 10/20] fix bedrock example --- examples/example-bedrock.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/example-bedrock.ts b/examples/example-bedrock.ts index 546914471..0e53411a5 100644 --- a/examples/example-bedrock.ts +++ b/examples/example-bedrock.ts @@ -1,4 +1,5 @@ import { Stagehand } from "@browserbasehq/stagehand"; +import { z } from "zod/v3"; /** * AWS Bedrock Integration Example for Stagehand @@ -42,8 +43,8 @@ import { Stagehand } from "@browserbasehq/stagehand"; async function runBedrockExample() { // Initialize Stagehand with AWS Bedrock const stagehand = new Stagehand({ - env: "LOCAL", - modelName: "bedrock/anthropic.claude-3-5-sonnet-20240620-v1:0", + env: "BROWSERBASE", + modelName: "bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0", modelClientOptions: { region: "us-west-2", // Will use environment variables if not specified }, @@ -65,8 +66,11 @@ async function runBedrockExample() { // Extract structured data const pageInfo = await page.extract({ - title: "The page title", - url: "The current URL", + instruction: "Extract the page title and text", + schema: z.object({ + title: z.string(), + text: z.string(), + }), }); console.log("📊 Extracted data:", pageInfo); @@ -77,7 +81,7 @@ async function runBedrockExample() { console.log("✅ AWS Bedrock example completed successfully!"); } catch (error) { - console.error("❌ Error:", error.message); + console.error("❌ Error:", error); // Common troubleshooting hints if (error.message?.includes("access")) { From 76b44ae4715c7443a3a4135764424773bbb8a711 Mon Sep 17 00:00:00 2001 From: Sameel Date: Mon, 29 Sep 2025 21:13:28 -0400 Subject: [PATCH 11/20] lint --- lib/api.ts | 2 +- lib/llm/CerebrasClient.ts | 3 +-- lib/utils.ts | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/api.ts b/lib/api.ts index 304f9b1f4..f4551272c 100644 --- a/lib/api.ts +++ b/lib/api.ts @@ -188,7 +188,7 @@ export class StagehandAPI { this.logger({ category: "execute", message: `Executing ${method} with args: ${JSON.stringify(args)}`, - level: 1, + level: 2, }); const response = await this.request(url, { diff --git a/lib/llm/CerebrasClient.ts b/lib/llm/CerebrasClient.ts index 8dc56f507..7fba80108 100644 --- a/lib/llm/CerebrasClient.ts +++ b/lib/llm/CerebrasClient.ts @@ -1,6 +1,5 @@ import { CreateChatCompletionResponseError } from "@/types/stagehandErrors"; -import type { ClientOptions } from "openai"; -import OpenAI from "openai"; +import OpenAI, { type ClientOptions } from "openai"; import { zodToJsonSchema } from "zod-to-json-schema"; import { LogLine } from "../../types/log"; import { AvailableModel } from "../../types/model"; diff --git a/lib/utils.ts b/lib/utils.ts index adc06b18a..4b9b8cd74 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -452,7 +452,7 @@ export const providerEnvVarMap: Partial< perplexity: "PERPLEXITY_API_KEY", azure: "AZURE_API_KEY", xai: "XAI_API_KEY", - bedrock: "AWS_BEARER_TOKEN_BEDROCK", // Primary API key method for Bedrock + bedrock: "AWS_BEARER_TOKEN_BEDROCK", google_legacy: "GOOGLE_API_KEY", }; From 18937ee3b527b906e789f6e9640b3b9ffaa496be Mon Sep 17 00:00:00 2001 From: Sameel Date: Tue, 30 Sep 2025 01:00:22 -0400 Subject: [PATCH 12/20] read aws creds from client options obj --- lib/utils.ts | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/lib/utils.ts b/lib/utils.ts index 4b9b8cd74..6ec533b22 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -495,10 +495,11 @@ export function loadApiKeyFromEnv( } /** - * Loads Amazon Bedrock client configuration from environment variables. + * Loads Amazon Bedrock client configuration from modelClientOptions and environment variables. * Supports both AWS credentials and AWS Bedrock API key authentication. + * Credential precedence: modelClientOptions first, then environment variables. * @param logger Logger function for info/error messages - * @param modelClientOptions Existing model client options that may already have a region set + * @param modelClientOptions Model client options that may contain AWS credentials (accessKeyId, secretAccessKey, sessionToken, bearerToken) and region * @returns Bedrock client options object or undefined if no authentication method is available */ export function loadBedrockClientOptions( @@ -506,12 +507,17 @@ export function loadBedrockClientOptions( modelClientOptions: ClientOptions = {}, ): Record | undefined { // Authentication precedence: - // 1. Standard AWS credentials (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) - // 2. AWS Bedrock bearer token (AWS_BEARER_TOKEN_BEDROCK) + // 1. modelClientOptions values first + // 2. Standard AWS credentials (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) + // 3. AWS Bedrock bearer token (AWS_BEARER_TOKEN_BEDROCK) + + const modelClientOptionsRecord = modelClientOptions as Record< + string, + unknown + >; // Check if region is already set in modelClientOptions - let region = (modelClientOptions as Record) - ?.region as string; + let region = modelClientOptionsRecord?.region as string; if (!region) { region = process.env.AWS_DEFAULT_REGION || process.env.AWS_REGION; @@ -526,10 +532,16 @@ export function loadBedrockClientOptions( } } - // Method 1: Check for standard AWS credentials first - const accessKeyId = process.env.AWS_ACCESS_KEY_ID; - const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY; - const sessionToken = process.env.AWS_SESSION_TOKEN; + // Method 1: Check for standard AWS credentials - prioritize modelClientOptions + const accessKeyId = + (modelClientOptionsRecord?.accessKeyId as string) || + process.env.AWS_ACCESS_KEY_ID; + const secretAccessKey = + (modelClientOptionsRecord?.secretAccessKey as string) || + process.env.AWS_SECRET_ACCESS_KEY; + const sessionToken = + (modelClientOptionsRecord?.sessionToken as string) || + process.env.AWS_SESSION_TOKEN; if (accessKeyId && secretAccessKey) { logger({ @@ -552,8 +564,10 @@ export function loadBedrockClientOptions( return config; } - // Method 2: Handle AWS Bedrock bearer token - const bearerToken = process.env.AWS_BEARER_TOKEN_BEDROCK; + // Method 2: Handle AWS Bedrock bearer token - prioritize modelClientOptions + const bearerToken = + (modelClientOptionsRecord?.bearerToken as string) || + process.env.AWS_BEARER_TOKEN_BEDROCK; if (bearerToken && bearerToken.length > 0) { logger({ category: "init", @@ -620,7 +634,7 @@ export function loadBedrockClientOptions( logger({ category: "init", message: - "No Amazon Bedrock authentication credentials found. Please set either AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY for standard auth or AWS_BEARER_TOKEN_BEDROCK for API key auth", + "No Amazon Bedrock authentication credentials found. Please provide credentials via modelClientOptions (accessKeyId/secretAccessKey or bearerToken) or environment variables (AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY or AWS_BEARER_TOKEN_BEDROCK)", level: 0, }); From 0af4acf6cc0792358661513cd6430c689d9f0363 Mon Sep 17 00:00:00 2001 From: Miguel <36487034+miguelg719@users.noreply.github.com> Date: Thu, 25 Sep 2025 17:05:11 -0700 Subject: [PATCH 13/20] update evals cli docs (#1096) # why # what changed # test plan --- docs/configuration/evals.mdx | 116 ++++++++++++++++++++++++++++++----- docs/media/evals-cli.png | Bin 0 -> 211733 bytes evals/README.md | 46 +++++++------- 3 files changed, 123 insertions(+), 39 deletions(-) create mode 100644 docs/media/evals-cli.png diff --git a/docs/configuration/evals.mdx b/docs/configuration/evals.mdx index b717ce9f2..af88eb336 100644 --- a/docs/configuration/evals.mdx +++ b/docs/configuration/evals.mdx @@ -25,33 +25,114 @@ Evaluations help you understand how well your automation performs, which models Evaluations help you systematically test and improve your automation workflows. Stagehand provides both built-in evaluations and tools to create your own. - -To run evals, you'll need to clone the [Stagehand repo](https://github.com/browserbase/stagehand) and run `npm install` to install the dependencies. - - -We have three types of evals: -1. **Deterministic Evals** - These are evals that are deterministic and can be run without any LLM inference. +We have 2 types of evals: +1. **Deterministic Evals** - These include unit tests, integration tests, and E2E tests that can be run without any LLM inference. 2. **LLM-based Evals** - These are evals that test the underlying functionality of Stagehand's AI primitives. -### LLM-based Evals +### Evals CLI +![Evals CLI](/media/evals-cli.png) -To run LLM evals, you'll need a [Braintrust account](https://www.braintrust.dev/docs/). +To run evals, you'll need to clone the [Stagehand repo](https://github.com/browserbase/stagehand) and set up the CLI. + +We recommend using [Braintrust](https://www.braintrust.dev/docs/) to help visualize evals results and metrics. -To run LLM-based evals, you can run `npm run evals` from within the Stagehand repo. This will test the functionality of the LLM primitives within Stagehand to make sure they're working as expected. +The Stagehand CLI provides a powerful interface for running evaluations. You can run specific evals, categories, or external benchmarks with customizable settings. -Evals are grouped into three categories: +Evals are grouped into: 1. **Act Evals** - These are evals that test the functionality of the `act` method. 2. **Extract Evals** - These are evals that test the functionality of the `extract` method. 3. **Observe Evals** - These are evals that test the functionality of the `observe` method. 4. **Combination Evals** - These are evals that test the functionality of the `act`, `extract`, and `observe` methods together. +5. **Experimental Evals** - These are experimental custom evals that test the functionality of the stagehand primitives. +6. **Agent Evals** - These are evals that test the functionality of `agent`. +7. **(NEW) External Benchmarks** - Run external benchmarks like WebBench, GAIA, WebVoyager, OnlineMind2Web, and OSWorld. + +#### Installation + + + +```bash +# From the stagehand root directory +pnpm install +``` + -#### Configuring and Running Evals -You can view the specific evals in [`evals/tasks`](https://github.com/browserbase/stagehand/tree/main/evals/tasks). Each eval is grouped into eval categories based on [`evals/evals.config.json`](https://github.com/browserbase/stagehand/blob/main/evals/evals.config.json). You can specify models to run and other general task config in [`evals/taskConfig.ts`](https://github.com/browserbase/stagehand/blob/main/evals/taskConfig.ts). + +```bash +pnpm run build:cli +``` + -To run a specific eval, you can run `npm run evals `, or run all evals in a category with `npm run evals category `. + +```bash +evals help +``` + + + +#### CLI Commands and Options + +##### Basic Commands + +```bash +# Run all evals +evals run all + +# Run specific category +evals run act +evals run extract +evals run observe +evals run agent + +# Run specific eval +evals run extract/extract_text + +# List available evals +evals list +evals list --detailed + +# Configure defaults +evals config +evals config set env browserbase +evals config set trials 5 +``` + +##### Command Options + +- **`-e, --env`**: Environment (`local` or `browserbase`) +- **`-t, --trials`**: Number of trials per eval (default: 3) +- **`-c, --concurrency`**: Max parallel sessions (default: 10) +- **`-m, --model`**: Model override +- **`-p, --provider`**: Provider override +- **`--api`**: Use Stagehand API instead of SDK + +##### Running External Benchmarks + +The CLI supports several industry-standard benchmarks: + +```bash +# WebBench with filters +evals run benchmark:webbench -l 10 -f difficulty=easy -f category=READ + +# GAIA benchmark +evals run b:gaia -s 100 -l 25 -f level=1 + +# WebVoyager +evals run b:webvoyager -l 50 + +# OnlineMind2Web +evals run b:onlineMind2Web + +# OSWorld +evals run b:osworld -f source=Mind2Web +``` + +#### Configuration Files + +You can view the specific evals in [`evals/tasks`](https://github.com/browserbase/stagehand/tree/main/evals/tasks). Each eval is grouped into eval categories based on [`evals/evals.config.json`](https://github.com/browserbase/stagehand/blob/main/evals/evals.config.json). #### Viewing eval results @@ -65,7 +146,7 @@ You can use the Braintrust UI to filter by model/eval and aggregate results acro ### Deterministic Evals -To run deterministic evals, you can just run `npm run e2e` from within the Stagehand repo. This will test the functionality of Playwright within Stagehand to make sure it's working as expected. +To run deterministic evals, you can run `npm run e2e` from within the Stagehand repo. This will test the functionality of Playwright within Stagehand to make sure it's working as expected. These tests are in [`evals/deterministic`](https://github.com/browserbase/stagehand/tree/main/evals/deterministic) and test on both Browserbase browsers and local headless Chromium browsers. @@ -139,10 +220,13 @@ Update `evals/evals.config.json`: ```bash # Test your custom evaluation -npm run evals custom_task_name +evals run custom_task_name # Run the entire custom category -npm run evals category custom +evals run custom + +# Run with specific settings +evals run custom_task_name -e browserbase -t 5 -m gpt-4o ``` diff --git a/docs/media/evals-cli.png b/docs/media/evals-cli.png new file mode 100644 index 0000000000000000000000000000000000000000..221596e2aea6695db4f8554d75c14dc6f5737379 GIT binary patch literal 211733 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

}zEhQFNslZ8MQ0zU}| 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 literal 0 HcmV?d00001 diff --git a/evals/README.md b/evals/README.md index 6cedd0e99..ded087285 100644 --- a/evals/README.md +++ b/evals/README.md @@ -15,7 +15,7 @@ pnpm run build:cli The evals CLI provides a clean, intuitive interface for running evaluations: ```bash -pnpm evals [options] +evals [options] ``` ## Commands @@ -26,18 +26,18 @@ Run custom evals or external benchmarks. ```bash # Run all custom evals -pnpm evals run all +evals run all # Run specific category -pnpm evals run act -pnpm evals run extract -pnpm evals run observe +evals run act +evals run extract +evals run observe # Run specific eval by name -pnpm evals run extract/extract_text +evals run extract/extract_text # Run external benchmarks -pnpm evals run benchmark:gaia +evals run benchmark:gaia ``` ### `list` - View available evals @@ -46,10 +46,10 @@ List all available evaluations and benchmarks. ```bash # List all categories and benchmarks -pnpm evals list +evals list # Show detailed task list -pnpm evals list --detailed +evals list --detailed ``` ### `config` - Manage defaults @@ -58,22 +58,22 @@ Configure default settings for all eval runs. ```bash # View current configuration -pnpm evals config +evals config # Set default values -pnpm evals config set env browserbase -pnpm evals config set trials 5 -pnpm evals config set concurrency 10 +evals config set env browserbase +evals config set trials 5 +evals config set concurrency 10 # Reset to defaults -pnpm evals config reset -pnpm evals config reset trials # Reset specific key +evals config reset +evals config reset trials # Reset specific key ``` ### `help` - Show help ```bash -pnpm evals help +evals help ``` ## Options @@ -99,26 +99,26 @@ pnpm evals help ```bash # Run with custom settings -pnpm evals run act -e browserbase -t 5 -c 10 +evals run act -e browserbase -t 5 -c 10 # Run with specific model -pnpm evals run observe -m gpt-4o -p openai +evals run observe -m gpt-4o -p openai # Run using API -pnpm evals run extract --api +evals run extract --api ``` ### Running Benchmarks ```bash # WebBench with filters -pnpm evals run b:webbench -l 10 -f difficulty=easy -f category=READ +evals run b:webbench -l 10 -f difficulty=easy -f category=READ # GAIA with sampling -pnpm evals run b:gaia -s 100 -l 25 -f level=1 +evals run b:gaia -s 100 -l 25 -f level=1 # WebVoyager with limit -pnpm evals run b:webvoyager -l 50 +evals run b:webvoyager -l 50 ``` ## Available Benchmarks @@ -176,7 +176,7 @@ While the CLI reduces the need for environment variables, some are still support 1. Create your eval file in `evals/tasks//` 2. Add it to `evals.config.json` under the `tasks` array -3. Run with: `pnpm evals run /` +3. Run with: `evals run /` ## Troubleshooting From c7629445f7bfdf727e264a08409c29ffb3e90c9d Mon Sep 17 00:00:00 2001 From: Kyle Jeong <77771518+Kylejeong2@users.noreply.github.com> Date: Mon, 29 Sep 2025 11:23:37 -0700 Subject: [PATCH 14/20] adding support for new claude 4.5 sonnet agent model (#1099) # why anthropic released a new sota computer use model # what changed added claude-sonnet-4-5-20250929 as a model to the list # test plan ran evals --- lib/agent/AgentProvider.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/agent/AgentProvider.ts b/lib/agent/AgentProvider.ts index 9e40980e8..1e4e0f5b5 100644 --- a/lib/agent/AgentProvider.ts +++ b/lib/agent/AgentProvider.ts @@ -15,6 +15,7 @@ export const modelToAgentProviderMap: Record = { "computer-use-preview-2025-03-11": "openai", "claude-3-7-sonnet-latest": "anthropic", "claude-sonnet-4-20250514": "anthropic", + "claude-sonnet-4-5-20250929": "anthropic", }; /** From 4bd7412bdef39661ebfa8f775118d46fbcf4def6 Mon Sep 17 00:00:00 2001 From: tkattkat <48974763+tkattkat@users.noreply.github.com> Date: Wed, 1 Oct 2025 10:53:37 -0700 Subject: [PATCH 15/20] properly convert custom / mcp tools to anthropic cua format (#1103) Why Custom AI SDK tools and MCP integrations weren't working properly with Anthropic CUA - parameters were empty {} and tools weren't tracked. What Changed - Convert Zod schemas to JSON Schema before sending to Anthropic (using zodToJsonSchema) - Track custom tool calls in the actions array - Silence "Unknown tool name" warnings for custom tools Test Plan Tested with examples file. Parameters passed correctly ({"city":"San Francisco"} instead of {}) Custom tools execute and appear in actions array No warnings --- .changeset/short-mirrors-switch.md | 5 +++++ lib/agent/AnthropicCUAClient.ts | 30 +++++++++++++++++++----------- 2 files changed, 24 insertions(+), 11 deletions(-) create mode 100644 .changeset/short-mirrors-switch.md diff --git a/.changeset/short-mirrors-switch.md b/.changeset/short-mirrors-switch.md new file mode 100644 index 000000000..fd50273dd --- /dev/null +++ b/.changeset/short-mirrors-switch.md @@ -0,0 +1,5 @@ +--- +"@browserbasehq/stagehand": patch +--- + +patch custom tool support in anthropic cua client diff --git a/lib/agent/AnthropicCUAClient.ts b/lib/agent/AnthropicCUAClient.ts index 1af5c56c4..905c5c636 100644 --- a/lib/agent/AnthropicCUAClient.ts +++ b/lib/agent/AnthropicCUAClient.ts @@ -13,6 +13,7 @@ import { LogLine } from "@/types/log"; import { AgentScreenshotProviderError } from "@/types/stagehandErrors"; import Anthropic from "@anthropic-ai/sdk"; import { ToolSet } from "ai"; +import { zodToJsonSchema } from "zod-to-json-schema"; import { AgentClient } from "./AgentClient"; import { mapKeyToPlaywright } from "./utils/cuaKeyMapping"; import { compressConversationImages } from "./utils/imageCompression"; @@ -275,6 +276,12 @@ export class AnthropicCUAClient extends AgentClient { level: 2, }); stepActions.push(action); + } else if (this.tools && toolUseItem.name in this.tools) { + stepActions.push({ + type: "custom_tool", + tool: toolUseItem.name, + input: toolUseItem.input, + } as AgentAction); } } else if (block.type === "text") { // Safe to cast here since we've verified it's a text block @@ -436,17 +443,16 @@ export class AnthropicCUAClient extends AgentClient { if (this.tools && Object.keys(this.tools).length > 0) { const customTools = Object.entries(this.tools).map(([name, tool]) => { // Convert Zod schema to proper JSON schema format for Anthropic - let inputSchema = tool.parameters; - - // Ensure the schema has the required 'type' field at root level - if (typeof inputSchema === "object" && inputSchema !== null) { - if (!("type" in inputSchema)) { - inputSchema = { - type: "object", - ...inputSchema, - }; - } - } + const jsonSchema = zodToJsonSchema(tool.parameters) as { + properties?: Record; + required?: string[]; + }; + + const inputSchema = { + type: "object", + properties: jsonSchema.properties || {}, + required: jsonSchema.required || [], + }; return { name, @@ -890,6 +896,8 @@ export class AnthropicCUAClient extends AgentClient { type: name, params: input, }; + } else if (this.tools && name in this.tools) { + return null; } console.warn(`Unknown tool name: ${name}`); From ce07cfa060d35e522ba4426193cb643c581e0803 Mon Sep 17 00:00:00 2001 From: Miguel <36487034+miguelg719@users.noreply.github.com> Date: Wed, 1 Oct 2025 10:55:29 -0700 Subject: [PATCH 16/20] Add current date and page url to agent context (#1102) # why To improve context # what changed Added current page and url to the system prompt # test plan --- .changeset/upset-ghosts-shout.md | 5 +++++ lib/handlers/stagehandAgentHandler.ts | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .changeset/upset-ghosts-shout.md diff --git a/.changeset/upset-ghosts-shout.md b/.changeset/upset-ghosts-shout.md new file mode 100644 index 000000000..4d763b711 --- /dev/null +++ b/.changeset/upset-ghosts-shout.md @@ -0,0 +1,5 @@ +--- +"@browserbasehq/stagehand": patch +--- + +Add current page and date context to agent diff --git a/lib/handlers/stagehandAgentHandler.ts b/lib/handlers/stagehandAgentHandler.ts index cbb309683..ccfa0416e 100644 --- a/lib/handlers/stagehandAgentHandler.ts +++ b/lib/handlers/stagehandAgentHandler.ts @@ -237,7 +237,8 @@ STRATEGY: - Prefer ariaTree to understand the page before acting; use screenshot for quick confirmation. - Keep actions atomic and verify outcomes before proceeding. -For each action, provide clear reasoning about why you're taking that step.`; +For each action, provide clear reasoning about why you're taking that step. +Today's date is ${new Date().toLocaleDateString()}. You're currently on the website: ${this.stagehand.page.url}.`; } private createTools() { From 06ae0e6c4905f6194a1257819a0f7431702974b1 Mon Sep 17 00:00:00 2001 From: Miguel <36487034+miguelg719@users.noreply.github.com> Date: Wed, 1 Oct 2025 14:53:00 -0700 Subject: [PATCH 17/20] Additional agent logging (#1104) # why To inform the user throughout the agent execution process # what changed Added logs to tool calls, and on the stagehand agent handler # test plan - [x] tested locally --- .changeset/fifty-windows-throw.md | 5 ++ lib/agent/tools/act.ts | 16 +++++- lib/agent/tools/ariaTree.ts | 5 ++ lib/agent/tools/close.ts | 8 +-- lib/agent/tools/extract.ts | 16 ++++++ lib/agent/tools/fillform.ts | 11 +++++ lib/agent/tools/goto.ts | 11 +++++ lib/agent/tools/navback.ts | 5 ++ lib/agent/tools/screenshot.ts | 5 ++ lib/agent/tools/scroll.ts | 11 +++++ lib/handlers/observeHandler.ts | 12 ----- lib/handlers/stagehandAgentHandler.ts | 70 +++++++++++++++++++++------ 12 files changed, 143 insertions(+), 32 deletions(-) create mode 100644 .changeset/fifty-windows-throw.md diff --git a/.changeset/fifty-windows-throw.md b/.changeset/fifty-windows-throw.md new file mode 100644 index 000000000..d6cae33e0 --- /dev/null +++ b/.changeset/fifty-windows-throw.md @@ -0,0 +1,5 @@ +--- +"@browserbasehq/stagehand": patch +--- + +Fix logging for stagehand agent diff --git a/lib/agent/tools/act.ts b/lib/agent/tools/act.ts index 520883497..5e35e6539 100644 --- a/lib/agent/tools/act.ts +++ b/lib/agent/tools/act.ts @@ -8,15 +8,27 @@ export const createActTool = (stagehand: Stagehand, executionModel?: string) => description: "Perform an action on the page (click, type)", parameters: z.object({ action: z.string() - .describe(`Describe what to click, or type within in a short, specific phrase that mentions the element type. + .describe(`Describe the click, type, fill, scroll action within in a short, specific phrase that mentions the element type. Examples: - "click the Login button" - "click the language dropdown" - type "John" into the first name input - - type "Doe" into the last name input`), + - type "Doe" into the last name input. + When attempting to fill a field you can say 'fill the field x with the value y'.`), }), execute: async ({ action }) => { try { + stagehand.logger({ + category: "agent", + message: `Agent calling tool: act`, + level: 1, + auxiliary: { + arguments: { + value: action, + type: "string", + }, + }, + }); const builtPrompt = buildActObservePrompt( action, Object.values(SupportedPlaywrightAction), diff --git a/lib/agent/tools/ariaTree.ts b/lib/agent/tools/ariaTree.ts index e0a28d170..f61ed0213 100644 --- a/lib/agent/tools/ariaTree.ts +++ b/lib/agent/tools/ariaTree.ts @@ -8,6 +8,11 @@ export const createAriaTreeTool = (stagehand: Stagehand) => "gets the accessibility (ARIA) tree from the current page. this is useful for understanding the page structure and accessibility features. it should provide full context of what is on the page", parameters: z.object({}), execute: async () => { + stagehand.logger({ + category: "agent", + message: `Agent calling tool: ariaTree`, + level: 1, + }); const { page_text } = await stagehand.page.extract(); const pageUrl = stagehand.page.url(); diff --git a/lib/agent/tools/close.ts b/lib/agent/tools/close.ts index aef36dd6f..054b22186 100644 --- a/lib/agent/tools/close.ts +++ b/lib/agent/tools/close.ts @@ -6,11 +6,11 @@ export const createCloseTool = () => description: "Complete the task and close", parameters: z.object({ reasoning: z.string().describe("Summary of what was accomplished"), - taskComplete: z + success: z .boolean() - .describe("Whether the task was completed successfully"), + .describe("Whether the full goal of the task was a success or not"), }), - execute: async ({ reasoning, taskComplete }) => { - return { success: true, reasoning, taskComplete }; + execute: async ({ reasoning, success }) => { + return { success, reasoning }; }, }); diff --git a/lib/agent/tools/extract.ts b/lib/agent/tools/extract.ts index 4e758e158..19ecb6869 100644 --- a/lib/agent/tools/extract.ts +++ b/lib/agent/tools/extract.ts @@ -70,6 +70,22 @@ export const createExtractTool = ( }), execute: async ({ instruction, schema }) => { try { + stagehand.logger({ + category: "agent", + message: `Agent calling tool: extract`, + level: 1, + auxiliary: { + arguments: { + value: instruction, + type: "string", + }, + // TODO: check if we want to log this + schema: { + value: schema, + type: "object", + }, + }, + }); // Evaluate the schema string to get the actual Zod schema const zodSchema = evaluateZodSchema(schema, logger); diff --git a/lib/agent/tools/fillform.ts b/lib/agent/tools/fillform.ts index 487bb5c84..3f0b773e9 100644 --- a/lib/agent/tools/fillform.ts +++ b/lib/agent/tools/fillform.ts @@ -49,6 +49,17 @@ export const createFillFormTool = ( }), execute: async ({ fields }) => { + stagehand.logger({ + category: "agent", + message: `Agent calling tool: fillForm`, + level: 1, + auxiliary: { + arguments: { + value: JSON.stringify(fields), + type: "object", + }, + }, + }); const instruction = `Return observation results for the following actions: ${fields .map((field) => field.action) .join(", ")}`; diff --git a/lib/agent/tools/goto.ts b/lib/agent/tools/goto.ts index b9fbb1a1e..4165576dd 100644 --- a/lib/agent/tools/goto.ts +++ b/lib/agent/tools/goto.ts @@ -10,6 +10,17 @@ export const createGotoTool = (stagehand: Stagehand) => }), execute: async ({ url }) => { try { + stagehand.logger({ + category: "agent", + message: `Agent calling tool: goto`, + level: 1, + auxiliary: { + arguments: { + value: url, + type: "string", + }, + }, + }); await stagehand.page.goto(url, { waitUntil: "load" }); return { success: true, url }; } catch (error) { diff --git a/lib/agent/tools/navback.ts b/lib/agent/tools/navback.ts index 829b7c0c6..026262a7b 100644 --- a/lib/agent/tools/navback.ts +++ b/lib/agent/tools/navback.ts @@ -9,6 +9,11 @@ export const createNavBackTool = (stagehand: Stagehand) => reasoning: z.string().describe("Why you're going back"), }), execute: async () => { + stagehand.logger({ + category: "agent", + message: `Agent calling tool: navback`, + level: 1, + }); await stagehand.page.goBack(); return { success: true }; }, diff --git a/lib/agent/tools/screenshot.ts b/lib/agent/tools/screenshot.ts index a563290fc..590457e54 100644 --- a/lib/agent/tools/screenshot.ts +++ b/lib/agent/tools/screenshot.ts @@ -8,6 +8,11 @@ export const createScreenshotTool = (stagehand: Stagehand) => "Takes a screenshot of the current page. Use this tool to learn where you are on the page, or to get context of elements on the page", parameters: z.object({}), execute: async () => { + stagehand.logger({ + category: "agent", + message: `Agent calling tool: screenshot`, + level: 1, + }); const screenshotBuffer = await stagehand.page.screenshot({ fullPage: false, type: "jpeg", diff --git a/lib/agent/tools/scroll.ts b/lib/agent/tools/scroll.ts index e467208a6..b20655758 100644 --- a/lib/agent/tools/scroll.ts +++ b/lib/agent/tools/scroll.ts @@ -10,6 +10,17 @@ export const createScrollTool = (stagehand: Stagehand) => direction: z.enum(["up", "down"]).describe("Direction to scroll"), }), execute: async ({ pixels, direction }) => { + stagehand.logger({ + category: "agent", + message: `Agent calling tool: scroll`, + level: 1, + auxiliary: { + arguments: { + value: JSON.stringify({ pixels, direction }), + type: "object", + }, + }, + }); await stagehand.page.mouse.wheel( 0, direction === "up" ? -pixels : pixels, diff --git a/lib/handlers/observeHandler.ts b/lib/handlers/observeHandler.ts index 5a3a3e95a..8386bdde1 100644 --- a/lib/handlers/observeHandler.ts +++ b/lib/handlers/observeHandler.ts @@ -64,18 +64,6 @@ export class StagehandObserveHandler { instruction = `Find elements that can be used for any future actions in the page. These may be navigation links, related pages, section/subsection links, buttons, or other interactive elements. Be comprehensive: if there are multiple elements that may be relevant for future actions, return all of them.`; } - this.logger({ - category: "observation", - message: "starting observation", - level: 1, - auxiliary: { - instruction: { - value: instruction, - type: "string", - }, - }, - }); - if (onlyVisible !== undefined) { this.logger({ category: "observation", diff --git a/lib/handlers/stagehandAgentHandler.ts b/lib/handlers/stagehandAgentHandler.ts index ccfa0416e..1dc49c68f 100644 --- a/lib/handlers/stagehandAgentHandler.ts +++ b/lib/handlers/stagehandAgentHandler.ts @@ -54,6 +54,26 @@ export class StagehandAgentHandler { let completed = false; const collectedReasoning: string[] = []; + this.logger({ + category: "agent", + message: `Executing agent task: ${options.instruction}`, + level: 1, + auxiliary: { + maxSteps: { + value: String(maxSteps), + type: "integer", + }, + hasSystemInstructions: { + value: String(!!this.systemInstructions), + type: "boolean", + }, + hasCustomTools: { + value: String(!!this.tools), + type: "boolean", + }, + }, + }); + try { const systemPrompt = this.buildSystemPrompt( options.instruction, @@ -61,6 +81,27 @@ export class StagehandAgentHandler { ); const defaultTools = this.createTools(); const allTools = { ...defaultTools, ...this.tools }; + + this.logger({ + category: "agent", + message: "Initialized agent configuration", + level: 2, + auxiliary: { + systemPromptLength: { + value: String(systemPrompt.length), + type: "integer", + }, + toolCount: { + value: String(Object.keys(allTools).length), + type: "integer", + }, + tools: { + value: Object.keys(allTools).join(", "), + type: "string", + }, + }, + }); + const messages: CoreMessage[] = [ { role: "user", @@ -99,12 +140,6 @@ export class StagehandAgentHandler { temperature: 1, toolChoice: "auto", onStepFinish: async (event) => { - this.logger({ - category: "agent", - message: `Step finished: ${event.finishReason}`, - level: 2, - }); - if (event.toolCalls && event.toolCalls.length > 0) { for (let i = 0; i < event.toolCalls.length; i++) { const toolCall = event.toolCalls[i]; @@ -114,19 +149,20 @@ export class StagehandAgentHandler { collectedReasoning.push(event.text); this.logger({ category: "agent", - message: `reasoning: ${event.text}`, + message: `Agent Reasoning: ${event.text}`, level: 1, }); } if (toolCall.toolName === "close") { completed = true; - if (args?.taskComplete) { - const closeReasoning = args.reasoning as string; + const { success, reasoning } = args; + if (success) { + const closeReasoning = reasoning as string; const allReasoning = collectedReasoning.join(" "); finalMessage = closeReasoning ? `${allReasoning} ${closeReasoning}`.trim() - : allReasoning || "Task completed successfully"; + : allReasoning || `Task completed with success: ${success}`; } } @@ -150,7 +186,7 @@ export class StagehandAgentHandler { reasoning: event.text || undefined, taskCompleted: toolCall.toolName === "close" - ? (args?.taskComplete as boolean) + ? (args?.success as boolean) : false, ...args, ...getPlaywrightArguments(), @@ -170,6 +206,12 @@ export class StagehandAgentHandler { const endTime = Date.now(); const inferenceTimeMs = endTime - startTime; + this.logger({ + category: "agent", + message: `Agent task ${completed ? "completed" : "finished"}`, + level: 1, + }); + return { success: completed, message: finalMessage || "Task execution completed", @@ -221,13 +263,13 @@ IMPORTANT GUIDELINES: 1. Always start by understanding the current page state 2. Use the screenshot tool to verify page state when needed 3. Use appropriate tools for each action -4. When the task is complete, use the "close" tool with taskComplete: true -5. If the task cannot be completed, use "close" with taskComplete: false +4. When the task is complete, use the "close" tool with success: true +5. If the task cannot be completed, use "close" with success: false TOOLS OVERVIEW: - screenshot: Take a compressed JPEG screenshot for quick visual context (use sparingly) - ariaTree: Get an accessibility (ARIA) hybrid tree for full page context (preferred for understanding layout and elements) -- act: Perform a specific atomic action (click, type, etc.) +- act: Perform a specific atomic action (click, type, etc.). For filling a field, you can say 'fill the field x with the value y'. - extract: Extract structured data - goto: Navigate to a URL - wait/navback/refresh: Control timing and navigation From 9fe40fd3dff8d301f6777d1aa9c810c0f429c704 Mon Sep 17 00:00:00 2001 From: miguel Date: Wed, 1 Oct 2025 18:05:49 -0700 Subject: [PATCH 18/20] fix system prompt --- lib/handlers/stagehandAgentHandler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/handlers/stagehandAgentHandler.ts b/lib/handlers/stagehandAgentHandler.ts index 1dc49c68f..d610635ad 100644 --- a/lib/handlers/stagehandAgentHandler.ts +++ b/lib/handlers/stagehandAgentHandler.ts @@ -280,7 +280,7 @@ STRATEGY: - Keep actions atomic and verify outcomes before proceeding. For each action, provide clear reasoning about why you're taking that step. -Today's date is ${new Date().toLocaleDateString()}. You're currently on the website: ${this.stagehand.page.url}.`; +Today's date is ${new Date().toLocaleDateString()}. You're currently on the website: ${this.stagehand.page.url()}.`; } private createTools() { From 938b51ce282b9660fa15f9f17ef3479938e4c5ba Mon Sep 17 00:00:00 2001 From: miguel Date: Wed, 1 Oct 2025 18:10:24 -0700 Subject: [PATCH 19/20] remove dup log --- lib/index.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index a0f86e2e5..bc91f4086 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -931,11 +931,13 @@ export class Stagehand { ) => Promise; setScreenshotCollector?: (collector: unknown) => void; } { - this.log({ - category: "agent", - message: "Creating agent instance", - level: 1, - }); + if (!this.usingAPI) { + this.log({ + category: "agent", + message: "Creating agent instance", + level: 1, + }); + } let agentHandler: StagehandAgentHandler | CuaAgentHandler | undefined; if (options?.integrations && !this.experimental) { throw new StagehandError( From 607b4c3efed574ff9c32c8d24133487cec6bc3bf Mon Sep 17 00:00:00 2001 From: miguel Date: Wed, 1 Oct 2025 18:26:36 -0700 Subject: [PATCH 20/20] pass modelClientOptions for stagehand agent --- lib/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/index.ts b/lib/index.ts index bc91f4086..725d537ec 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1008,7 +1008,10 @@ export class Stagehand { } if (!options.options) { - options.options = {}; + options.options = this.modelClientOptions as Record< + string, + unknown + >; } if (options.provider) { if (options.provider === "anthropic") {