├── .env.example ├── .gitattributes ├── .github └── workflows │ └── publish.yml ├── .gitignore ├── LICENSE ├── README.md ├── biome.json ├── examples ├── how_it_works.png └── index.ts ├── index.ts ├── package.json └── yarn.lock /.env.example: -------------------------------------------------------------------------------- 1 | GROQ_API_KEY="" 2 | GOOGLE_GENERATIVE_AI_API_KEY="" 3 | JIGSAWSTACK_API_KEY="" 4 | OPENAI_API_KEY="" 5 | ANTHROPIC_API_KEY="" 6 | DEEPINFRA_API_KEY="" -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Package to NPM when a Release is Created 2 | on: 3 | release: 4 | types: [created] 5 | jobs: 6 | pypi-publish: 7 | name: Publish release to NPM 8 | runs-on: ubuntu-latest 9 | permissions: 10 | contents: read 11 | id-token: write 12 | steps: 13 | - uses: actions/checkout@v4 14 | - uses: actions/setup-node@v4 15 | with: 16 | node-version: "20.x" 17 | registry-url: "https://registry.npmjs.org" 18 | - name: Build package 19 | run: | 20 | yarn 21 | yarn build 22 | - name: Publish package NPM 23 | run: npm publish 24 | env: 25 | NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} 26 | # - name: Publish package JSR 27 | # run: npx jsr publish --allow-slow-types 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* 131 | 132 | .DS_Store 133 | 134 | models/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2025 JigsawStack Pte. Ltd. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OmiAI SDK 2 | 3 | ![OmiAI](/examples/how_it_works.png) 4 | 5 | OmiAI is an opinionated AI SDK for Typescript that auto-picks the best model from a suite of curated models depending on the prompt. It includes built-in o3-like reasoning, curated tools, internet access and full multi-modal support with almost all media types. 6 | 7 | The idea is for OmiAI to be the last framework you need for LLMs where it feels like you're just using one LLM that's good at everything! 8 | 9 | - ⭐ Curated list of models based on model quality, speed and cost 10 | - 🧠 Automatically picks the best model for each task 11 | - 🔗 Automatically chains models for complex tasks 12 | - 🤔 Built-in reasoning (o3-mini, DeepSeek r1) 13 | - 🔨 Built-in tools and tool calling (Image generation, OCR, SST, etc) 14 | - 🌐 Access to the internet in real-time 15 | - 🔁 Model rate-limiting fallback, retries 16 | - 📁 Multimodal LLM support (PDF, Images, Files, Audio, CSV, JSON) 17 | - 🧮 Multimodal embedding model 18 | 19 | Powered by [Vercel's AI SDK](https://sdk.vercel.ai/docs/introduction) for orchestration & [JigsawStack](https://jigsawstack.com/) for tools and embeddings. 20 | 21 | View all models being used [here](https://github.com/JigsawStack/omiai/blob/main/index.ts#L226) 22 | 23 | ## ⚡️ Quick Install 24 | 25 | ```bash 26 | npm i omiai 27 | ``` 28 | 29 | Some benefits include: 30 | 31 | - Never having to pick to model or deal with over configuration 32 | - Plug > Prompt > Play 33 | - Always having full multimodal support regardless of the model 34 | - Kept up to date with the latest models and features 35 | - Use reasoning mixed with other models to solve complex tasks 36 | 37 | ## Usage 38 | 39 | ### Set up 40 | 41 | You'll have to set up all API keys for the LLM providers used in the SDK. Check out the `.env.example` file for all API keys needed. 42 | 43 | Either create a `.env` file in the root of your project based on the `.env.example` or pass your API keys in `createOmiAI` like this: 44 | 45 | ```ts 46 | const omi = createOmiAI({ 47 | openaiProviderConfig: { 48 | apiKey: process.env.OPENAI_API_KEY, 49 | }, 50 | anthropicProviderConfig: { 51 | apiKey: process.env.ANTHROPIC_API_KEY, 52 | }, 53 | ... 54 | }); 55 | ``` 56 | 57 | ### Basic 58 | 59 | ```ts 60 | import { createOmiAI } from "omiai"; 61 | 62 | const omi = createOmiAI(); 63 | 64 | const result = await omi.generate({ 65 | prompt: "What is the meaning of life?", 66 | }); 67 | 68 | console.log(result?.text); 69 | ``` 70 | 71 | ### Structured output with Zod 72 | 73 | ```ts 74 | import { z } from "zod"; 75 | 76 | const result = await omi.generate({ 77 | prompt: "How many r's are there in the word 'strawberries'?", 78 | schema: z.object({ 79 | answer: z.number().describe("The answer to the question"), 80 | }), 81 | }); 82 | 83 | console.log(result?.object); 84 | ``` 85 | 86 | ### Streaming text 87 | 88 | ```ts 89 | const result = await omi.generate({ 90 | prompt: "Tell me a story of a person who discovered the meaning of life.", 91 | stream: true, 92 | }); 93 | 94 | let text = ""; 95 | for await (const chunk of result?.textStream) { 96 | text += chunk; 97 | console.clear(); 98 | console.log(text); 99 | } 100 | ``` 101 | 102 | ### Streaming object 103 | 104 | ```ts 105 | const result = await omi.generate({ 106 | prompt: "Tell me a story of a person who discovered the meaning of life.", 107 | schema: z.object({ 108 | story: z.string().max(1000).describe("The story"), 109 | character_names: z 110 | .array(z.string()) 111 | .describe("The names of the characters in the story"), 112 | }), 113 | stream: true, 114 | }); 115 | 116 | for await (const chunk of result?.partialObjectStream ?? []) { 117 | console.log(chunk); 118 | } 119 | ``` 120 | 121 | ### Messages 122 | 123 | ```ts 124 | const result = await omi.generate({ 125 | prompt: [{ role: "user", content: "What is the meaning of life?" }], 126 | }); 127 | 128 | console.log(result?.text); 129 | ``` 130 | 131 | ### Attach images/files 132 | 133 | ```ts 134 | const result = await omi.generate({ 135 | prompt: [ 136 | { 137 | role: "user", 138 | content: [ 139 | { 140 | type: "text", 141 | data: "Extract the total price of the items in the image", //will tool call OCR tool 142 | }, 143 | { 144 | type: "image", 145 | data: "https://media.snopes.com/2021/08/239918331_10228097135359041_3825446756894757753_n.jpg", 146 | mimeType: "image/jpg", 147 | }, 148 | ], 149 | }, 150 | ], 151 | schema: z.object({ 152 | total_price: z 153 | .number() 154 | .describe("The total price of the items in the image"), 155 | }), 156 | }); 157 | 158 | console.log(result?.object); 159 | ``` 160 | 161 | ### Reasoning 162 | 163 | Reasoning is automated so you don't have to explicitly call it. Based on the complexity of the prompt, it will automatically decide if it needs to use reasoning or not. 164 | 165 | If you want to force reasoning, you can set the `reasoning` parameter to `true` or if you want to disable it permanently, set it to `false`. Removing the key will set it to auto. 166 | 167 | ```ts 168 | const result = await omi.generate({ 169 | prompt: "How many r's are there in the text: 'strawberry'?", 170 | reasoning: true, 171 | schema: z.object({ 172 | answer: z.number(), 173 | }), 174 | }); 175 | 176 | console.log("reason: ", result?.reasoningText); 177 | console.log("result: ", result?.object); 178 | ``` 179 | 180 | Get the reasoning text from `result?.reasoningText` 181 | 182 | ### Multi-LLM 183 | 184 | Multi-LLM is a technique that runs your prompts across multiple LLMs and merges the results. This is useful if you want to get a more accurate allowing models to cross-check each other. 185 | 186 | Note: This can shoot up your costs as it would run it across ~5-6 LLMs in parallel. 187 | 188 | ```ts 189 | const result = await omi.generate({ 190 | prompt: "What is the meaning of life?", 191 | multiLLM: true, 192 | }); 193 | ``` 194 | 195 | ### Web search 196 | 197 | Web search is automated so you don't have to explicitly turn it on. It will automatically decide if it needs to use web search or not based on the prompt. You can also force it to run by setting the `contextTool.web` parameter to `true` or if you want to disable it permanently, set it to `false`. Removing the key will set it to auto. 198 | 199 | ```ts 200 | const result = await omi.generate({ 201 | prompt: "What won the US presidential election in 2025?", 202 | contextTool: { 203 | web: true, 204 | }, 205 | }); 206 | ``` 207 | 208 | ### Embeddings 209 | 210 | The embedding model is powered by [JigsawStack](https://jigsawstack.com) and you can view the [full docs here](https://jigsawstack.com/embedding) 211 | 212 | ```ts 213 | const result = await omi.embedding({ 214 | type: "text", 215 | text: "Hello, world!", 216 | }); 217 | 218 | console.log(result.embeddings); 219 | ``` 220 | 221 | ```ts 222 | const result = await omi.embedding({ 223 | type: "pdf", 224 | url: "https://example.com/file.pdf", 225 | }); 226 | 227 | console.log(result.embeddings); 228 | ``` 229 | 230 | ### Image generation 231 | 232 | ```ts 233 | const result = await omi.generate({ 234 | prompt: "Generate an image of a cat", 235 | }); 236 | 237 | const blob: Blob = result?.files?.[0].data; 238 | ``` 239 | 240 | ### Tool calling 241 | 242 | You can pass your own tools to the SDK by using the `tools` parameter. This is tool function params is based on the Vercel's AI SDK. [Check out full docs for tools here](https://sdk.vercel.ai/docs/ai-sdk-core/tools-and-tool-calling) 243 | 244 | ```ts 245 | import { createOmiAI, tool } from "omiai"; 246 | 247 | const omi = createOmiAI(); 248 | 249 | const result = await omi.generate({ 250 | prompt: "What is the weather in San Francisco?", 251 | tools: { 252 | weather: tool({ 253 | description: "Get the weather in a location", 254 | parameters: z.object({ 255 | location: z.string().describe("The location to get the weather for"), 256 | }), 257 | execute: async ({ location }) => ({ 258 | location, 259 | temperature: 72 + Math.floor(Math.random() * 21) - 10, 260 | }), 261 | }), 262 | }, 263 | }); 264 | ``` 265 | 266 | ## SDK Params 267 | 268 | ### `omi.generate` 269 | 270 | `reasoning`, `contextTool`, `autoTool` and the actual LLM that will execute your prompt are all automatically decided based on your prompt. You can turn off auto decisions for any of these by setting the relevant to `false`. You can also force them to run by setting them to `true`. If the field is `undefined` or not provided, it will be set to auto. 271 | 272 | ```ts 273 | interface GenerateParams { 274 | stream?: boolean; 275 | reasoning?: boolean; // Auto turns on depending on the prompt. Set to true to force reasoning. Set to false to disable auto-reasoning. 276 | multiLLM?: boolean; // Turn on if you want to run your prompt across all models then merge the results. 277 | system?: string; 278 | prompt: string | GeneratePromptObj[]; // String prompt or array which will treated as messages. 279 | schema?: z.ZodSchema; // Schema to use for structured output. 280 | contextTool?: { 281 | web?: boolean; //Auto turns on depending on the prompt. Set to true to force web-search. Set to false to disable web search. 282 | }; 283 | autoTool?: boolean; // Auto turns on depending on the prompt. Set to true to force tool-calling. Set to false to disable tool-calling. 284 | temperature?: number; 285 | topK?: number; 286 | topP?: number; 287 | tools?: { 288 | [key: string]: ReturnType; 289 | }; 290 | } 291 | 292 | interface GeneratePromptObj { 293 | role: CoreMessage["role"]; 294 | content: 295 | | string 296 | | { 297 | type: "text" | "image" | "file"; 298 | data: string; //url or base64 299 | mimeType?: string; //mimeType of the file 300 | }[]; 301 | } 302 | ``` 303 | 304 | ### `omi.embedding` 305 | 306 | View [full docs here](https://jigsawstack.com/embedding) 307 | 308 | ```ts 309 | interface EmbeddingParams { 310 | type: "audio" | "image" | "pdf" | "text" | "text-other"; 311 | text?: string; 312 | url?: string; 313 | fileContent?: string; 314 | } 315 | ``` 316 | 317 | ## Contributing 318 | 319 | Contributions are welcome! Please feel free to submit a PR :) 320 | -------------------------------------------------------------------------------- /biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", 3 | "vcs": { 4 | "enabled": true, 5 | "clientKind": "git", 6 | "useIgnoreFile": true 7 | }, 8 | "files": { 9 | "ignoreUnknown": false, 10 | "ignore": [] 11 | }, 12 | "formatter": { 13 | "enabled": true, 14 | "useEditorconfig": true, 15 | "formatWithErrors": false, 16 | "indentStyle": "space", 17 | "indentWidth": 2, 18 | "lineEnding": "lf", 19 | "lineWidth": 150, 20 | "attributePosition": "auto", 21 | "bracketSpacing": true 22 | }, 23 | "organizeImports": { 24 | "enabled": true 25 | }, 26 | "linter": { 27 | "enabled": false 28 | }, 29 | "javascript": { 30 | "formatter": { 31 | "jsxQuoteStyle": "double", 32 | "quoteProperties": "asNeeded", 33 | "trailingCommas": "es5", 34 | "semicolons": "always", 35 | "arrowParentheses": "always", 36 | "bracketSameLine": false, 37 | "quoteStyle": "double", 38 | "attributePosition": "auto", 39 | "bracketSpacing": true 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /examples/how_it_works.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JigsawStack/omiai/0c92a05cf79bda87e44babc488c5d15e457cab5c/examples/how_it_works.png -------------------------------------------------------------------------------- /examples/index.ts: -------------------------------------------------------------------------------- 1 | import dotenv from "dotenv"; 2 | dotenv.config(); 3 | 4 | import { z } from "zod"; 5 | import { createOmiAI } from "../index"; 6 | 7 | const omi = createOmiAI(); 8 | 9 | const run = async () => { 10 | const result = await omi.generate({ 11 | prompt: "how many r's are there in the text: 'strrawberry'?", 12 | schema: z.object({ 13 | answer: z.string(), 14 | }), 15 | }); 16 | 17 | console.log("reason: ", result?.reasoningText); 18 | console.log("result: ", result?.text); 19 | }; 20 | 21 | run(); 22 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | import { AnthropicProviderSettings, createAnthropic } from "@ai-sdk/anthropic"; 2 | import { DeepInfraProviderSettings, createDeepInfra } from "@ai-sdk/deepinfra"; 3 | import { GoogleGenerativeAIProviderSettings, createGoogleGenerativeAI, google } from "@ai-sdk/google"; 4 | import { GroqProviderSettings, createGroq } from "@ai-sdk/groq"; 5 | import { OpenAIProviderSettings, createOpenAI } from "@ai-sdk/openai"; 6 | import { 7 | CoreMessage, 8 | CoreTool, 9 | GenerateObjectResult, 10 | GenerateTextResult, 11 | LanguageModelV1, 12 | Output, 13 | StreamTextResult, 14 | generateObject, 15 | generateText, 16 | streamText, 17 | tool, 18 | } from "ai"; 19 | import { JigsawStack } from "jigsawstack"; 20 | import { z } from "zod"; 21 | export { tool }; 22 | 23 | export interface GeneratePromptObj { 24 | role: CoreMessage["role"]; 25 | content: 26 | | string 27 | | { 28 | type: "text" | "image" | "file"; 29 | data: string; 30 | mimeType?: string; 31 | }[]; 32 | } 33 | 34 | export interface GenerateParams { 35 | stream?: boolean; 36 | reasoning?: boolean; 37 | multiLLM?: boolean; 38 | system?: string; 39 | prompt: string | GeneratePromptObj[]; 40 | schema?: z.ZodSchema; 41 | contextTool?: { 42 | web?: boolean; 43 | }; 44 | autoTool?: boolean; 45 | temperature?: number; 46 | topK?: number; 47 | topP?: number; 48 | tools?: { 49 | [key: string]: CoreTool; 50 | }; 51 | } 52 | 53 | interface ToolUsed { 54 | name: string; 55 | result: any; 56 | args: any; 57 | type: "tool-call" | "tool-context-use"; 58 | } 59 | 60 | type Files = { 61 | type: "image" | "file"; 62 | data: Blob | string; 63 | mimeType?: string; 64 | }; 65 | 66 | type GenerateBase = { 67 | toolUsed?: ToolUsed[]; 68 | reasoningText?: string; 69 | object?: Awaited>["experimental_output"]; 70 | partialObjectStream?: ReturnType["experimental_partialOutputStream"]; 71 | textStream?: ReturnType["textStream"]; 72 | files?: Files[]; 73 | }; 74 | 75 | export type GenerateResponse = GenerateTextResult>, any> & 76 | StreamTextResult>, any> & 77 | GenerateBase; 78 | 79 | type EmbeddingParamsOriginal = Omit["embedding"]>["0"], "token_overflow_mode" | "file_store_key">; 80 | export type EmbeddingResponse = Awaited["embedding"]>>; 81 | 82 | export interface EmbeddingParams { 83 | type: EmbeddingParamsOriginal["type"]; 84 | text: EmbeddingParamsOriginal["text"]; 85 | fileContent: EmbeddingParamsOriginal["file_content"]; 86 | url: EmbeddingParamsOriginal["url"]; 87 | } 88 | 89 | const isNode = () => typeof process !== "undefined" && !!process.versions && !!process.versions.node; 90 | 91 | const messageMap = (prompts: GeneratePromptObj[], removeMedia: boolean = false) => { 92 | const messageMapped: CoreMessage[] = prompts.map((m) => ({ 93 | content: 94 | typeof m.content === "string" 95 | ? m.content 96 | : ( 97 | m.content.map((c) => ({ 98 | type: c.type, 99 | image: c.type === "image" ? c.data : undefined, 100 | text: c.type === "text" ? c.data : undefined, 101 | data: c.type === "file" ? c.data : undefined, 102 | mimeType: c.type !== "text" ? c?.mimeType : undefined, 103 | })) as any 104 | ).filter((c) => (removeMedia ? !["image", "file"].includes(c.type) : true)), 105 | role: m.role, 106 | })); 107 | 108 | return messageMapped; 109 | }; 110 | 111 | const fallback = async (key: string, item: T[], genFunc: (args?: H) => Promise) => { 112 | let index = -1; 113 | do { 114 | try { 115 | const resp = await genFunc(index >= 0 ? ({ [key]: item[index] } as H) : undefined); 116 | return resp; 117 | } catch (error) { 118 | index++; 119 | if (index >= item.length) { 120 | throw error; 121 | } 122 | } 123 | } while (index < item.length); 124 | }; 125 | 126 | const preConfigSchema = z.object({ 127 | model: z.string().describe("The best AI model based on the prompt, context and files"), 128 | reasoning: z 129 | .boolean() 130 | .describe( 131 | "Whether to use reasoning/thinking which requires a longer thinking process and more depth before answering. Only use this for more complex tasks like maths, character counting, general counting, coding, science & research" 132 | ), 133 | web_search: z.boolean().describe("Whether to search the web to gather more context before answering"), 134 | use_tool: z.boolean().describe("Is there a possibility that the task requires a tool to achieve it's goal from the list of tool?"), 135 | }); 136 | 137 | const decidePreConfig = async (modelList: { [key: string]: any }, tools: { [key: string]: any }, prompts: any[]) => { 138 | const modelKeys = Object.keys(modelList); 139 | 140 | const modelListForLLM = modelKeys 141 | .map((key) => { 142 | return { 143 | ...modelList[key], 144 | modelProvider: undefined, 145 | }; 146 | }) 147 | .reduce((acc, curr, index) => { 148 | acc[modelKeys[index]] = curr; 149 | return acc; 150 | }, {}); 151 | 152 | const preConfigPrompt = `List of models:${JSON.stringify(modelListForLLM)}\nList of tools:${Object.keys(tools).reverse().join(",")}\nPrompt: ${JSON.stringify(prompts[prompts.length - 1])}`; 153 | 154 | let preConfig: z.infer | null = null; 155 | 156 | preConfig = ( 157 | await fallback>("model", [google("gemini-1.5-flash-8b")], (args) => 158 | generateObject({ 159 | model: modelList["llama-3.3-70b-specdec"].modelProvider, 160 | prompt: preConfigPrompt, 161 | schema: preConfigSchema, 162 | temperature: 0, 163 | ...args, 164 | }) 165 | ) 166 | )?.object; 167 | 168 | if (!preConfig) { 169 | throw new Error("Failed to decide preConfigModel"); 170 | } 171 | 172 | return preConfig; 173 | }; 174 | 175 | export const createOmiAI = (config?: { 176 | groqProviderConfig?: GroqProviderSettings; 177 | googleProviderConfig?: GoogleGenerativeAIProviderSettings; 178 | openaiProviderConfig?: OpenAIProviderSettings; 179 | anthropicProviderConfig?: AnthropicProviderSettings; 180 | deepinfraProviderConfig?: DeepInfraProviderSettings; 181 | jigsawProviderConfig?: NonNullable["0"]>; 182 | }) => { 183 | const groq = createGroq({ 184 | apiKey: process.env?.GROQ_API_KEY || undefined, 185 | ...config?.groqProviderConfig, 186 | }); 187 | 188 | const google = createGoogleGenerativeAI({ 189 | apiKey: process.env?.GOOGLE_GENERATIVE_AI_API_KEY || undefined, 190 | ...config?.googleProviderConfig, 191 | }); 192 | 193 | const openai = createOpenAI({ 194 | apiKey: process.env?.OPENAI_API_KEY || undefined, 195 | compatibility: "strict", 196 | ...config?.openaiProviderConfig, 197 | }); 198 | 199 | const anthropic = createAnthropic({ 200 | apiKey: process.env?.ANTHROPIC_API_KEY || undefined, 201 | ...config?.anthropicProviderConfig, 202 | }); 203 | 204 | const deepinfra = createDeepInfra({ 205 | apiKey: process.env?.DEEPINFRA_API_KEY || undefined, 206 | ...config?.deepinfraProviderConfig, 207 | }); 208 | 209 | const jigsaw = JigsawStack({ 210 | apiKey: process.env?.JIGSAWSTACK_API_KEY || undefined, 211 | ...config?.jigsawProviderConfig, 212 | }); 213 | 214 | const modelList: { 215 | [key: string]: { 216 | id: string; 217 | speed: number; 218 | smarts: number; 219 | context_window: number; 220 | file_type_support: string[]; 221 | description: string; 222 | specialty: string[]; 223 | fallback: string | null; 224 | modelProvider: any; 225 | }; 226 | } = { 227 | "gemini-1.5-flash": { 228 | id: "gemini-1.5-flash", 229 | speed: 3, 230 | smarts: 4, 231 | context_window: 1000000, 232 | file_type_support: ["audio", "image", "video", "pdf", "text"], 233 | description: 234 | "Great for most tasks and, general questions and general web search. Great for large context tasks. Also great for all file types.", 235 | specialty: ["large-files"], 236 | fallback: null, 237 | modelProvider: google("gemini-1.5-flash", { 238 | structuredOutputs: false, 239 | safetySettings: [ 240 | { 241 | category: "HARM_CATEGORY_HARASSMENT", 242 | threshold: "BLOCK_NONE", 243 | }, 244 | { 245 | category: "HARM_CATEGORY_HATE_SPEECH", 246 | threshold: "BLOCK_NONE", 247 | }, 248 | { 249 | category: "HARM_CATEGORY_SEXUALLY_EXPLICIT", 250 | threshold: "BLOCK_NONE", 251 | }, 252 | { 253 | category: "HARM_CATEGORY_DANGEROUS_CONTENT", 254 | threshold: "BLOCK_NONE", 255 | }, 256 | ], 257 | }), 258 | }, 259 | "gpt-4o": { 260 | id: "gpt-4o", 261 | speed: 2, 262 | smarts: 4, 263 | context_window: 128000, 264 | file_type_support: ["image", "text"], 265 | description: "Great for highly complex tasks.", 266 | specialty: ["general"], 267 | fallback: null, 268 | modelProvider: openai("gpt-4o"), 269 | }, 270 | "claude-3-5-sonnet-latest": { 271 | id: "claude-3-5-sonnet-latest", 272 | speed: 2, 273 | smarts: 4, 274 | context_window: 200000, 275 | file_type_support: ["text"], 276 | description: "Great for highly complex coding tasks.", 277 | specialty: ["code"], 278 | fallback: null, 279 | modelProvider: anthropic("claude-3-5-sonnet-latest"), 280 | }, 281 | "llama-3.3-70b-specdec": { 282 | id: "llama-3.3-70b-specdec", 283 | speed: 5, 284 | smarts: 2, 285 | context_window: 8192, 286 | file_type_support: ["text"], 287 | description: "Great for simple tasks that require speed and tool use.", 288 | specialty: ["small-tasks"], 289 | fallback: null, 290 | modelProvider: groq("llama-3.3-70b-specdec"), 291 | }, 292 | }; 293 | 294 | const generate = async ({ 295 | prompt, 296 | schema, 297 | system, 298 | contextTool, 299 | reasoning, 300 | multiLLM, 301 | stream, 302 | autoTool = true, 303 | temperature = 0, 304 | topK, 305 | topP, 306 | tools, 307 | }: GenerateParams) => { 308 | try { 309 | const toolUsed: ToolUsed[] = []; 310 | 311 | const prompts: GeneratePromptObj[] = Array.isArray(prompt) ? prompt : [{ role: "user", content: prompt }]; 312 | const lastPromptContent = prompts[prompts.length - 1].content; 313 | // const allFiles = prompts 314 | // .filter((p) => Array.isArray(p.content)) 315 | // .map((p) => p.content) 316 | // .flat() 317 | // .filter((c) => (c as any).type != "text"); 318 | 319 | const latestPromptFiles = (Array.isArray(lastPromptContent) ? lastPromptContent.filter((c) => (c as any).type != "text") : []).map((f, i) => ({ 320 | ref: `https://onellmref.com/${i}`, 321 | ...f, 322 | })); 323 | 324 | const genFiles: Files[] = []; 325 | 326 | const allTools = { 327 | ...tools, 328 | // web_search: tool({ 329 | // description: "Search the web for the given query", 330 | // parameters: z.object({ 331 | // query: z.string().describe("The query to search the web for"), 332 | // }), 333 | // execute: async ({ query }) => { 334 | // const searchResult = await jigsaw.web.search({ 335 | // query, 336 | // ai_overview: false, 337 | // }); 338 | // return searchResult.results.map((c) => ({ 339 | // title: c.title, 340 | // content: c?.content || c?.description, 341 | // snippets: c.snippets, 342 | // url: c.url, 343 | // })); 344 | // }, 345 | // }), 346 | current_datetime: tool({ 347 | description: 348 | "Get the current date and time in ISO format. Use this tool for queries that references a time such as 'last weekend' or 'last month'", 349 | parameters: z.object({}), 350 | execute: async () => { 351 | return new Date().toISOString(); 352 | }, 353 | }), 354 | ai_scraper: tool({ 355 | description: "Scrape a website given the url and fields to scrape", 356 | parameters: z.object({ 357 | url: z.string().describe("The url to scrape"), 358 | fields: z.array(z.string()).describe("The fields to scrape"), 359 | }), 360 | execute: async ({ url, fields }) => { 361 | const scrapedData = await jigsaw.web.ai_scrape({ 362 | url: url.includes("https://onellmref.com") ? latestPromptFiles.find((f) => f.ref == url)?.data || url : url, 363 | element_prompts: fields, 364 | }); 365 | return scrapedData.context; 366 | }, 367 | }), 368 | ocr: tool({ 369 | description: "Performs OCR on an image or PDF URL", 370 | parameters: z.object({ 371 | url: z.string().describe("The image or PDF URL to OCR"), 372 | fields: z.array(z.string()).describe("fields to extract from the image or PDF"), 373 | }), 374 | execute: async ({ url, fields }) => { 375 | const scrapedData = await jigsaw.vision.vocr({ 376 | url: url.includes("https://onellmref.com") ? latestPromptFiles.find((f) => f.ref == url)?.data || url : url, 377 | prompt: fields, 378 | }); 379 | return scrapedData.context; 380 | }, 381 | }), 382 | ai_image_generation: tool({ 383 | description: "Generate an image given the prompt", 384 | parameters: z.object({ 385 | prompt: z.string().describe("The prompt to generate an image for"), 386 | }), 387 | execute: async ({ prompt }) => { 388 | const image = await jigsaw.image_generation({ prompt: prompt }); 389 | const blob = await image.blob(); 390 | genFiles.push({ type: "image", data: blob, mimeType: "image/png" }); 391 | return "image generated and added to files"; 392 | }, 393 | }), 394 | speech_to_text: tool({ 395 | description: "Convert speech to text", 396 | parameters: z.object({ 397 | url: z.string().describe("The audio URL to convert to text"), 398 | }), 399 | execute: async ({ url }) => { 400 | const text = await jigsaw.audio.speech_to_text({ 401 | url: url.includes("https://onellmref.com") ? latestPromptFiles.find((f) => f.ref == url)?.data || url : url, 402 | }); 403 | return text; 404 | }, 405 | }), 406 | text_to_speech: tool({ 407 | description: "Convert text to speech", 408 | parameters: z.object({ 409 | text: z.string().describe("The text to convert to speech"), 410 | }), 411 | execute: async ({ text }) => { 412 | const speech = await jigsaw.audio.text_to_speech({ text: text }); 413 | const blob = await speech.blob(); 414 | genFiles.push({ type: "file", data: blob, mimeType: "audio/mpeg" }); 415 | return "audio generated"; 416 | }, 417 | }), 418 | }; 419 | 420 | const preConfigModel = await decidePreConfig(modelList, allTools, prompts); 421 | 422 | console.log("preConfigModel: ", preConfigModel); 423 | 424 | const selectedModelID = preConfigModel.model; 425 | const modelConfig = modelList[selectedModelID]; 426 | 427 | let latestTextPrompt = Array.isArray(lastPromptContent) ? lastPromptContent?.find((c) => c.type == "text")?.data : lastPromptContent; 428 | let searchResult: Awaited> | undefined = undefined; 429 | 430 | if (latestTextPrompt) { 431 | if ((contextTool?.web || preConfigModel.web_search) && contextTool?.web !== false) { 432 | searchResult = await jigsaw.web.search({ 433 | query: latestTextPrompt, 434 | ai_overview: false, 435 | }); 436 | 437 | toolUsed.push({ 438 | name: "web_search", 439 | result: searchResult, 440 | type: "tool-context-use", 441 | args: { 442 | query: latestTextPrompt, 443 | ai_overview: false, 444 | }, 445 | }); 446 | 447 | const webSearchResultMap = searchResult.results 448 | .map((c) => ({ 449 | title: c.title, 450 | content: c?.content || c?.description, 451 | snippets: c.snippets, 452 | url: c.url, 453 | })) 454 | .slice(0, 3); 455 | 456 | prompts.splice(prompts.length - 1, 0, { 457 | role: "user", 458 | content: `Web search result: ${JSON.stringify(webSearchResultMap)}`, 459 | }); 460 | } 461 | } 462 | 463 | let toolText: string | undefined = undefined; 464 | 465 | if (preConfigModel.use_tool && autoTool) { 466 | const toolResult = await fallback>("model", [groq("llama-3.3-70b-versatile")], (args) => 467 | generateText({ 468 | model: openai("gpt-4o-mini"), 469 | prompt: 470 | latestTextPrompt && latestPromptFiles 471 | ? `${latestTextPrompt}\nfiles: ${JSON.stringify(latestPromptFiles.map((f) => f.ref))}` 472 | : latestTextPrompt, 473 | system, 474 | tools: allTools, 475 | toolChoice: "auto", 476 | maxSteps: 5, 477 | temperature, 478 | topK, 479 | topP, 480 | ...args, 481 | }) 482 | ); 483 | 484 | toolText = toolResult?.text; 485 | 486 | const allToolCalls = 487 | toolResult?.steps 488 | .map((s) => 489 | s.toolCalls.map((t, i) => ({ 490 | ...t, 491 | result: s.toolResults[i].result, 492 | })) 493 | ) 494 | .flat() || []; 495 | 496 | toolUsed.push( 497 | ...allToolCalls.map((t) => ({ 498 | name: t.toolName, 499 | result: t.result, 500 | type: "tool-call" as const, 501 | args: t.args, 502 | })) 503 | ); 504 | 505 | prompts.splice(prompts.length, 0, { 506 | role: "user", 507 | content: `Tool result: ${toolText}`, 508 | }); 509 | } 510 | 511 | let reasoningText: string | undefined = undefined; 512 | 513 | if ((reasoning || preConfigModel.reasoning) && reasoning !== false) { 514 | const reasoningResult = await fallback>( 515 | "model", 516 | [deepinfra("deepseek-ai/DeepSeek-R1")], 517 | (args) => 518 | generateText({ 519 | model: openai("o3-mini"), 520 | system, 521 | messages: messageMap(prompts, true), 522 | temperature, 523 | topK, 524 | topP, 525 | maxTokens: undefined, 526 | ...args, 527 | }) 528 | ); 529 | 530 | reasoningText = reasoningResult?.reasoning || reasoningResult?.text; 531 | 532 | if (reasoningText?.includes("")) { 533 | reasoningText = reasoningText.split("")[1].split("")[0]?.trim(); 534 | } 535 | 536 | prompts.splice(prompts.length - 1, 0, { 537 | role: "user", 538 | content: `Context: ${reasoningText}`, 539 | }); 540 | } 541 | 542 | const generateFunction = stream ? streamText : generateText; 543 | 544 | if (multiLLM) { 545 | const multiLLMPromiseResult = await Promise.allSettled( 546 | Object.keys(modelList).map((m) => 547 | generateText({ 548 | model: modelList[m].modelProvider, 549 | system, 550 | messages: messageMap(prompts, true), 551 | temperature, 552 | topK, 553 | topP, 554 | }) 555 | ) 556 | ); 557 | 558 | const multiLLMResults = multiLLMPromiseResult.filter((r) => r.status == "fulfilled").map((r) => r.value); 559 | 560 | prompts.splice(prompts.length - 1, 0, { 561 | role: "user", 562 | content: [{ type: "text", data: `Context from multiple LLMs: ${JSON.stringify(multiLLMResults.map((r) => r.text))}` }], 563 | }); 564 | } 565 | 566 | const llmResp = await fallback( 567 | "model", 568 | [ 569 | modelConfig?.fallback && modelList[modelConfig?.fallback] 570 | ? modelList[modelConfig?.fallback].modelProvider 571 | : modelConfig.id == "gpt-4o" 572 | ? google("gemini-1.5-flash") 573 | : openai("gpt-4o"), 574 | ], 575 | (args) => 576 | generateFunction({ 577 | model: reasoningText && modelConfig.id.includes("llama-3.3") ? google("gemini-1.5-flash") : modelConfig.modelProvider, 578 | system, 579 | messages: messageMap(prompts), 580 | experimental_output: schema 581 | ? Output.object({ 582 | schema, 583 | }) 584 | : undefined, 585 | temperature, 586 | topK, 587 | topP, 588 | ...args, 589 | }) as any 590 | ); 591 | 592 | let llmResult = llmResp as GenerateResponse; 593 | 594 | llmResult["toolUsed"] = toolUsed; 595 | llmResult["files"] = genFiles; 596 | if (reasoningText) { 597 | llmResult["reasoningText"] = reasoningText; 598 | } 599 | 600 | if (schema) { 601 | if (stream) { 602 | llmResult.partialObjectStream = (llmResp as StreamTextResult>, any>).experimental_partialOutputStream; 603 | } else { 604 | llmResult.object = (llmResp as GenerateTextResult>, any>).experimental_output; 605 | } 606 | } 607 | 608 | return llmResult; 609 | } catch (error: any) { 610 | throw error; 611 | } 612 | }; 613 | 614 | const embedding = async (params: EmbeddingParams) => { 615 | const resp = await jigsaw.embedding({ 616 | type: params.type, 617 | text: params.text, 618 | file_content: params.fileContent, 619 | url: params.url, 620 | token_overflow_mode: "error", 621 | }); 622 | 623 | return { 624 | embeddings: resp.embeddings, 625 | chunks: resp.chunks, 626 | }; 627 | }; 628 | 629 | return { 630 | generate, 631 | embedding, 632 | }; 633 | }; 634 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "omiai", 3 | "description": "OmiAI - A highly opinionated AI SDK with auto-model selection, built-in reasoning and curated tools", 4 | "homepage": "https://github.com/JigsawStack/omiai", 5 | "repository": { 6 | "type": "git", 7 | "url": "git+https://github.com/JigsawStack/omiai.git" 8 | }, 9 | "bugs": { 10 | "url": "https://github.com/JigsawStack/omiai/issues" 11 | }, 12 | "keywords": ["framework", "ai", "llm", "react"], 13 | "type": "module", 14 | "version": "0.0.8", 15 | "packageManager": "yarn@1.22.22", 16 | "license": "Apache-2.0", 17 | "engines": { 18 | "node": ">=18" 19 | }, 20 | "main": "./dist/index.cjs", 21 | "module": "./dist/index.mjs", 22 | "types": "./dist/index.d.cts", 23 | "files": ["dist/**"], 24 | "exports": { 25 | "require": { 26 | "types": "./dist/index.d.cts", 27 | "default": "./dist/index.cjs" 28 | }, 29 | "import": { 30 | "types": "./dist/index.d.mts", 31 | "default": "./dist/index.mjs" 32 | } 33 | }, 34 | "scripts": { 35 | "build": "pkgroll --minify --src=./", 36 | "format": "biome check --write ." 37 | }, 38 | "dependencies": { 39 | "@ai-sdk/anthropic": "^1.1.2", 40 | "@ai-sdk/deepinfra": "^0.1.5", 41 | "@ai-sdk/google": "^1.1.2", 42 | "@ai-sdk/groq": "^1.1.2", 43 | "@ai-sdk/openai": "^1.1.9", 44 | "ai": "^4.1.5", 45 | "jigsawstack": "^0.0.23", 46 | "zod": "^3.24.1" 47 | }, 48 | "devDependencies": { 49 | "@types/node": "^22.10.10", 50 | "dotenv": "^16.4.7", 51 | "pkgroll": "^2.6.1", 52 | "tsx": "^4.19.2", 53 | "typescript": "^5.7.3" 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ai-sdk/anthropic@^1.1.2": 6 | version "1.1.2" 7 | resolved "https://registry.yarnpkg.com/@ai-sdk/anthropic/-/anthropic-1.1.2.tgz#c9dc767a935e9c00bf2b15b0b43174353798df82" 8 | integrity sha512-AR5/zL+N+zVXABocbi8XTsDR44jAbylh77G4VytoE7rQRFTw2Ht/cOxwrTlRZ6RgJeGYABBMnHK9XbxRVOnsfQ== 9 | dependencies: 10 | "@ai-sdk/provider" "1.0.6" 11 | "@ai-sdk/provider-utils" "2.1.2" 12 | 13 | "@ai-sdk/deepinfra@^0.1.5": 14 | version "0.1.5" 15 | resolved "https://registry.yarnpkg.com/@ai-sdk/deepinfra/-/deepinfra-0.1.5.tgz#7e3946e47183d683d524d228b0166cf6709f438d" 16 | integrity sha512-DLeLbw4oeTzpsGmfWIDdkGq0O5tOUr8jyEvus9B9zeohaWvToGFlRiouxHYGmRGC6fONryfOVkvNo/w1CxG9Fg== 17 | dependencies: 18 | "@ai-sdk/openai-compatible" "0.1.5" 19 | "@ai-sdk/provider" "1.0.6" 20 | "@ai-sdk/provider-utils" "2.1.4" 21 | 22 | "@ai-sdk/google@^1.1.2": 23 | version "1.1.2" 24 | resolved "https://registry.yarnpkg.com/@ai-sdk/google/-/google-1.1.2.tgz#e867406e39fd89b052373c4292d52d078812df6c" 25 | integrity sha512-J/T9Ryf2ar5TJN0NW2IFAmjzz5UF15FmRwUaBq6e1a5ZUIVfdIHVjYGc1mxrs4yEPsN291iEj7/kZAVdT2mJzA== 26 | dependencies: 27 | "@ai-sdk/provider" "1.0.6" 28 | "@ai-sdk/provider-utils" "2.1.2" 29 | 30 | "@ai-sdk/groq@^1.1.2": 31 | version "1.1.2" 32 | resolved "https://registry.yarnpkg.com/@ai-sdk/groq/-/groq-1.1.2.tgz#7dc758560b544af33e700c4e18add85c057c1167" 33 | integrity sha512-CBJubA3JDMMd1QXlmkzzzUZf1qqfXHkWLTjXa0TWSOcOfW/HorUg00jU6TBvnXIkoR2jAHtYNiSKbtmzezDlFQ== 34 | dependencies: 35 | "@ai-sdk/provider" "1.0.6" 36 | "@ai-sdk/provider-utils" "2.1.2" 37 | 38 | "@ai-sdk/openai-compatible@0.1.5": 39 | version "0.1.5" 40 | resolved "https://registry.yarnpkg.com/@ai-sdk/openai-compatible/-/openai-compatible-0.1.5.tgz#ff8a338f0ec4e36c7dc60c7de8a35e8b7c7f7c39" 41 | integrity sha512-Y2bq1N5xW/AVpcKXHzaM30sNt2SnAB4jeNUT3Aj5J0Z68RGn51qx8uvizpmgky88E5ojGGiB+Avu9dgt390HaQ== 42 | dependencies: 43 | "@ai-sdk/provider" "1.0.6" 44 | "@ai-sdk/provider-utils" "2.1.4" 45 | 46 | "@ai-sdk/openai@^1.1.9": 47 | version "1.1.9" 48 | resolved "https://registry.yarnpkg.com/@ai-sdk/openai/-/openai-1.1.9.tgz#8ea8a7403b70fafcefe0dbfe9e4170148e5109ce" 49 | integrity sha512-t/CpC4TLipdbgBJTMX/otzzqzCMBSPQwUOkYPGbT/jyuC86F+YO9o+LS0Ty2pGUE1kyT+B3WmJ318B16ZCg4hw== 50 | dependencies: 51 | "@ai-sdk/provider" "1.0.7" 52 | "@ai-sdk/provider-utils" "2.1.6" 53 | 54 | "@ai-sdk/provider-utils@2.1.2": 55 | version "2.1.2" 56 | resolved "https://registry.yarnpkg.com/@ai-sdk/provider-utils/-/provider-utils-2.1.2.tgz#ba5322c406912584411f9edc9ae83596009d7048" 57 | integrity sha512-ezpQT6kzy/2O4yyn/2YigMqynBYjZIOam3/EMNVzju+Ogj+Z+pf27c/Th78ce0A2ltgrXx6xN14sal/HHZNOOw== 58 | dependencies: 59 | "@ai-sdk/provider" "1.0.6" 60 | eventsource-parser "^3.0.0" 61 | nanoid "^3.3.8" 62 | secure-json-parse "^2.7.0" 63 | 64 | "@ai-sdk/provider-utils@2.1.4": 65 | version "2.1.4" 66 | resolved "https://registry.yarnpkg.com/@ai-sdk/provider-utils/-/provider-utils-2.1.4.tgz#3f6d112f9b955f4b8543d7acde6c6dd31fe76710" 67 | integrity sha512-KrGr76ebmN3onrb+bQihgXZyYgYu/kClB+YjFmR1uXQpJG067rCBDWuTHvpI7vwPdQQDvIIgZ+0U5G4V+dN74w== 68 | dependencies: 69 | "@ai-sdk/provider" "1.0.6" 70 | eventsource-parser "^3.0.0" 71 | nanoid "^3.3.8" 72 | secure-json-parse "^2.7.0" 73 | 74 | "@ai-sdk/provider-utils@2.1.6": 75 | version "2.1.6" 76 | resolved "https://registry.yarnpkg.com/@ai-sdk/provider-utils/-/provider-utils-2.1.6.tgz#5b2bff2d44ffa8ec629109ea2b28d2a7528104b4" 77 | integrity sha512-Pfyaj0QZS22qyVn5Iz7IXcJ8nKIKlu2MeSAdKJzTwkAks7zdLaKVB+396Rqcp1bfQnxl7vaduQVMQiXUrgK8Gw== 78 | dependencies: 79 | "@ai-sdk/provider" "1.0.7" 80 | eventsource-parser "^3.0.0" 81 | nanoid "^3.3.8" 82 | secure-json-parse "^2.7.0" 83 | 84 | "@ai-sdk/provider@1.0.6": 85 | version "1.0.6" 86 | resolved "https://registry.yarnpkg.com/@ai-sdk/provider/-/provider-1.0.6.tgz#ab7e53a48a2cefe7bd593590a611b2ce12465bc3" 87 | integrity sha512-hwj/gFNxpDgEfTaYzCYoslmw01IY9kWLKl/wf8xuPvHtQIzlfXWmmUwc8PnCwxyt8cKzIuV0dfUghCf68HQ0SA== 88 | dependencies: 89 | json-schema "^0.4.0" 90 | 91 | "@ai-sdk/provider@1.0.7": 92 | version "1.0.7" 93 | resolved "https://registry.yarnpkg.com/@ai-sdk/provider/-/provider-1.0.7.tgz#66e07407678153b514aebf3f1c3c035e5e833380" 94 | integrity sha512-q1PJEZ0qD9rVR+8JFEd01/QM++csMT5UVwYXSN2u54BrVw/D8TZLTeg2FEfKK00DgAx0UtWd8XOhhwITP9BT5g== 95 | dependencies: 96 | json-schema "^0.4.0" 97 | 98 | "@ai-sdk/react@1.1.3": 99 | version "1.1.3" 100 | resolved "https://registry.yarnpkg.com/@ai-sdk/react/-/react-1.1.3.tgz#a934b7ca36de9d9ae2901c24248b7a4799a35342" 101 | integrity sha512-W9R3vIcb3xkV3Vl6/8HSMeiKkJ1IQyCSSA1Ahi0beox8SBfQb4I3h+tTiBT5EU2UZKKsM1SLKeFp6M06T6w8ag== 102 | dependencies: 103 | "@ai-sdk/provider-utils" "2.1.2" 104 | "@ai-sdk/ui-utils" "1.1.3" 105 | swr "^2.2.5" 106 | throttleit "2.1.0" 107 | 108 | "@ai-sdk/ui-utils@1.1.3": 109 | version "1.1.3" 110 | resolved "https://registry.yarnpkg.com/@ai-sdk/ui-utils/-/ui-utils-1.1.3.tgz#76a39ff4b99185785638868ff178785f73812cd2" 111 | integrity sha512-DczePOv7SxXNY7IkHo4dbN6DT68vmDLCm5uJNUQy0eVkF6cfTbGmScgU36UQ63v7ggUTGffexOo0aB3eJOdFcw== 112 | dependencies: 113 | "@ai-sdk/provider" "1.0.6" 114 | "@ai-sdk/provider-utils" "2.1.2" 115 | zod-to-json-schema "^3.24.1" 116 | 117 | "@esbuild/aix-ppc64@0.23.1": 118 | version "0.23.1" 119 | resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz#51299374de171dbd80bb7d838e1cfce9af36f353" 120 | integrity sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ== 121 | 122 | "@esbuild/aix-ppc64@0.24.2": 123 | version "0.24.2" 124 | resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz#38848d3e25afe842a7943643cbcd387cc6e13461" 125 | integrity sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA== 126 | 127 | "@esbuild/android-arm64@0.23.1": 128 | version "0.23.1" 129 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018" 130 | integrity sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw== 131 | 132 | "@esbuild/android-arm64@0.24.2": 133 | version "0.24.2" 134 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz#f592957ae8b5643129fa889c79e69cd8669bb894" 135 | integrity sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg== 136 | 137 | "@esbuild/android-arm@0.23.1": 138 | version "0.23.1" 139 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee" 140 | integrity sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ== 141 | 142 | "@esbuild/android-arm@0.24.2": 143 | version "0.24.2" 144 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.2.tgz#72d8a2063aa630308af486a7e5cbcd1e134335b3" 145 | integrity sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q== 146 | 147 | "@esbuild/android-x64@0.23.1": 148 | version "0.23.1" 149 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517" 150 | integrity sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg== 151 | 152 | "@esbuild/android-x64@0.24.2": 153 | version "0.24.2" 154 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.2.tgz#9a7713504d5f04792f33be9c197a882b2d88febb" 155 | integrity sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw== 156 | 157 | "@esbuild/darwin-arm64@0.23.1": 158 | version "0.23.1" 159 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16" 160 | integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q== 161 | 162 | "@esbuild/darwin-arm64@0.24.2": 163 | version "0.24.2" 164 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz#02ae04ad8ebffd6e2ea096181b3366816b2b5936" 165 | integrity sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA== 166 | 167 | "@esbuild/darwin-x64@0.23.1": 168 | version "0.23.1" 169 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931" 170 | integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw== 171 | 172 | "@esbuild/darwin-x64@0.24.2": 173 | version "0.24.2" 174 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz#9ec312bc29c60e1b6cecadc82bd504d8adaa19e9" 175 | integrity sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA== 176 | 177 | "@esbuild/freebsd-arm64@0.23.1": 178 | version "0.23.1" 179 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc" 180 | integrity sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA== 181 | 182 | "@esbuild/freebsd-arm64@0.24.2": 183 | version "0.24.2" 184 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz#5e82f44cb4906d6aebf24497d6a068cfc152fa00" 185 | integrity sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg== 186 | 187 | "@esbuild/freebsd-x64@0.23.1": 188 | version "0.23.1" 189 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730" 190 | integrity sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g== 191 | 192 | "@esbuild/freebsd-x64@0.24.2": 193 | version "0.24.2" 194 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz#3fb1ce92f276168b75074b4e51aa0d8141ecce7f" 195 | integrity sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q== 196 | 197 | "@esbuild/linux-arm64@0.23.1": 198 | version "0.23.1" 199 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383" 200 | integrity sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g== 201 | 202 | "@esbuild/linux-arm64@0.24.2": 203 | version "0.24.2" 204 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz#856b632d79eb80aec0864381efd29de8fd0b1f43" 205 | integrity sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg== 206 | 207 | "@esbuild/linux-arm@0.23.1": 208 | version "0.23.1" 209 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771" 210 | integrity sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ== 211 | 212 | "@esbuild/linux-arm@0.24.2": 213 | version "0.24.2" 214 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz#c846b4694dc5a75d1444f52257ccc5659021b736" 215 | integrity sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA== 216 | 217 | "@esbuild/linux-ia32@0.23.1": 218 | version "0.23.1" 219 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333" 220 | integrity sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ== 221 | 222 | "@esbuild/linux-ia32@0.24.2": 223 | version "0.24.2" 224 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz#f8a16615a78826ccbb6566fab9a9606cfd4a37d5" 225 | integrity sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw== 226 | 227 | "@esbuild/linux-loong64@0.23.1": 228 | version "0.23.1" 229 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac" 230 | integrity sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw== 231 | 232 | "@esbuild/linux-loong64@0.24.2": 233 | version "0.24.2" 234 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz#1c451538c765bf14913512c76ed8a351e18b09fc" 235 | integrity sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ== 236 | 237 | "@esbuild/linux-mips64el@0.23.1": 238 | version "0.23.1" 239 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6" 240 | integrity sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q== 241 | 242 | "@esbuild/linux-mips64el@0.24.2": 243 | version "0.24.2" 244 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz#0846edeefbc3d8d50645c51869cc64401d9239cb" 245 | integrity sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw== 246 | 247 | "@esbuild/linux-ppc64@0.23.1": 248 | version "0.23.1" 249 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96" 250 | integrity sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw== 251 | 252 | "@esbuild/linux-ppc64@0.24.2": 253 | version "0.24.2" 254 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz#8e3fc54505671d193337a36dfd4c1a23b8a41412" 255 | integrity sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw== 256 | 257 | "@esbuild/linux-riscv64@0.23.1": 258 | version "0.23.1" 259 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7" 260 | integrity sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA== 261 | 262 | "@esbuild/linux-riscv64@0.24.2": 263 | version "0.24.2" 264 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz#6a1e92096d5e68f7bb10a0d64bb5b6d1daf9a694" 265 | integrity sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q== 266 | 267 | "@esbuild/linux-s390x@0.23.1": 268 | version "0.23.1" 269 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f" 270 | integrity sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw== 271 | 272 | "@esbuild/linux-s390x@0.24.2": 273 | version "0.24.2" 274 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz#ab18e56e66f7a3c49cb97d337cd0a6fea28a8577" 275 | integrity sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw== 276 | 277 | "@esbuild/linux-x64@0.23.1": 278 | version "0.23.1" 279 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24" 280 | integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ== 281 | 282 | "@esbuild/linux-x64@0.24.2": 283 | version "0.24.2" 284 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz#8140c9b40da634d380b0b29c837a0b4267aff38f" 285 | integrity sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q== 286 | 287 | "@esbuild/netbsd-arm64@0.24.2": 288 | version "0.24.2" 289 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz#65f19161432bafb3981f5f20a7ff45abb2e708e6" 290 | integrity sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw== 291 | 292 | "@esbuild/netbsd-x64@0.23.1": 293 | version "0.23.1" 294 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653" 295 | integrity sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA== 296 | 297 | "@esbuild/netbsd-x64@0.24.2": 298 | version "0.24.2" 299 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz#7a3a97d77abfd11765a72f1c6f9b18f5396bcc40" 300 | integrity sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw== 301 | 302 | "@esbuild/openbsd-arm64@0.23.1": 303 | version "0.23.1" 304 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7" 305 | integrity sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q== 306 | 307 | "@esbuild/openbsd-arm64@0.24.2": 308 | version "0.24.2" 309 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz#58b00238dd8f123bfff68d3acc53a6ee369af89f" 310 | integrity sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A== 311 | 312 | "@esbuild/openbsd-x64@0.23.1": 313 | version "0.23.1" 314 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273" 315 | integrity sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA== 316 | 317 | "@esbuild/openbsd-x64@0.24.2": 318 | version "0.24.2" 319 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz#0ac843fda0feb85a93e288842936c21a00a8a205" 320 | integrity sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA== 321 | 322 | "@esbuild/sunos-x64@0.23.1": 323 | version "0.23.1" 324 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403" 325 | integrity sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA== 326 | 327 | "@esbuild/sunos-x64@0.24.2": 328 | version "0.24.2" 329 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz#8b7aa895e07828d36c422a4404cc2ecf27fb15c6" 330 | integrity sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig== 331 | 332 | "@esbuild/win32-arm64@0.23.1": 333 | version "0.23.1" 334 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2" 335 | integrity sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A== 336 | 337 | "@esbuild/win32-arm64@0.24.2": 338 | version "0.24.2" 339 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz#c023afb647cabf0c3ed13f0eddfc4f1d61c66a85" 340 | integrity sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ== 341 | 342 | "@esbuild/win32-ia32@0.23.1": 343 | version "0.23.1" 344 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac" 345 | integrity sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ== 346 | 347 | "@esbuild/win32-ia32@0.24.2": 348 | version "0.24.2" 349 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz#96c356132d2dda990098c8b8b951209c3cd743c2" 350 | integrity sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA== 351 | 352 | "@esbuild/win32-x64@0.23.1": 353 | version "0.23.1" 354 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699" 355 | integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg== 356 | 357 | "@esbuild/win32-x64@0.24.2": 358 | version "0.24.2" 359 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz#34aa0b52d0fbb1a654b596acfa595f0c7b77a77b" 360 | integrity sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg== 361 | 362 | "@jridgewell/sourcemap-codec@^1.5.0": 363 | version "1.5.0" 364 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" 365 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== 366 | 367 | "@nodelib/fs.scandir@2.1.5": 368 | version "2.1.5" 369 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" 370 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== 371 | dependencies: 372 | "@nodelib/fs.stat" "2.0.5" 373 | run-parallel "^1.1.9" 374 | 375 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": 376 | version "2.0.5" 377 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" 378 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== 379 | 380 | "@nodelib/fs.walk@^1.2.3": 381 | version "1.2.8" 382 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" 383 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== 384 | dependencies: 385 | "@nodelib/fs.scandir" "2.1.5" 386 | fastq "^1.6.0" 387 | 388 | "@opentelemetry/api@1.9.0": 389 | version "1.9.0" 390 | resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" 391 | integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== 392 | 393 | "@rollup/plugin-alias@^5.1.1": 394 | version "5.1.1" 395 | resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-5.1.1.tgz#53601d88cda8b1577aa130b4a6e452283605bf26" 396 | integrity sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ== 397 | 398 | "@rollup/plugin-commonjs@^28.0.2": 399 | version "28.0.2" 400 | resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.2.tgz#193d7a86470f112b56927c1d821ee45951a819ea" 401 | integrity sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw== 402 | dependencies: 403 | "@rollup/pluginutils" "^5.0.1" 404 | commondir "^1.0.1" 405 | estree-walker "^2.0.2" 406 | fdir "^6.2.0" 407 | is-reference "1.2.1" 408 | magic-string "^0.30.3" 409 | picomatch "^4.0.2" 410 | 411 | "@rollup/plugin-dynamic-import-vars@^2.1.5": 412 | version "2.1.5" 413 | resolved "https://registry.yarnpkg.com/@rollup/plugin-dynamic-import-vars/-/plugin-dynamic-import-vars-2.1.5.tgz#3f42cbea2d176def0485eb1118b40cc6219342e7" 414 | integrity sha512-Mymi24fd9hlRifdZV/jYIFj1dn99F34imiYu3KzlAcgBcRi3i9SucgW/VRo5SQ9K4NuQ7dCep6pFWgNyhRdFHQ== 415 | dependencies: 416 | "@rollup/pluginutils" "^5.0.1" 417 | astring "^1.8.5" 418 | estree-walker "^2.0.2" 419 | fast-glob "^3.2.12" 420 | magic-string "^0.30.3" 421 | 422 | "@rollup/plugin-inject@^5.0.5": 423 | version "5.0.5" 424 | resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz#616f3a73fe075765f91c5bec90176608bed277a3" 425 | integrity sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg== 426 | dependencies: 427 | "@rollup/pluginutils" "^5.0.1" 428 | estree-walker "^2.0.2" 429 | magic-string "^0.30.3" 430 | 431 | "@rollup/plugin-json@^6.1.0": 432 | version "6.1.0" 433 | resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.1.0.tgz#fbe784e29682e9bb6dee28ea75a1a83702e7b805" 434 | integrity sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA== 435 | dependencies: 436 | "@rollup/pluginutils" "^5.1.0" 437 | 438 | "@rollup/plugin-node-resolve@^16.0.0": 439 | version "16.0.0" 440 | resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.0.tgz#b1a0594661f40d7b061d82136e847354ff85f211" 441 | integrity sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg== 442 | dependencies: 443 | "@rollup/pluginutils" "^5.0.1" 444 | "@types/resolve" "1.20.2" 445 | deepmerge "^4.2.2" 446 | is-module "^1.0.0" 447 | resolve "^1.22.1" 448 | 449 | "@rollup/plugin-replace@^6.0.2": 450 | version "6.0.2" 451 | resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-6.0.2.tgz#2f565d312d681e4570ff376c55c5c08eb6f1908d" 452 | integrity sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ== 453 | dependencies: 454 | "@rollup/pluginutils" "^5.0.1" 455 | magic-string "^0.30.3" 456 | 457 | "@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.1.0", "@rollup/pluginutils@^5.1.4": 458 | version "5.1.4" 459 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.4.tgz#bb94f1f9eaaac944da237767cdfee6c5b2262d4a" 460 | integrity sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ== 461 | dependencies: 462 | "@types/estree" "^1.0.0" 463 | estree-walker "^2.0.2" 464 | picomatch "^4.0.2" 465 | 466 | "@rollup/rollup-android-arm-eabi@4.32.0": 467 | version "4.32.0" 468 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.32.0.tgz#42a8e897c7b656adb4edebda3a8b83a57526452f" 469 | integrity sha512-G2fUQQANtBPsNwiVFg4zKiPQyjVKZCUdQUol53R8E71J7AsheRMV/Yv/nB8giOcOVqP7//eB5xPqieBYZe9bGg== 470 | 471 | "@rollup/rollup-android-arm64@4.32.0": 472 | version "4.32.0" 473 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.32.0.tgz#846a73eef25b18ff94bac1e52acab6a7c7ac22fa" 474 | integrity sha512-qhFwQ+ljoymC+j5lXRv8DlaJYY/+8vyvYmVx074zrLsu5ZGWYsJNLjPPVJJjhZQpyAKUGPydOq9hRLLNvh1s3A== 475 | 476 | "@rollup/rollup-darwin-arm64@4.32.0": 477 | version "4.32.0" 478 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.32.0.tgz#014ed37f1f7809fdf3442a6b689d3a074a844058" 479 | integrity sha512-44n/X3lAlWsEY6vF8CzgCx+LQaoqWGN7TzUfbJDiTIOjJm4+L2Yq+r5a8ytQRGyPqgJDs3Rgyo8eVL7n9iW6AQ== 480 | 481 | "@rollup/rollup-darwin-x64@4.32.0": 482 | version "4.32.0" 483 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.32.0.tgz#dde6ed3e56d0b34477fa56c4a199abe5d4b9846b" 484 | integrity sha512-F9ct0+ZX5Np6+ZDztxiGCIvlCaW87HBdHcozUfsHnj1WCUTBUubAoanhHUfnUHZABlElyRikI0mgcw/qdEm2VQ== 485 | 486 | "@rollup/rollup-freebsd-arm64@4.32.0": 487 | version "4.32.0" 488 | resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.32.0.tgz#8ad634f462a6b7e338257cf64c7baff99618a08e" 489 | integrity sha512-JpsGxLBB2EFXBsTLHfkZDsXSpSmKD3VxXCgBQtlPcuAqB8TlqtLcbeMhxXQkCDv1avgwNjF8uEIbq5p+Cee0PA== 490 | 491 | "@rollup/rollup-freebsd-x64@4.32.0": 492 | version "4.32.0" 493 | resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.32.0.tgz#9d4d1dbbafcb0354d52ba6515a43c7511dba8052" 494 | integrity sha512-wegiyBT6rawdpvnD9lmbOpx5Sph+yVZKHbhnSP9MqUEDX08G4UzMU+D87jrazGE7lRSyTRs6NEYHtzfkJ3FjjQ== 495 | 496 | "@rollup/rollup-linux-arm-gnueabihf@4.32.0": 497 | version "4.32.0" 498 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.32.0.tgz#3bd5fcbab92a66e032faef1078915d1dbf27de7a" 499 | integrity sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A== 500 | 501 | "@rollup/rollup-linux-arm-musleabihf@4.32.0": 502 | version "4.32.0" 503 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.32.0.tgz#a77838b9779931ce4fa01326b585eee130f51e60" 504 | integrity sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ== 505 | 506 | "@rollup/rollup-linux-arm64-gnu@4.32.0": 507 | version "4.32.0" 508 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.32.0.tgz#ec1b1901b82d57a20184adb61c725dd8991a0bf0" 509 | integrity sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w== 510 | 511 | "@rollup/rollup-linux-arm64-musl@4.32.0": 512 | version "4.32.0" 513 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.32.0.tgz#7aa23b45bf489b7204b5a542e857e134742141de" 514 | integrity sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw== 515 | 516 | "@rollup/rollup-linux-loongarch64-gnu@4.32.0": 517 | version "4.32.0" 518 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.32.0.tgz#7bf0ebd8c5ad08719c3b4786be561d67f95654a7" 519 | integrity sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw== 520 | 521 | "@rollup/rollup-linux-powerpc64le-gnu@4.32.0": 522 | version "4.32.0" 523 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.32.0.tgz#e687dfcaf08124aafaaebecef0cc3986675cb9b6" 524 | integrity sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ== 525 | 526 | "@rollup/rollup-linux-riscv64-gnu@4.32.0": 527 | version "4.32.0" 528 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.32.0.tgz#19fce2594f9ce73d1cb0748baf8cd90a7bedc237" 529 | integrity sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw== 530 | 531 | "@rollup/rollup-linux-s390x-gnu@4.32.0": 532 | version "4.32.0" 533 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.32.0.tgz#fd99b335bb65c59beb7d15ae82be0aafa9883c19" 534 | integrity sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw== 535 | 536 | "@rollup/rollup-linux-x64-gnu@4.32.0": 537 | version "4.32.0" 538 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.32.0.tgz#4e8c697bbaa2e2d7212bd42086746c8275721166" 539 | integrity sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A== 540 | 541 | "@rollup/rollup-linux-x64-musl@4.32.0": 542 | version "4.32.0" 543 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.32.0.tgz#0d2f74bd9cfe0553f20f056760a95b293e849ab2" 544 | integrity sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg== 545 | 546 | "@rollup/rollup-win32-arm64-msvc@4.32.0": 547 | version "4.32.0" 548 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.32.0.tgz#6534a09fcdd43103645155cedb5bfa65fbf2c23f" 549 | integrity sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg== 550 | 551 | "@rollup/rollup-win32-ia32-msvc@4.32.0": 552 | version "4.32.0" 553 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.32.0.tgz#8222ccfecffd63a6b0ddbe417d8d959e4f2b11b3" 554 | integrity sha512-/TG7WfrCAjeRNDvI4+0AAMoHxea/USWhAzf9PVDFHbcqrQ7hMMKp4jZIy4VEjk72AAfN5k4TiSMRXRKf/0akSw== 555 | 556 | "@rollup/rollup-win32-x64-msvc@4.32.0": 557 | version "4.32.0" 558 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.32.0.tgz#1a40b4792c08094b6479c48c90fe7f4b10ec2f54" 559 | integrity sha512-5hqO5S3PTEO2E5VjCePxv40gIgyS2KvO7E7/vvC/NbIW4SIRamkMr1hqj+5Y67fbBWv/bQLB6KelBQmXlyCjWA== 560 | 561 | "@types/diff-match-patch@^1.0.36": 562 | version "1.0.36" 563 | resolved "https://registry.yarnpkg.com/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz#dcef10a69d357fe9d43ac4ff2eca6b85dbf466af" 564 | integrity sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg== 565 | 566 | "@types/estree@*", "@types/estree@1.0.6", "@types/estree@^1.0.0": 567 | version "1.0.6" 568 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" 569 | integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== 570 | 571 | "@types/node@^22.10.10": 572 | version "22.10.10" 573 | resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.10.tgz#85fe89f8bf459dc57dfef1689bd5b52ad1af07e6" 574 | integrity sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww== 575 | dependencies: 576 | undici-types "~6.20.0" 577 | 578 | "@types/resolve@1.20.2": 579 | version "1.20.2" 580 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.20.2.tgz#97d26e00cd4a0423b4af620abecf3e6f442b7975" 581 | integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== 582 | 583 | ai@^4.1.5: 584 | version "4.1.5" 585 | resolved "https://registry.yarnpkg.com/ai/-/ai-4.1.5.tgz#b9b51576ace60e8b22a21ef1b41089565c704cf7" 586 | integrity sha512-R8z9+0bTJtmtKazGNqqAJ5vyWchj7EQJls2eYwOUPbvBAY3V5uKmwkRPsKi3Npnbd/mbjl28N1xpKGTw7aE1nA== 587 | dependencies: 588 | "@ai-sdk/provider" "1.0.6" 589 | "@ai-sdk/provider-utils" "2.1.2" 590 | "@ai-sdk/react" "1.1.3" 591 | "@ai-sdk/ui-utils" "1.1.3" 592 | "@opentelemetry/api" "1.9.0" 593 | jsondiffpatch "0.6.0" 594 | 595 | astring@^1.8.5: 596 | version "1.9.0" 597 | resolved "https://registry.yarnpkg.com/astring/-/astring-1.9.0.tgz#cc73e6062a7eb03e7d19c22d8b0b3451fd9bfeef" 598 | integrity sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg== 599 | 600 | braces@^3.0.3: 601 | version "3.0.3" 602 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 603 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 604 | dependencies: 605 | fill-range "^7.1.1" 606 | 607 | chalk@^5.3.0: 608 | version "5.4.1" 609 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8" 610 | integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w== 611 | 612 | commondir@^1.0.1: 613 | version "1.0.1" 614 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 615 | integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== 616 | 617 | deepmerge@^4.2.2: 618 | version "4.3.1" 619 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" 620 | integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== 621 | 622 | dequal@^2.0.3: 623 | version "2.0.3" 624 | resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" 625 | integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== 626 | 627 | diff-match-patch@^1.0.5: 628 | version "1.0.5" 629 | resolved "https://registry.yarnpkg.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz#abb584d5f10cd1196dfc55aa03701592ae3f7b37" 630 | integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw== 631 | 632 | dotenv@^16.4.7: 633 | version "16.4.7" 634 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" 635 | integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== 636 | 637 | esbuild@^0.24.2: 638 | version "0.24.2" 639 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.2.tgz#b5b55bee7de017bff5fb8a4e3e44f2ebe2c3567d" 640 | integrity sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA== 641 | optionalDependencies: 642 | "@esbuild/aix-ppc64" "0.24.2" 643 | "@esbuild/android-arm" "0.24.2" 644 | "@esbuild/android-arm64" "0.24.2" 645 | "@esbuild/android-x64" "0.24.2" 646 | "@esbuild/darwin-arm64" "0.24.2" 647 | "@esbuild/darwin-x64" "0.24.2" 648 | "@esbuild/freebsd-arm64" "0.24.2" 649 | "@esbuild/freebsd-x64" "0.24.2" 650 | "@esbuild/linux-arm" "0.24.2" 651 | "@esbuild/linux-arm64" "0.24.2" 652 | "@esbuild/linux-ia32" "0.24.2" 653 | "@esbuild/linux-loong64" "0.24.2" 654 | "@esbuild/linux-mips64el" "0.24.2" 655 | "@esbuild/linux-ppc64" "0.24.2" 656 | "@esbuild/linux-riscv64" "0.24.2" 657 | "@esbuild/linux-s390x" "0.24.2" 658 | "@esbuild/linux-x64" "0.24.2" 659 | "@esbuild/netbsd-arm64" "0.24.2" 660 | "@esbuild/netbsd-x64" "0.24.2" 661 | "@esbuild/openbsd-arm64" "0.24.2" 662 | "@esbuild/openbsd-x64" "0.24.2" 663 | "@esbuild/sunos-x64" "0.24.2" 664 | "@esbuild/win32-arm64" "0.24.2" 665 | "@esbuild/win32-ia32" "0.24.2" 666 | "@esbuild/win32-x64" "0.24.2" 667 | 668 | esbuild@~0.23.0: 669 | version "0.23.1" 670 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8" 671 | integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg== 672 | optionalDependencies: 673 | "@esbuild/aix-ppc64" "0.23.1" 674 | "@esbuild/android-arm" "0.23.1" 675 | "@esbuild/android-arm64" "0.23.1" 676 | "@esbuild/android-x64" "0.23.1" 677 | "@esbuild/darwin-arm64" "0.23.1" 678 | "@esbuild/darwin-x64" "0.23.1" 679 | "@esbuild/freebsd-arm64" "0.23.1" 680 | "@esbuild/freebsd-x64" "0.23.1" 681 | "@esbuild/linux-arm" "0.23.1" 682 | "@esbuild/linux-arm64" "0.23.1" 683 | "@esbuild/linux-ia32" "0.23.1" 684 | "@esbuild/linux-loong64" "0.23.1" 685 | "@esbuild/linux-mips64el" "0.23.1" 686 | "@esbuild/linux-ppc64" "0.23.1" 687 | "@esbuild/linux-riscv64" "0.23.1" 688 | "@esbuild/linux-s390x" "0.23.1" 689 | "@esbuild/linux-x64" "0.23.1" 690 | "@esbuild/netbsd-x64" "0.23.1" 691 | "@esbuild/openbsd-arm64" "0.23.1" 692 | "@esbuild/openbsd-x64" "0.23.1" 693 | "@esbuild/sunos-x64" "0.23.1" 694 | "@esbuild/win32-arm64" "0.23.1" 695 | "@esbuild/win32-ia32" "0.23.1" 696 | "@esbuild/win32-x64" "0.23.1" 697 | 698 | estree-walker@^2.0.2: 699 | version "2.0.2" 700 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 701 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 702 | 703 | eventsource-parser@^3.0.0: 704 | version "3.0.0" 705 | resolved "https://registry.yarnpkg.com/eventsource-parser/-/eventsource-parser-3.0.0.tgz#9303e303ef807d279ee210a17ce80f16300d9f57" 706 | integrity sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA== 707 | 708 | fast-glob@^3.2.12: 709 | version "3.3.3" 710 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" 711 | integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== 712 | dependencies: 713 | "@nodelib/fs.stat" "^2.0.2" 714 | "@nodelib/fs.walk" "^1.2.3" 715 | glob-parent "^5.1.2" 716 | merge2 "^1.3.0" 717 | micromatch "^4.0.8" 718 | 719 | fastq@^1.6.0: 720 | version "1.18.0" 721 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.18.0.tgz#d631d7e25faffea81887fe5ea8c9010e1b36fee0" 722 | integrity sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw== 723 | dependencies: 724 | reusify "^1.0.4" 725 | 726 | fdir@^6.2.0: 727 | version "6.4.3" 728 | resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72" 729 | integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw== 730 | 731 | fill-range@^7.1.1: 732 | version "7.1.1" 733 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 734 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 735 | dependencies: 736 | to-regex-range "^5.0.1" 737 | 738 | fsevents@~2.3.2, fsevents@~2.3.3: 739 | version "2.3.3" 740 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 741 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 742 | 743 | function-bind@^1.1.2: 744 | version "1.1.2" 745 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 746 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 747 | 748 | get-tsconfig@^4.7.5: 749 | version "4.10.0" 750 | resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.0.tgz#403a682b373a823612475a4c2928c7326fc0f6bb" 751 | integrity sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A== 752 | dependencies: 753 | resolve-pkg-maps "^1.0.0" 754 | 755 | glob-parent@^5.1.2: 756 | version "5.1.2" 757 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 758 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 759 | dependencies: 760 | is-glob "^4.0.1" 761 | 762 | hasown@^2.0.2: 763 | version "2.0.2" 764 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" 765 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 766 | dependencies: 767 | function-bind "^1.1.2" 768 | 769 | is-core-module@^2.16.0: 770 | version "2.16.1" 771 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" 772 | integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== 773 | dependencies: 774 | hasown "^2.0.2" 775 | 776 | is-extglob@^2.1.1: 777 | version "2.1.1" 778 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 779 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 780 | 781 | is-glob@^4.0.1: 782 | version "4.0.3" 783 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 784 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 785 | dependencies: 786 | is-extglob "^2.1.1" 787 | 788 | is-module@^1.0.0: 789 | version "1.0.0" 790 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 791 | integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== 792 | 793 | is-number@^7.0.0: 794 | version "7.0.0" 795 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 796 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 797 | 798 | is-reference@1.2.1: 799 | version "1.2.1" 800 | resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" 801 | integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== 802 | dependencies: 803 | "@types/estree" "*" 804 | 805 | isomorphic-fetch@^3.0.0: 806 | version "3.0.0" 807 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" 808 | integrity sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA== 809 | dependencies: 810 | node-fetch "^2.6.1" 811 | whatwg-fetch "^3.4.1" 812 | 813 | jigsawstack@^0.0.23: 814 | version "0.0.23" 815 | resolved "https://registry.yarnpkg.com/jigsawstack/-/jigsawstack-0.0.23.tgz#c8949223f799771c0b2c37036e20a18c6128caf2" 816 | integrity sha512-Zm7WqsQvGxomNl7CmBMx8t2pbUvE6otmkmnLYXwTKB2qZRuQsKlX26HIjfaeEPh6XBDmxjaGK0Yp4s4MgMS3AA== 817 | dependencies: 818 | isomorphic-fetch "^3.0.0" 819 | 820 | json-schema@^0.4.0: 821 | version "0.4.0" 822 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" 823 | integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== 824 | 825 | jsondiffpatch@0.6.0: 826 | version "0.6.0" 827 | resolved "https://registry.yarnpkg.com/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz#daa6a25bedf0830974c81545568d5f671c82551f" 828 | integrity sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ== 829 | dependencies: 830 | "@types/diff-match-patch" "^1.0.36" 831 | chalk "^5.3.0" 832 | diff-match-patch "^1.0.5" 833 | 834 | magic-string@^0.30.17, magic-string@^0.30.3: 835 | version "0.30.17" 836 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" 837 | integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== 838 | dependencies: 839 | "@jridgewell/sourcemap-codec" "^1.5.0" 840 | 841 | merge2@^1.3.0: 842 | version "1.4.1" 843 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 844 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 845 | 846 | micromatch@^4.0.8: 847 | version "4.0.8" 848 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" 849 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== 850 | dependencies: 851 | braces "^3.0.3" 852 | picomatch "^2.3.1" 853 | 854 | nanoid@^3.3.8: 855 | version "3.3.8" 856 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" 857 | integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== 858 | 859 | node-fetch@^2.6.1: 860 | version "2.7.0" 861 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" 862 | integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== 863 | dependencies: 864 | whatwg-url "^5.0.0" 865 | 866 | path-parse@^1.0.7: 867 | version "1.0.7" 868 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 869 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 870 | 871 | picomatch@^2.3.1: 872 | version "2.3.1" 873 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 874 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 875 | 876 | picomatch@^4.0.2: 877 | version "4.0.2" 878 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" 879 | integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== 880 | 881 | pkgroll@^2.6.1: 882 | version "2.6.1" 883 | resolved "https://registry.yarnpkg.com/pkgroll/-/pkgroll-2.6.1.tgz#2d656407d7c0f916f13154cfdcbb7e92fbb573f8" 884 | integrity sha512-n9ll3LHCvFVsoXzxAFN/Z+kO4E1ByRW/6YdcreLGKj6b7qpRnZI14Xd7nSfhhWcrF67aAVoT/00wGG7VQsSu9Q== 885 | dependencies: 886 | "@rollup/plugin-alias" "^5.1.1" 887 | "@rollup/plugin-commonjs" "^28.0.2" 888 | "@rollup/plugin-dynamic-import-vars" "^2.1.5" 889 | "@rollup/plugin-inject" "^5.0.5" 890 | "@rollup/plugin-json" "^6.1.0" 891 | "@rollup/plugin-node-resolve" "^16.0.0" 892 | "@rollup/plugin-replace" "^6.0.2" 893 | "@rollup/pluginutils" "^5.1.4" 894 | esbuild "^0.24.2" 895 | magic-string "^0.30.17" 896 | rollup "^4.29.1" 897 | 898 | queue-microtask@^1.2.2: 899 | version "1.2.3" 900 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" 901 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== 902 | 903 | resolve-pkg-maps@^1.0.0: 904 | version "1.0.0" 905 | resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" 906 | integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== 907 | 908 | resolve@^1.22.1: 909 | version "1.22.10" 910 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" 911 | integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== 912 | dependencies: 913 | is-core-module "^2.16.0" 914 | path-parse "^1.0.7" 915 | supports-preserve-symlinks-flag "^1.0.0" 916 | 917 | reusify@^1.0.4: 918 | version "1.0.4" 919 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 920 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 921 | 922 | rollup@^4.29.1: 923 | version "4.32.0" 924 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.32.0.tgz#c405bf6fca494d1999d9088f7736d7f03e5cac5a" 925 | integrity sha512-JmrhfQR31Q4AuNBjjAX4s+a/Pu/Q8Q9iwjWBsjRH1q52SPFE2NqRMK6fUZKKnvKO6id+h7JIRf0oYsph53eATg== 926 | dependencies: 927 | "@types/estree" "1.0.6" 928 | optionalDependencies: 929 | "@rollup/rollup-android-arm-eabi" "4.32.0" 930 | "@rollup/rollup-android-arm64" "4.32.0" 931 | "@rollup/rollup-darwin-arm64" "4.32.0" 932 | "@rollup/rollup-darwin-x64" "4.32.0" 933 | "@rollup/rollup-freebsd-arm64" "4.32.0" 934 | "@rollup/rollup-freebsd-x64" "4.32.0" 935 | "@rollup/rollup-linux-arm-gnueabihf" "4.32.0" 936 | "@rollup/rollup-linux-arm-musleabihf" "4.32.0" 937 | "@rollup/rollup-linux-arm64-gnu" "4.32.0" 938 | "@rollup/rollup-linux-arm64-musl" "4.32.0" 939 | "@rollup/rollup-linux-loongarch64-gnu" "4.32.0" 940 | "@rollup/rollup-linux-powerpc64le-gnu" "4.32.0" 941 | "@rollup/rollup-linux-riscv64-gnu" "4.32.0" 942 | "@rollup/rollup-linux-s390x-gnu" "4.32.0" 943 | "@rollup/rollup-linux-x64-gnu" "4.32.0" 944 | "@rollup/rollup-linux-x64-musl" "4.32.0" 945 | "@rollup/rollup-win32-arm64-msvc" "4.32.0" 946 | "@rollup/rollup-win32-ia32-msvc" "4.32.0" 947 | "@rollup/rollup-win32-x64-msvc" "4.32.0" 948 | fsevents "~2.3.2" 949 | 950 | run-parallel@^1.1.9: 951 | version "1.2.0" 952 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 953 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 954 | dependencies: 955 | queue-microtask "^1.2.2" 956 | 957 | secure-json-parse@^2.7.0: 958 | version "2.7.0" 959 | resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" 960 | integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== 961 | 962 | supports-preserve-symlinks-flag@^1.0.0: 963 | version "1.0.0" 964 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 965 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 966 | 967 | swr@^2.2.5: 968 | version "2.3.0" 969 | resolved "https://registry.yarnpkg.com/swr/-/swr-2.3.0.tgz#66fa45023efd4199f4e7ce608c255709a135943d" 970 | integrity sha512-NyZ76wA4yElZWBHzSgEJc28a0u6QZvhb6w0azeL2k7+Q1gAzVK+IqQYXhVOC/mzi+HZIozrZvBVeSeOZNR2bqA== 971 | dependencies: 972 | dequal "^2.0.3" 973 | use-sync-external-store "^1.4.0" 974 | 975 | throttleit@2.1.0: 976 | version "2.1.0" 977 | resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-2.1.0.tgz#a7e4aa0bf4845a5bd10daa39ea0c783f631a07b4" 978 | integrity sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw== 979 | 980 | to-regex-range@^5.0.1: 981 | version "5.0.1" 982 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 983 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 984 | dependencies: 985 | is-number "^7.0.0" 986 | 987 | tr46@~0.0.3: 988 | version "0.0.3" 989 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 990 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 991 | 992 | tsx@^4.19.2: 993 | version "4.19.2" 994 | resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.2.tgz#2d7814783440e0ae42354d0417d9c2989a2ae92c" 995 | integrity sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g== 996 | dependencies: 997 | esbuild "~0.23.0" 998 | get-tsconfig "^4.7.5" 999 | optionalDependencies: 1000 | fsevents "~2.3.3" 1001 | 1002 | typescript@^5.7.3: 1003 | version "5.7.3" 1004 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.3.tgz#919b44a7dbb8583a9b856d162be24a54bf80073e" 1005 | integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw== 1006 | 1007 | undici-types@~6.20.0: 1008 | version "6.20.0" 1009 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" 1010 | integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== 1011 | 1012 | use-sync-external-store@^1.4.0: 1013 | version "1.4.0" 1014 | resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz#adbc795d8eeb47029963016cefdf89dc799fcebc" 1015 | integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw== 1016 | 1017 | webidl-conversions@^3.0.0: 1018 | version "3.0.1" 1019 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1020 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 1021 | 1022 | whatwg-fetch@^3.4.1: 1023 | version "3.6.20" 1024 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" 1025 | integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== 1026 | 1027 | whatwg-url@^5.0.0: 1028 | version "5.0.0" 1029 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1030 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 1031 | dependencies: 1032 | tr46 "~0.0.3" 1033 | webidl-conversions "^3.0.0" 1034 | 1035 | zod-to-json-schema@^3.24.1: 1036 | version "3.24.1" 1037 | resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz#f08c6725091aadabffa820ba8d50c7ab527f227a" 1038 | integrity sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w== 1039 | 1040 | zod@^3.24.1: 1041 | version "3.24.1" 1042 | resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.1.tgz#27445c912738c8ad1e9de1bea0359fa44d9d35ee" 1043 | integrity sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A== 1044 | --------------------------------------------------------------------------------