diff --git a/app/api/chat/route.ts b/app/api/chat/route.ts index e414b47..bbd1e04 100644 --- a/app/api/chat/route.ts +++ b/app/api/chat/route.ts @@ -1,9 +1,7 @@ -import { ChatCompletionCreateParams } from "openai/resources/chat/completions"; -import { onToolCall, tools } from "@/app/api/chat/tools"; import { getOpenAI } from "@/app/api/openai"; -import { CreateMessage, OpenAIStream, StreamingTextResponse } from "ai"; +import { CoreMessage, streamText } from "ai"; import { getLocaleTime } from "@/lib/utils"; -import OpenAI from "openai"; +import { tools } from "@/app/api/chat/tools"; import { NextResponse } from "next/server"; export const runtime = "edge"; @@ -16,54 +14,26 @@ export async function POST(req: Request) { if (config.systemPrompt) { messages.unshift(systemPrompt()); } - const body: ChatCompletionCreateParams.ChatCompletionCreateParamsStreaming = { - stream: true, - model: config.model, - top_p: 1, - temperature: config.temperature, - tools: tools.filter((v) => config.plugins[v.function.name]?.enabled), - messages, - }; - body.tools!.length || delete body.tools; try { - const response = await getOpenAI(config.apiKey).chat.completions.create( - body, - ); - const stream = OpenAIStream(response, { - experimental_onToolCall: async ( - toolCallPayload, - appendToolCallMessage, - ) => { - for (const tool of toolCallPayload.tools) { - const { name, arguments: args } = tool.func; - args.config = config.plugins[name]; - const result = await onToolCall(name, args); - - appendToolCallMessage({ - tool_call_id: tool.id, - function_name: name, - tool_call_result: result, - }); - } - return getOpenAI(config.apiKey).chat.completions.create({ - ...body, - messages: [...messages, ...appendToolCallMessage()], - }); - }, + const result = await streamText({ + topP: 1, + temperature: config.temperature, + model: getOpenAI(config.apiKey).chat(config.model), + messages: messages, + maxSteps: 3, + tools: Object.fromEntries( + Object.entries(tools).filter(([key]) => config.plugins[key]?.enabled), + ), }); - return new StreamingTextResponse(stream); + return result.toDataStreamResponse(); } catch (err: any) { - if (err instanceof OpenAI.APIError) { - return new NextResponse(err.message, { status: err.status }); - } - return new NextResponse(err.message ?? err.toString(), { status: 500 }); } } -function systemPrompt(): CreateMessage { +function systemPrompt(): CoreMessage { return { role: "system", content: `You are an AI assistant, your duty is to provide accurate and rigorous answers. When encountering questions that cannot be handled, you need to clearly inform and guide the user to propose new questions. Please reply in Chinese. diff --git a/app/api/chat/tools.ts b/app/api/chat/tools.ts index 69bc90e..56e3b4f 100644 --- a/app/api/chat/tools.ts +++ b/app/api/chat/tools.ts @@ -1,63 +1,31 @@ -import { ChatCompletionTool } from "openai/resources/chat/completions"; +import { CoreTool, tool } from "ai"; +import { z } from "zod"; -interface ToolCall { - tool: ChatCompletionTool; - call: (name: string, args: Record) => Promise; -} - -const toolMap: Record = { - googleSearch: { - tool: { - type: "function", - function: { - name: "googleSearch", - description: "Search the web for information using Google", - parameters: { - type: "object", - properties: { - keyword: { - type: "string", - description: "Keywords for searching", - }, - }, - required: ["keyword"], - }, - }, - }, - call: async (name, args) => { +export const tools: Record = { + googleSearch: tool({ + description: "Search the web for information using Google", + parameters: z.object({ + keyword: z.string().describe("Keywords for searching"), + }), + execute: async ({ keyword }) => { + console.log(`- googleSearch: ${keyword}`); const nothing = "nothing"; - const cfg = args.config as any; - const apiKey = cfg.apiKey || process.env.GOOGLE_API_KEY; - const engineId = cfg.engineId || process.env.GOOGLE_ENGINE_ID; + const apiKey = process.env.GOOGLE_API_KEY; + const engineId = process.env.GOOGLE_ENGINE_ID; if (!apiKey || !engineId) { - console.log(`- ${name} apiKey or engineId is empty`); + console.log("- googleSearch apiKey or engineId is empty"); return nothing; } try { const res = await fetch( - `https://www.googleapis.com/customsearch/v1?&fields=items(title,link,snippet,pagemap/metatags(og:description))&key=${apiKey}&cx=${engineId}&q=${args.keyword}`, + `https://www.googleapis.com/customsearch/v1?&fields=items(title,link,snippet,pagemap/metatags(og:description))&key=${apiKey}&cx=${engineId}&q=${keyword}`, ); const result = await res.json(); return result.items ?? nothing; } catch (err: any) { - console.log(`- ${name} ${err.cause ?? err}`); + console.log(`- googleSearch: ${err.cause ?? err}`); return nothing; } }, - }, + }), }; - -export const tools: ChatCompletionTool[] = Object.values(toolMap).map( - (value) => value.tool, -); - -export async function onToolCall( - name: string, - args: Record, -): Promise { - console.log("- onToolCall", name, args); - if (!toolMap.hasOwnProperty(name)) { - return `${name} tool not found`; - } - return toolMap[name].call(name, args); -} diff --git a/app/api/image/route.ts b/app/api/image/route.ts deleted file mode 100644 index 241f732..0000000 --- a/app/api/image/route.ts +++ /dev/null @@ -1,40 +0,0 @@ -import OpenAI from "openai"; -import { NextResponse } from "next/server"; -import { getOpenAI } from "../openai"; - -export const runtime = "edge"; - -export async function POST(req: Request) { - let { config, apiKey, prompt, model } = await req.json(); - - try { - if (config.model === "stable-diffusion" && config.autoPrompt) { - const res = await getOpenAI(apiKey).chat.completions.create({ - model, - temperature: 0.6, - messages: [ - { role: "system", content: optimizePrompt }, - { role: "user", content: prompt }, - ], - }); - prompt = res.choices[0].message.content; - } - delete config.autoPrompt; - const response = await getOpenAI(apiKey).images.generate({ - ...config, - prompt: prompt, - size: "1024x1024", - n: 1, - }); - return new NextResponse(response.data[0].url); - } catch (err) { - if (err instanceof OpenAI.APIError) { - return new NextResponse(err.message, { status: err.status }); - } - return new NextResponse(String(err), { status: 500 }); - } -} - -const optimizePrompt = `The user will provide a description for image generation, please refine this content. Enhance details and employ precise vocabulary, considering image composition for richer, thereby aiding superior image generation. -1. Respond only in English. -2. Maintain brevity, ensuring content doesn't exceed 800 characters.`; diff --git a/app/api/openai.ts b/app/api/openai.ts index 3c9cc7f..370be40 100644 --- a/app/api/openai.ts +++ b/app/api/openai.ts @@ -1,12 +1,13 @@ -import OpenAI from "openai"; +import { createOpenAI, OpenAIProvider } from "@ai-sdk/openai"; +const baseURL = process.env.OPENAI_BASE_URL; const OPENAI_API_KEY = process.env.OPENAI_API_KEY ?? ""; -const clientPool: Map = new Map(); +const clientPool: Map = new Map(); -export function getOpenAI(apiKey: string): OpenAI { +export function getOpenAI(apiKey: string): OpenAIProvider { apiKey = apiKey || OPENAI_API_KEY; if (!clientPool.has(apiKey)) { - clientPool.set(apiKey, new OpenAI({ apiKey })); + clientPool.set(apiKey, createOpenAI({ apiKey, baseURL })); } return clientPool.get(apiKey)!; } diff --git a/package.json b/package.json index 65cd739..36a9a3f 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "lint": "next lint" }, "dependencies": { + "@ai-sdk/openai": "^1.0.4", "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-label": "^2.1.0", @@ -29,7 +30,6 @@ "mitt": "^3.0.1", "next": "^15.0.3", "next-themes": "^0.3.0", - "openai": "^4.73.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-markdown": "8.0.7", @@ -38,12 +38,13 @@ "remark-breaks": "3.0.3", "remark-gfm": "3.0.1", "sonner": "^1.7.0", - "tailwind-merge": "^2.5.4", + "tailwind-merge": "^2.5.5", + "zod": "^3.23.8", "zustand": "^5.0.1" }, "devDependencies": { "@tailwindcss/typography": "^0.5.15", - "@types/node": "^22.9.1", + "@types/node": "^22.9.3", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/react-syntax-highlighter": "^15.5.13", @@ -56,6 +57,6 @@ "prettier-plugin-tailwindcss": "^0.6.9", "tailwindcss": "^3.4.15", "tailwindcss-animate": "^1.0.7", - "typescript": "^5.6.3" + "typescript": "^5.7.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2f558c0..1aad59d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@ai-sdk/openai': + specifier: ^1.0.4 + version: 1.0.4(zod@3.23.8) '@radix-ui/react-dialog': specifier: ^1.1.2 version: 1.1.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -46,10 +49,10 @@ importers: version: 1.1.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@vercel/analytics': specifier: ^1.4.1 - version: 1.4.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.6.3)) + version: 1.4.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.7.2)) ai: specifier: ^3.4.33 - version: 3.4.33(openai@4.73.0(zod@3.23.8))(react@18.3.1)(solid-js@1.8.17)(sswr@2.1.0(svelte@4.2.18))(svelte@4.2.18)(vue@3.4.31(typescript@5.6.3))(zod@3.23.8) + version: 3.4.33(openai@4.73.0(zod@3.23.8))(react@18.3.1)(solid-js@1.8.17)(sswr@2.1.0(svelte@4.2.18))(svelte@4.2.18)(vue@3.4.31(typescript@5.7.2))(zod@3.23.8) class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -68,9 +71,6 @@ importers: next-themes: specifier: ^0.3.0 version: 0.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - openai: - specifier: ^4.73.0 - version: 4.73.0(zod@3.23.8) react: specifier: ^18.3.1 version: 18.3.1 @@ -96,8 +96,11 @@ importers: specifier: ^1.7.0 version: 1.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tailwind-merge: - specifier: ^2.5.4 - version: 2.5.4 + specifier: ^2.5.5 + version: 2.5.5 + zod: + specifier: ^3.23.8 + version: 3.23.8 zustand: specifier: ^5.0.1 version: 5.0.1(@types/react@18.3.12)(react@18.3.1)(use-sync-external-store@1.2.2(react@18.3.1)) @@ -106,8 +109,8 @@ importers: specifier: ^0.5.15 version: 0.5.15(tailwindcss@3.4.15) '@types/node': - specifier: ^22.9.1 - version: 22.9.1 + specifier: ^22.9.3 + version: 22.9.3 '@types/react': specifier: ^18.3.12 version: 18.3.12 @@ -125,7 +128,7 @@ importers: version: 9.13.0(jiti@1.21.6) eslint-config-next: specifier: ^15.0.3 - version: 15.0.3(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + version: 15.0.3(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2) eslint-config-prettier: specifier: ^9.1.0 version: 9.1.0(eslint@9.13.0(jiti@1.21.6)) @@ -145,11 +148,17 @@ importers: specifier: ^1.0.7 version: 1.0.7(tailwindcss@3.4.15) typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: ^5.7.2 + version: 5.7.2 packages: + '@ai-sdk/openai@1.0.4': + resolution: {integrity: sha512-3QpgKmkCeJvUdeu3sVRL/ZKWzg8biO0tN2owQW/lFV95o8qskE3bN95R9H136Mmu0124/C28aY6ScxO93nUrtg==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + '@ai-sdk/provider-utils@1.0.22': resolution: {integrity: sha512-YHK2rpj++wnLVc9vPGzGFP3Pjeld2MwhKinetA0zKXOoHAT/Jit5O8kZsxcSlJPu9wvcGT1UGZEjZrtO7PfFOQ==} engines: {node: '>=18'} @@ -159,10 +168,23 @@ packages: zod: optional: true + '@ai-sdk/provider-utils@2.0.2': + resolution: {integrity: sha512-IAvhKhdlXqiSmvx/D4uNlFYCl8dWT+M9K+IuEcSgnE2Aj27GWu8sDIpAf4r4Voc+wOUkOECVKQhFo8g9pozdjA==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.0.0 + peerDependenciesMeta: + zod: + optional: true + '@ai-sdk/provider@0.0.26': resolution: {integrity: sha512-dQkfBDs2lTYpKM8389oopPdQgIU007GQyCbuPPrV+K6MtSII3HBfE0stUIMXUb44L+LK1t6GXPP7wjSzjO6uKg==} engines: {node: '>=18'} + '@ai-sdk/provider@1.0.1': + resolution: {integrity: sha512-mV+3iNDkzUsZ0pR2jG0sVzU6xtQY5DtSCBy3JFycLp6PwjyLw/iodfL3MwdmMCRJWgs3dadcHejRnMvF9nGTBg==} + engines: {node: '>=18'} + '@ai-sdk/react@0.0.70': resolution: {integrity: sha512-GnwbtjW4/4z7MleLiW+TOZC2M29eCg1tOUpuEiYFMmFNZK8mkrqM0PFZMo6UsYeUYMWqEOOcPOU9OQVJMJh7IQ==} engines: {node: '>=18'} @@ -978,11 +1000,11 @@ packages: '@types/node-fetch@2.6.12': resolution: {integrity: sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==} - '@types/node@18.19.64': - resolution: {integrity: sha512-955mDqvO2vFf/oL7V3WiUtiz+BugyX8uVbaT2H8oj3+8dRyH2FLiNdowe7eNqRM7IOIZvzDH76EoAT+gwm6aIQ==} + '@types/node@18.19.65': + resolution: {integrity: sha512-Ay5BZuO1UkTmVHzZJNvZKw/E+iB3GQABb6kijEz89w2JrfhNA+M/ebp18pfz9Gqe9ywhMC8AA8yC01lZq48J+Q==} - '@types/node@22.9.1': - resolution: {integrity: sha512-p8Yy/8sw1caA8CdRIQBG5tiLHmxtQKObCijiAa9Ez+d4+PRffM4054xbju0msf+cvhJpnFEeNjxmVT/0ipktrg==} + '@types/node@22.9.3': + resolution: {integrity: sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==} '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} @@ -1293,8 +1315,8 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - caniuse-lite@1.0.30001683: - resolution: {integrity: sha512-iqmNnThZ0n70mNwvxpEC2nBJ037ZHZUoBI5Gorh1Mw6IlEAZujEoU1tXA628iZfzm7R9FvFzxbfdgml82a3k8Q==} + caniuse-lite@1.0.30001684: + resolution: {integrity: sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1664,6 +1686,10 @@ packages: resolution: {integrity: sha512-v0eOBUbiaFojBu2s2NPBfYUoRR9GjcDNvCXVaqEf5vVfpIAh9f8RCo4vXTP8c63QRKCFwoLpMpTdPwwhEKVgzA==} engines: {node: '>=14.18'} + eventsource-parser@3.0.0: + resolution: {integrity: sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==} + engines: {node: '>=18.0.0'} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -1917,8 +1943,9 @@ packages: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + is-finalizationregistry@1.1.0: + resolution: {integrity: sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==} + engines: {node: '>= 0.4'} is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -2652,8 +2679,8 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + reflect.getprototypeof@1.0.7: + resolution: {integrity: sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==} engines: {node: '>= 0.4'} refractor@3.6.0: @@ -2888,8 +2915,8 @@ packages: peerDependencies: vue: '>=3.2.26 < 4' - tailwind-merge@2.5.4: - resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==} + tailwind-merge@2.5.5: + resolution: {integrity: sha512-0LXunzzAZzo0tEPxV3I297ffKZPlKDrjj7NXphC8V5ak9yHC5zRmxnOe2m/Rd/7ivsOMJe3JZ2JVocoDdQTRBA==} tailwindcss-animate@1.0.7: resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} @@ -2932,8 +2959,8 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@1.4.0: - resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} + ts-api-utils@1.4.1: + resolution: {integrity: sha512-5RU2/lxTA3YUZxju61HO2U6EoZLvBLtmV2mbTvqyu4a/7s7RmJPT+1YekhMVsQhznRWk/czIwDUg+V8Q9ZuG4w==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' @@ -2959,16 +2986,16 @@ packages: resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + typed-array-byte-offset@1.0.3: + resolution: {integrity: sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==} engines: {node: '>= 0.4'} - typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} engines: {node: '>=14.17'} hasBin: true @@ -3094,8 +3121,8 @@ packages: which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - which-builtin-type@1.1.4: - resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} + which-builtin-type@1.2.0: + resolution: {integrity: sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==} engines: {node: '>= 0.4'} which-collection@1.0.2: @@ -3167,6 +3194,12 @@ packages: snapshots: + '@ai-sdk/openai@1.0.4(zod@3.23.8)': + dependencies: + '@ai-sdk/provider': 1.0.1 + '@ai-sdk/provider-utils': 2.0.2(zod@3.23.8) + zod: 3.23.8 + '@ai-sdk/provider-utils@1.0.22(zod@3.23.8)': dependencies: '@ai-sdk/provider': 0.0.26 @@ -3176,10 +3209,23 @@ snapshots: optionalDependencies: zod: 3.23.8 + '@ai-sdk/provider-utils@2.0.2(zod@3.23.8)': + dependencies: + '@ai-sdk/provider': 1.0.1 + eventsource-parser: 3.0.0 + nanoid: 3.3.7 + secure-json-parse: 2.7.0 + optionalDependencies: + zod: 3.23.8 + '@ai-sdk/provider@0.0.26': dependencies: json-schema: 0.4.0 + '@ai-sdk/provider@1.0.1': + dependencies: + json-schema: 0.4.0 + '@ai-sdk/react@0.0.70(react@18.3.1)(zod@3.23.8)': dependencies: '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) @@ -3219,13 +3265,13 @@ snapshots: optionalDependencies: zod: 3.23.8 - '@ai-sdk/vue@0.0.59(vue@3.4.31(typescript@5.6.3))(zod@3.23.8)': + '@ai-sdk/vue@0.0.59(vue@3.4.31(typescript@5.7.2))(zod@3.23.8)': dependencies: '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) - swrv: 1.0.4(vue@3.4.31(typescript@5.6.3)) + swrv: 1.0.4(vue@3.4.31(typescript@5.7.2)) optionalDependencies: - vue: 3.4.31(typescript@5.6.3) + vue: 3.4.31(typescript@5.7.2) transitivePeerDependencies: - zod @@ -3946,14 +3992,16 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.9.1 + '@types/node': 22.9.3 form-data: 4.0.1 + optional: true - '@types/node@18.19.64': + '@types/node@18.19.65': dependencies: undici-types: 5.26.5 + optional: true - '@types/node@22.9.1': + '@types/node@22.9.3': dependencies: undici-types: 6.19.8 @@ -3974,34 +4022,34 @@ snapshots: '@types/unist@2.0.11': {} - '@typescript-eslint/eslint-plugin@8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2))(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2) '@typescript-eslint/scope-manager': 8.15.0 - '@typescript-eslint/type-utils': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/utils': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/type-utils': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2) + '@typescript-eslint/utils': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.15.0 eslint: 9.13.0(jiti@1.21.6) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.0(typescript@5.6.3) + ts-api-utils: 1.4.1(typescript@5.7.2) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2)': dependencies: '@typescript-eslint/scope-manager': 8.15.0 '@typescript-eslint/types': 8.15.0 - '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.15.0 debug: 4.3.7 eslint: 9.13.0(jiti@1.21.6) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -4010,21 +4058,21 @@ snapshots: '@typescript-eslint/types': 8.15.0 '@typescript-eslint/visitor-keys': 8.15.0 - '@typescript-eslint/type-utils@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2) debug: 4.3.7 eslint: 9.13.0(jiti@1.21.6) - ts-api-utils: 1.4.0(typescript@5.6.3) + ts-api-utils: 1.4.1(typescript@5.7.2) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.15.0': {} - '@typescript-eslint/typescript-estree@8.15.0(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.15.0(typescript@5.7.2)': dependencies: '@typescript-eslint/types': 8.15.0 '@typescript-eslint/visitor-keys': 8.15.0 @@ -4033,21 +4081,21 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.4.0(typescript@5.6.3) + ts-api-utils: 1.4.1(typescript@5.7.2) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/utils@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0(jiti@1.21.6)) '@typescript-eslint/scope-manager': 8.15.0 '@typescript-eslint/types': 8.15.0 - '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.15.0(typescript@5.7.2) eslint: 9.13.0(jiti@1.21.6) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -4056,12 +4104,12 @@ snapshots: '@typescript-eslint/types': 8.15.0 eslint-visitor-keys: 4.2.0 - '@vercel/analytics@1.4.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.6.3))': + '@vercel/analytics@1.4.1(next@15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.18)(vue@3.4.31(typescript@5.7.2))': optionalDependencies: next: 15.0.3(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 svelte: 4.2.18 - vue: 3.4.31(typescript@5.6.3) + vue: 3.4.31(typescript@5.7.2) '@vue/compiler-core@3.4.31': dependencies: @@ -4109,17 +4157,18 @@ snapshots: '@vue/shared': 3.4.31 csstype: 3.1.3 - '@vue/server-renderer@3.4.31(vue@3.4.31(typescript@5.6.3))': + '@vue/server-renderer@3.4.31(vue@3.4.31(typescript@5.7.2))': dependencies: '@vue/compiler-ssr': 3.4.31 '@vue/shared': 3.4.31 - vue: 3.4.31(typescript@5.6.3) + vue: 3.4.31(typescript@5.7.2) '@vue/shared@3.4.31': {} abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 + optional: true acorn-jsx@5.3.2(acorn@8.14.0): dependencies: @@ -4130,8 +4179,9 @@ snapshots: agentkeepalive@4.5.0: dependencies: humanize-ms: 1.2.1 + optional: true - ai@3.4.33(openai@4.73.0(zod@3.23.8))(react@18.3.1)(solid-js@1.8.17)(sswr@2.1.0(svelte@4.2.18))(svelte@4.2.18)(vue@3.4.31(typescript@5.6.3))(zod@3.23.8): + ai@3.4.33(openai@4.73.0(zod@3.23.8))(react@18.3.1)(solid-js@1.8.17)(sswr@2.1.0(svelte@4.2.18))(svelte@4.2.18)(vue@3.4.31(typescript@5.7.2))(zod@3.23.8): dependencies: '@ai-sdk/provider': 0.0.26 '@ai-sdk/provider-utils': 1.0.22(zod@3.23.8) @@ -4139,7 +4189,7 @@ snapshots: '@ai-sdk/solid': 0.0.54(solid-js@1.8.17)(zod@3.23.8) '@ai-sdk/svelte': 0.0.57(svelte@4.2.18)(zod@3.23.8) '@ai-sdk/ui-utils': 0.0.50(zod@3.23.8) - '@ai-sdk/vue': 0.0.59(vue@3.4.31(typescript@5.6.3))(zod@3.23.8) + '@ai-sdk/vue': 0.0.59(vue@3.4.31(typescript@5.7.2))(zod@3.23.8) '@opentelemetry/api': 1.9.0 eventsource-parser: 1.1.2 json-schema: 0.4.0 @@ -4257,12 +4307,13 @@ snapshots: ast-types-flow@0.0.8: {} - asynckit@0.4.0: {} + asynckit@0.4.0: + optional: true autoprefixer@10.4.20(postcss@8.4.49): dependencies: browserslist: 4.24.2 - caniuse-lite: 1.0.30001683 + caniuse-lite: 1.0.30001684 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -4298,7 +4349,7 @@ snapshots: browserslist@4.24.2: dependencies: - caniuse-lite: 1.0.30001683 + caniuse-lite: 1.0.30001684 electron-to-chromium: 1.5.64 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) @@ -4319,7 +4370,7 @@ snapshots: camelcase-css@2.0.1: {} - caniuse-lite@1.0.30001683: {} + caniuse-lite@1.0.30001684: {} ccount@2.0.1: {} @@ -4389,6 +4440,7 @@ snapshots: combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 + optional: true comma-separated-tokens@1.0.8: {} @@ -4459,7 +4511,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - delayed-stream@1.0.0: {} + delayed-stream@1.0.0: + optional: true dequal@2.0.3: {} @@ -4539,8 +4592,8 @@ snapshots: string.prototype.trimstart: 1.0.8 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 + typed-array-byte-offset: 1.0.3 + typed-array-length: 1.0.7 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 @@ -4594,21 +4647,21 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@15.0.3(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3): + eslint-config-next@15.0.3(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2): dependencies: '@next/eslint-plugin-next': 15.0.3 '@rushstack/eslint-patch': 1.10.4 - '@typescript-eslint/eslint-plugin': 8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) - '@typescript-eslint/parser': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.15.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2))(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2) + '@typescript-eslint/parser': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2) eslint: 9.13.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.13.0(jiti@1.21.6)) eslint-plugin-react: 7.37.2(eslint@9.13.0(jiti@1.21.6)) eslint-plugin-react-hooks: 5.0.0(eslint@9.13.0(jiti@1.21.6)) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - eslint-import-resolver-webpack - eslint-plugin-import-x @@ -4626,37 +4679,37 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 enhanced-resolve: 5.17.1 eslint: 9.13.0(jiti@1.21.6) - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2) eslint: 9.13.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.13.0(jiti@1.21.6)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -4667,7 +4720,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.13.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.13.0(jiti@1.21.6)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -4679,7 +4732,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/parser': 8.15.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.7.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -4805,10 +4858,13 @@ snapshots: esutils@2.0.3: {} - event-target-shim@5.0.1: {} + event-target-shim@5.0.1: + optional: true eventsource-parser@1.1.2: {} + eventsource-parser@3.0.0: {} + extend@3.0.2: {} fast-deep-equal@3.1.3: {} @@ -4870,13 +4926,15 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data-encoder@1.7.2: {} + form-data-encoder@1.7.2: + optional: true form-data@4.0.1: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + optional: true format@0.2.2: {} @@ -4884,6 +4942,7 @@ snapshots: dependencies: node-domexception: 1.0.0 web-streams-polyfill: 4.0.0-beta.3 + optional: true fraction.js@4.3.7: {} @@ -4992,6 +5051,7 @@ snapshots: humanize-ms@1.2.1: dependencies: ms: 2.1.3 + optional: true ignore@5.3.2: {} @@ -5070,7 +5130,7 @@ snapshots: is-extglob@2.1.1: {} - is-finalizationregistry@1.0.2: + is-finalizationregistry@1.1.0: dependencies: call-bind: 1.0.7 @@ -5145,7 +5205,7 @@ snapshots: define-properties: 1.2.1 get-intrinsic: 1.2.4 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.6 + reflect.getprototypeof: 1.0.7 set-function-name: 2.0.2 jackspeak@3.4.3: @@ -5555,11 +5615,13 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} + mime-db@1.52.0: + optional: true mime-types@2.1.35: dependencies: mime-db: 1.52.0 + optional: true minimatch@3.1.2: dependencies: @@ -5600,7 +5662,7 @@ snapshots: '@swc/counter': 0.1.3 '@swc/helpers': 0.5.13 busboy: 1.6.0 - caniuse-lite: 1.0.30001683 + caniuse-lite: 1.0.30001684 postcss: 8.4.31 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5620,11 +5682,13 @@ snapshots: - '@babel/core' - babel-plugin-macros - node-domexception@1.0.0: {} + node-domexception@1.0.0: + optional: true node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 + optional: true node-releases@2.0.18: {} @@ -5674,7 +5738,7 @@ snapshots: openai@4.73.0(zod@3.23.8): dependencies: - '@types/node': 18.19.64 + '@types/node': 18.19.65 '@types/node-fetch': 2.6.12 abort-controller: 3.0.0 agentkeepalive: 4.5.0 @@ -5685,6 +5749,7 @@ snapshots: zod: 3.23.8 transitivePeerDependencies: - encoding + optional: true optionator@0.9.4: dependencies: @@ -5912,15 +5977,15 @@ snapshots: dependencies: picomatch: 2.3.1 - reflect.getprototypeof@1.0.6: + reflect.getprototypeof@1.0.7: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.5 es-errors: 1.3.0 get-intrinsic: 1.2.4 - globalthis: 1.0.4 - which-builtin-type: 1.1.4 + gopd: 1.0.1 + which-builtin-type: 1.2.0 refractor@3.6.0: dependencies: @@ -6231,11 +6296,11 @@ snapshots: swrev@4.0.0: {} - swrv@1.0.4(vue@3.4.31(typescript@5.6.3)): + swrv@1.0.4(vue@3.4.31(typescript@5.7.2)): dependencies: - vue: 3.4.31(typescript@5.6.3) + vue: 3.4.31(typescript@5.7.2) - tailwind-merge@2.5.4: {} + tailwind-merge@2.5.5: {} tailwindcss-animate@1.0.7(tailwindcss@3.4.15): dependencies: @@ -6286,15 +6351,16 @@ snapshots: dependencies: is-number: 7.0.0 - tr46@0.0.3: {} + tr46@0.0.3: + optional: true trim-lines@3.0.1: {} trough@2.2.0: {} - ts-api-utils@1.4.0(typescript@5.6.3): + ts-api-utils@1.4.1(typescript@5.7.2): dependencies: - typescript: 5.6.3 + typescript: 5.7.2 ts-interface-checker@0.1.13: {} @@ -6325,7 +6391,7 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 - typed-array-byte-offset@1.0.2: + typed-array-byte-offset@1.0.3: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -6333,17 +6399,18 @@ snapshots: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 + reflect.getprototypeof: 1.0.7 - typed-array-length@1.0.6: + typed-array-length@1.0.7: dependencies: call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 - has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 + reflect.getprototypeof: 1.0.7 - typescript@5.6.3: {} + typescript@5.7.2: {} unbox-primitive@1.0.2: dependencies: @@ -6352,7 +6419,8 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - undici-types@5.26.5: {} + undici-types@5.26.5: + optional: true undici-types@6.19.8: {} @@ -6458,24 +6526,27 @@ snapshots: unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - vue@3.4.31(typescript@5.6.3): + vue@3.4.31(typescript@5.7.2): dependencies: '@vue/compiler-dom': 3.4.31 '@vue/compiler-sfc': 3.4.31 '@vue/runtime-dom': 3.4.31 - '@vue/server-renderer': 3.4.31(vue@3.4.31(typescript@5.6.3)) + '@vue/server-renderer': 3.4.31(vue@3.4.31(typescript@5.7.2)) '@vue/shared': 3.4.31 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 - web-streams-polyfill@4.0.0-beta.3: {} + web-streams-polyfill@4.0.0-beta.3: + optional: true - webidl-conversions@3.0.1: {} + webidl-conversions@3.0.1: + optional: true whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + optional: true which-boxed-primitive@1.0.2: dependencies: @@ -6485,13 +6556,14 @@ snapshots: is-string: 1.0.7 is-symbol: 1.0.4 - which-builtin-type@1.1.4: + which-builtin-type@1.2.0: dependencies: + call-bind: 1.0.7 function.prototype.name: 1.1.6 has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 + is-finalizationregistry: 1.1.0 is-generator-function: 1.0.10 is-regex: 1.1.4 is-weakref: 1.0.2