diff --git a/app/(auth)/change-password/actions.ts b/app/(auth)/change-password/actions.ts index 6e06f2c1..f586f03a 100644 --- a/app/(auth)/change-password/actions.ts +++ b/app/(auth)/change-password/actions.ts @@ -1,7 +1,7 @@ "use server"; import { redirect } from "next/navigation"; -import { z, ZodError } from "zod"; +import { z, ZodError } from "zod/v3"; import auth from "@/auth"; import { getSignInPath } from "@/lib/paths"; diff --git a/app/(auth)/reset/actions.ts b/app/(auth)/reset/actions.ts index 85548a15..a55388a6 100644 --- a/app/(auth)/reset/actions.ts +++ b/app/(auth)/reset/actions.ts @@ -1,6 +1,6 @@ "use server"; -import { z, ZodError } from "zod"; +import { z, ZodError } from "zod/v3"; import auth from "@/auth"; import { getChangePasswordPath } from "@/lib/paths"; diff --git a/app/(auth)/sign-up/sign-up.tsx b/app/(auth)/sign-up/sign-up.tsx index 133e29af..7137dcac 100644 --- a/app/(auth)/sign-up/sign-up.tsx +++ b/app/(auth)/sign-up/sign-up.tsx @@ -3,7 +3,7 @@ import { useRouter } from "next/navigation"; import { useReducer } from "react"; import { toast } from "sonner"; -import { z } from "zod"; +import { z } from "zod/v3"; import { signUp } from "@/lib/auth-client"; import { getStartPath } from "@/lib/paths"; diff --git a/app/(auth)/utils.ts b/app/(auth)/utils.ts index dde771c5..d8b9d3a8 100644 --- a/app/(auth)/utils.ts +++ b/app/(auth)/utils.ts @@ -1,4 +1,4 @@ -import { z, ZodRawShape } from "zod"; +import { z, ZodRawShape } from "zod/v3"; const passwordSchema = z.object({ password: z.string().min(6, { message: "Password is required and must be at least 6 characters" }), diff --git a/app/(main)/o/[slug]/conversation-history.tsx b/app/(main)/o/[slug]/conversation-history.tsx index 342fa00a..8a7b0b48 100644 --- a/app/(main)/o/[slug]/conversation-history.tsx +++ b/app/(main)/o/[slug]/conversation-history.tsx @@ -5,7 +5,7 @@ import Link from "next/link"; import { useRouter } from "next/navigation"; import { useEffect, useRef, useState } from "react"; import { toast } from "sonner"; -import { z } from "zod"; +import { z } from "zod/v3"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; import { conversationSchema } from "@/lib/api"; diff --git a/app/(main)/o/[slug]/conversations/[id]/hooks/use-document-data.ts b/app/(main)/o/[slug]/conversations/[id]/hooks/use-document-data.ts index cd1d5873..d1a996d1 100644 --- a/app/(main)/o/[slug]/conversations/[id]/hooks/use-document-data.ts +++ b/app/(main)/o/[slug]/conversations/[id]/hooks/use-document-data.ts @@ -1,5 +1,5 @@ import { useEffect, useState } from "react"; -import { z } from "zod"; +import { z } from "zod/v3"; import { getRagieSourcePath } from "@/lib/paths"; diff --git a/app/(main)/o/[slug]/header.tsx b/app/(main)/o/[slug]/header.tsx index 478e9b7d..701340dd 100644 --- a/app/(main)/o/[slug]/header.tsx +++ b/app/(main)/o/[slug]/header.tsx @@ -5,7 +5,7 @@ import Link from "next/link"; import { useRouter } from "next/navigation"; import { ReactNode, useEffect, useState } from "react"; import { toast } from "sonner"; -import { z } from "zod"; +import { z } from "zod/v3"; import Logo from "@/components/tenant/logo/logo"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; diff --git a/app/(main)/o/[slug]/settings/general-settings.tsx b/app/(main)/o/[slug]/settings/general-settings.tsx index 80bd7fb4..2edccde4 100644 --- a/app/(main)/o/[slug]/settings/general-settings.tsx +++ b/app/(main)/o/[slug]/settings/general-settings.tsx @@ -277,7 +277,7 @@ export default function GeneralSettings({ tenant, canUploadLogo }: Props) { }, [tenant]); const form = useForm({ - resolver: zodResolver(formSchema), + resolver: zodResolver(formSchema) as any, defaultValues: formSchema.parse(formattedTenant), }); diff --git a/app/(main)/o/[slug]/settings/models/model-settings.tsx b/app/(main)/o/[slug]/settings/models/model-settings.tsx index 1a2b8548..29aa2055 100644 --- a/app/(main)/o/[slug]/settings/models/model-settings.tsx +++ b/app/(main)/o/[slug]/settings/models/model-settings.tsx @@ -495,7 +495,7 @@ export default function ModelSettings({ tenant }: Props) { }, [tenant]); const form = useForm({ - resolver: zodResolver(formSchema), + resolver: zodResolver(formSchema) as any, defaultValues: formSchema.parse(formattedTenant), }); diff --git a/app/(main)/o/[slug]/settings/prompts/prompt-settings.tsx b/app/(main)/o/[slug]/settings/prompts/prompt-settings.tsx index a453b629..3d3e1d19 100644 --- a/app/(main)/o/[slug]/settings/prompts/prompt-settings.tsx +++ b/app/(main)/o/[slug]/settings/prompts/prompt-settings.tsx @@ -113,7 +113,7 @@ export default function PromptSettings({ tenant }: Props) { }, [tenant]); const form = useForm({ - resolver: zodResolver(formSchema), + resolver: zodResolver(formSchema) as any, defaultValues: formSchema.parse(formattedTenant), }); diff --git a/app/(main)/o/[slug]/settings/users/user-settings.tsx b/app/(main)/o/[slug]/settings/users/user-settings.tsx index 7c6e8e4c..77b12749 100644 --- a/app/(main)/o/[slug]/settings/users/user-settings.tsx +++ b/app/(main)/o/[slug]/settings/users/user-settings.tsx @@ -8,7 +8,7 @@ import { redirect } from "next/navigation"; import { useCallback, useEffect, useRef, useState } from "react"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; -import { z } from "zod"; +import { z } from "zod/v3"; import { ManageSeatsDialog } from "@/components/billing/manage-seats-dialog"; import PrimaryButton from "@/components/primary-button"; diff --git a/app/(main)/o/[slug]/welcome.tsx b/app/(main)/o/[slug]/welcome.tsx index 7cae653b..7deb8f82 100644 --- a/app/(main)/o/[slug]/welcome.tsx +++ b/app/(main)/o/[slug]/welcome.tsx @@ -4,7 +4,7 @@ import { useQueryClient } from "@tanstack/react-query"; import { Inter } from "next/font/google"; import { useRouter } from "next/navigation"; import { useState, useEffect } from "react"; -import { z } from "zod"; +import { z } from "zod/v3"; import ChatInput from "@/components/chatbot/chat-input"; import Logo from "@/components/tenant/logo/logo"; diff --git a/app/api/conversations/[conversationId]/route.ts b/app/api/conversations/[conversationId]/route.ts index bb4c1429..885fe928 100644 --- a/app/api/conversations/[conversationId]/route.ts +++ b/app/api/conversations/[conversationId]/route.ts @@ -1,6 +1,6 @@ import { and, eq } from "drizzle-orm"; import { NextRequest, NextResponse } from "next/server"; -import { z } from "zod"; +import { z } from "zod/v3"; import db from "@/lib/server/db"; import { conversations } from "@/lib/server/db/schema"; diff --git a/app/api/conversations/route.ts b/app/api/conversations/route.ts index 573e0bc9..f6579622 100644 --- a/app/api/conversations/route.ts +++ b/app/api/conversations/route.ts @@ -4,7 +4,7 @@ import { openai } from "@ai-sdk/openai"; import { generateText } from "ai"; import { and, desc, eq, sql } from "drizzle-orm"; import { NextRequest } from "next/server"; -import { z } from "zod"; +import { z } from "zod/v3"; import { NAMING_SYSTEM_PROMPT } from "@/lib/constants"; import { DEFAULT_NAMING_MODEL } from "@/lib/llm/types"; @@ -12,7 +12,6 @@ import db from "@/lib/server/db"; import * as schema from "@/lib/server/db/schema"; import { requireAuthContextFromRequest } from "@/lib/server/utils"; - const createConversationRequest = z.object({ content: z.string(), }); diff --git a/app/api/invites/[id]/route.ts b/app/api/invites/[id]/route.ts index a82783d1..af49940f 100644 --- a/app/api/invites/[id]/route.ts +++ b/app/api/invites/[id]/route.ts @@ -1,5 +1,5 @@ import { NextRequest } from "next/server"; -import { z } from "zod"; +import { z } from "zod/v3"; import { deleteInviteById, updateInviteRoleById } from "@/lib/server/service"; import { requireAdminContextFromRequest } from "@/lib/server/utils"; diff --git a/app/api/invites/route.ts b/app/api/invites/route.ts index 3df3eea1..a288bd30 100644 --- a/app/api/invites/route.ts +++ b/app/api/invites/route.ts @@ -1,5 +1,5 @@ import { NextRequest } from "next/server"; -import { z } from "zod"; +import { z } from "zod/v3"; import { createInvites } from "@/lib/server/service"; import { requireAdminContextFromRequest } from "@/lib/server/utils"; diff --git a/app/api/profiles/[id]/route.ts b/app/api/profiles/[id]/route.ts index 372d0767..64940f7c 100644 --- a/app/api/profiles/[id]/route.ts +++ b/app/api/profiles/[id]/route.ts @@ -1,5 +1,5 @@ import { NextRequest } from "next/server"; -import { z } from "zod"; +import { z } from "zod/v3"; import { changeRole, deleteProfile, invalidateTenantCache, ServiceError } from "@/lib/server/service"; import { requireAdminContextFromRequest, requireAuthContextFromRequest } from "@/lib/server/utils"; diff --git a/app/api/ragie/callback/route.ts b/app/api/ragie/callback/route.ts index 0daea289..fe5cdab5 100644 --- a/app/api/ragie/callback/route.ts +++ b/app/api/ragie/callback/route.ts @@ -1,7 +1,7 @@ import assert from "assert"; import { NextRequest } from "next/server"; -import { z } from "zod"; +import { z } from "zod/v3"; import { getDataPath } from "@/lib/paths"; import { saveConnection } from "@/lib/server/service"; diff --git a/app/api/ragie/responses/route.ts b/app/api/ragie/responses/route.ts index 1df68379..d449c9ec 100644 --- a/app/api/ragie/responses/route.ts +++ b/app/api/ragie/responses/route.ts @@ -1,5 +1,5 @@ import { NextRequest } from "next/server"; -import { z } from "zod"; +import { z } from "zod/v3"; import { getRagieApiKeyAndPartition } from "@/lib/server/ragie"; import { RAGIE_API_BASE_URL } from "@/lib/server/settings"; @@ -7,7 +7,7 @@ import { requireAuthContext } from "@/lib/server/utils"; const reqBodySchema = z.object({ input: z.string(), - reasoning: z.object({ + reasoningText: z.object({ effort: z.enum(["low", "medium", "high"]), }), tenantSlug: z.string(), @@ -42,7 +42,7 @@ export async function POST(request: NextRequest) { partitions: [partition], }, ], - reasoning: params.reasoning, + reasoningText: params.reasoningText, stream: true, }), }); diff --git a/app/api/ragie/stream/route.ts b/app/api/ragie/stream/route.ts index c6365bb7..d910e25f 100644 --- a/app/api/ragie/stream/route.ts +++ b/app/api/ragie/stream/route.ts @@ -1,5 +1,5 @@ import { NextRequest } from "next/server"; -import { z } from "zod"; +import { z } from "zod/v3"; import { getRagieApiKeyAndPartition } from "@/lib/server/ragie"; import { RAGIE_API_BASE_URL } from "@/lib/server/settings"; diff --git a/app/api/setup/route.ts b/app/api/setup/route.ts index b2f9ddaa..cd8111ec 100644 --- a/app/api/setup/route.ts +++ b/app/api/setup/route.ts @@ -1,5 +1,5 @@ import { NextRequest } from "next/server"; -import { z } from "zod"; +import { z } from "zod/v3"; import { createTenant, setCurrentProfileId } from "@/lib/server/service"; import { requireSession } from "@/lib/server/utils"; diff --git a/app/api/slack/channels/join/route.ts b/app/api/slack/channels/join/route.ts index 2c2be773..b6ed5843 100644 --- a/app/api/slack/channels/join/route.ts +++ b/app/api/slack/channels/join/route.ts @@ -1,7 +1,7 @@ import { WebClient } from "@slack/web-api"; import { eq } from "drizzle-orm"; import { NextRequest, NextResponse } from "next/server"; -import { z } from "zod"; +import { z } from "zod/v3"; import db from "@/lib/server/db"; import * as schema from "@/lib/server/db/schema"; diff --git a/app/api/slack/oauth/route.ts b/app/api/slack/oauth/route.ts index 2cd8b489..f1bf6ee6 100644 --- a/app/api/slack/oauth/route.ts +++ b/app/api/slack/oauth/route.ts @@ -1,5 +1,5 @@ import { NextRequest } from "next/server"; -import { z } from "zod"; +import { z } from "zod/v3"; import { BASE_URL, SLACK_CLIENT_ID } from "@/lib/server/settings"; import { requireAdminContext } from "@/lib/server/utils"; diff --git a/app/api/slack/utils.ts b/app/api/slack/utils.ts index 607f7f2d..44f63df7 100644 --- a/app/api/slack/utils.ts +++ b/app/api/slack/utils.ts @@ -4,7 +4,7 @@ import { openai } from "@ai-sdk/openai"; import { WebClient } from "@slack/web-api"; import { generateObject } from "ai"; import Handlebars from "handlebars"; -import { z } from "zod"; +import { z } from "zod/v3"; import { ConversationMessageResponse, ReplyContext } from "@/lib/server/conversation-context"; import * as schema from "@/lib/server/db/schema"; diff --git a/app/api/tenants/check-slug/route.ts b/app/api/tenants/check-slug/route.ts index 47bdd0de..01670409 100644 --- a/app/api/tenants/check-slug/route.ts +++ b/app/api/tenants/check-slug/route.ts @@ -1,6 +1,6 @@ import { and, eq, not } from "drizzle-orm"; import { NextResponse } from "next/server"; -import { z } from "zod"; +import { z } from "zod/v3"; import db from "@/lib/server/db"; import { tenants } from "@/lib/server/db/schema"; diff --git a/app/setup/setup-form.tsx b/app/setup/setup-form.tsx index 7a5c5d2b..b0fbf419 100644 --- a/app/setup/setup-form.tsx +++ b/app/setup/setup-form.tsx @@ -4,7 +4,7 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { useForm } from "react-hook-form"; -import { z } from "zod"; +import { z } from "zod/v3"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; diff --git a/components/agentic-retriever/agentic-response.tsx b/components/agentic-retriever/agentic-response.tsx index ddcb11a5..f86ab32c 100644 --- a/components/agentic-retriever/agentic-response.tsx +++ b/components/agentic-retriever/agentic-response.tsx @@ -19,7 +19,7 @@ import { useEffect, useState } from "react"; import Markdown from "react-markdown"; import rehypeHighlight from "rehype-highlight"; import remarkGfm from "remark-gfm"; -import { z } from "zod"; +import { z } from "zod/v3"; import { SourceMetadata } from "@/lib/types"; diff --git a/components/agentic-retriever/agentic-retriever-context.tsx b/components/agentic-retriever/agentic-retriever-context.tsx index 55b61341..aebba5d2 100644 --- a/components/agentic-retriever/agentic-retriever-context.tsx +++ b/components/agentic-retriever/agentic-retriever-context.tsx @@ -1,7 +1,7 @@ "use client"; import React, { createContext, useContext, useCallback, useState, useMemo, ReactNode } from "react"; -import { z } from "zod"; +import { z } from "zod/v3"; import { finalAnswerSchema } from "./types"; import useAgenticRetriever, { AgenticRetriever } from "./use-agentic-retriever"; diff --git a/components/agentic-retriever/types.ts b/components/agentic-retriever/types.ts index f95b24d5..08d029f8 100644 --- a/components/agentic-retriever/types.ts +++ b/components/agentic-retriever/types.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod/v3"; const toolNames = z.enum(["plan", "search", "code", "answer", "transfer_to_citation", "surrender"]); diff --git a/components/agentic-retriever/use-agentic-retriever.tsx b/components/agentic-retriever/use-agentic-retriever.tsx index c1788b86..09bf80d9 100644 --- a/components/agentic-retriever/use-agentic-retriever.tsx +++ b/components/agentic-retriever/use-agentic-retriever.tsx @@ -1,7 +1,7 @@ import { EventSourceMessage, fetchEventSource } from "@microsoft/fetch-event-source"; import { parse, OBJ, ARR, STR } from "partial-json"; import { useCallback, useEffect, useMemo, useReducer, useRef } from "react"; -import { z } from "zod"; +import { z } from "zod/v3"; import { getRagieAgentsSearchPath } from "@/lib/paths"; @@ -443,7 +443,7 @@ export default function useAgenticRetriever({ method: "POST", body: JSON.stringify({ input: state.query, - reasoning: { + reasoningText: { effort: state.effort, }, tenantSlug, diff --git a/components/chatbot/index.tsx b/components/chatbot/index.tsx index f3efa9a0..fbda05ee 100644 --- a/components/chatbot/index.tsx +++ b/components/chatbot/index.tsx @@ -1,10 +1,10 @@ "use client"; -import assert from "assert"; +import * as assert from "assert"; -import { experimental_useObject as useObject } from "ai/react"; +import { experimental_useObject as useObject } from "@ai-sdk/react"; import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from "react"; -import { z } from "zod"; +import { z } from "zod/v3"; import { useSearchSettings } from "@/hooks/use-search-settings"; import { @@ -13,9 +13,11 @@ import { createConversationMessageResponseSchema, } from "@/lib/api"; import { getProviderForModel, LLMModel } from "@/lib/llm/types"; +import { getMessageText } from "@/lib/message-utils"; import { getBillingSettingsPath } from "@/lib/paths"; import { saveAgenticUserMessage, saveAgenticAssistantMessage } from "@/lib/server/agentic-actions"; import * as schema from "@/lib/server/db/schema"; +import { ExtendedUIMessage } from "@/lib/types/messages"; import { SourceMetadata } from "../../lib/types"; import AgenticResponse from "../agentic-retriever/agentic-response"; @@ -27,18 +29,6 @@ import { Run } from "../agentic-retriever/use-agentic-retriever"; import AssistantMessage from "./assistant-message"; import ChatInput from "./chat-input"; -type AiMessage = { - content: string; - role: "assistant"; - id?: string; - sources: SourceMetadata[]; - model?: LLMModel; - type?: "agentic" | "standard"; -}; -type UserMessage = { content: string; role: "user" }; -type SystemMessage = { content: string; role: "system" }; -type Message = AiMessage | UserMessage | SystemMessage; - const UserMessage = ({ content }: { content: string }) => (
{content}
); @@ -53,7 +43,7 @@ interface Props { export default function Chatbot({ tenant, conversationId, initMessage, onSelectedSource, onMessageConsumed }: Props) { const [localInitMessage, setLocalInitMessage] = useState(initMessage); - const [messages, setMessages] = useState([]); + const [messages, setMessages] = useState([]); const [agenticRunId, setAgenticRunId] = useState(null); const [sourceCache, setSourceCache] = useState>({}); const [pendingMessage, setPendingMessage] = useState(null); @@ -150,13 +140,13 @@ export default function Chatbot({ tenant, conversationId, initMessage, onSelecte setMessages((prev) => [ ...prev, { - content: payload.result.text, - role: "assistant", id: payload.runId, + role: "assistant", + parts: [{ type: "text", text: payload.result.text }], sources, model: "Deep Search", type: "agentic", - } as AiMessage, + } as ExtendedUIMessage, ]); // Prepare agentic info for database storage using payload data @@ -184,10 +174,10 @@ export default function Chatbot({ tenant, conversationId, initMessage, onSelecte ); const handleAgenticError = useCallback(async (payload: string) => { - const myMessage: AiMessage = { - content: `Agentic response failed: ${payload}`, - role: "assistant", + const myMessage: ExtendedUIMessage = { id: "123", // run won't be found by id, will show failed state + role: "assistant", + parts: [{ type: "text", text: `Agentic response failed: ${payload}` }], sources: [], model: "Deep Search", type: "agentic", @@ -219,9 +209,9 @@ export default function Chatbot({ tenant, conversationId, initMessage, onSelecte const id = res.headers.get("x-message-id"); const model = res.headers.get("x-model"); - assert(id); + assert.ok(id); - setPendingMessage({ id, model: model as LLMModel }); + setPendingMessage({ id: id!, model: model as LLMModel }); return res; }, onError: console.error, @@ -230,7 +220,16 @@ export default function Chatbot({ tenant, conversationId, initMessage, onSelecte const content = event.object.message; const model = pendingMessageRef.current?.model; - setMessages((prev) => [...prev, { content: content, role: "assistant", sources: [], model }]); + setMessages((prev) => [ + ...prev, + { + id: crypto.randomUUID(), + role: "assistant", + parts: [{ type: "text", text: content }], + sources: [], + model, + }, + ]); }, }); @@ -251,18 +250,32 @@ export default function Chatbot({ tenant, conversationId, initMessage, onSelecte if (retrievalMode !== "agentic") { console.log("Submitting message:", content, "with model:", model); - setMessages([...messages, { content, role: "user" }]); + setMessages([ + ...messages, + { + id: crypto.randomUUID(), + role: "user", + parts: [{ type: "text", text: content }], + }, + ]); submit(payload); } else { console.log("Submitting to agentic retrieval mode:", content); - setMessages((prev) => [...prev, { content, role: "user" } as UserMessage]); + setMessages((prev) => [ + ...prev, + { + id: crypto.randomUUID(), + role: "user", + parts: [{ type: "text", text: content }], + }, + ]); // HACK: Agentic currently does not have a construct for previous messages in a conversation, // so shoe-horn in previous messages const contextQuery = allMessages .map((message) => { const roleLabel = message.role === "user" ? "userMessage" : "assistantMessage"; - return `${roleLabel}: ${message.content}`; + return `${roleLabel}: ${getMessageText(message)}`; }) .join("\n"); @@ -317,9 +330,9 @@ export default function Chatbot({ tenant, conversationId, initMessage, onSelecte // Process all messages and extract agentic info for context const pastRuns: Record = {}; - const processedMessages: Message[] = []; + const processedMessages: ExtendedUIMessage[] = []; - messages.forEach((message) => { + messages.forEach((message: any) => { if ("type" in message && message.type === "agentic" && "agenticInfo" in message && message.agenticInfo) { const agenticInfo = message.agenticInfo; @@ -352,20 +365,34 @@ export default function Chatbot({ tenant, conversationId, initMessage, onSelecte // Add transformed agentic message processedMessages.push({ - content: message.content || "", - role: "assistant", id: agenticInfo.runId, + role: "assistant", + parts: [{ type: "text", text: message.content || "" }], sources, model: "Deep Search", type: "agentic", - } as AiMessage); + }); } else { - // Add user messages as-is - processedMessages.push(message); + // Convert user message to UIMessage format + processedMessages.push({ + id: (message as any).id, + role: (message as any).role, + parts: [{ type: "text", text: (message as any).content || "" }], + sources: (message as any).sources || [], + model: (message as any).model, + type: (message as any).type, + }); } } else { - // Add standard messages as-is - processedMessages.push(message); + // Convert standard message to UIMessage format + processedMessages.push({ + id: (message as any).id, + role: (message as any).role, + parts: [{ type: "text", text: (message as any).content || "" }], + sources: (message as any).sources || [], + model: (message as any).model, + type: (message as any).type, + }); } }); @@ -400,7 +427,7 @@ export default function Chatbot({ tenant, conversationId, initMessage, onSelecte
{allMessages.map((message, i) => message.role === "user" ? ( - + ) : ( {message.type === "agentic" && message.id ? ( @@ -409,9 +436,9 @@ export default function Chatbot({ tenant, conversationId, initMessage, onSelecte [number]; +type V5Part = MyUIMessage["parts"][number]; + +// Type definitions for V4 parts +type V4ToolInvocationPart = Extract; + +type V4ReasoningPart = Extract; + +type V4SourcePart = Extract; + +type V4FilePart = Extract; + +// Type guards +function isV4Message(msg: V4Message | MyUIMessage): msg is V4Message { + return ( + "toolInvocations" in msg || + (msg?.parts?.some((p) => p.type === "tool-invocation") ?? false) || + msg?.role === "data" || + ("reasoning" in msg && typeof msg.reasoning === "string") || + (msg?.parts?.some((p) => "args" in p || "result" in p) ?? false) || + (msg?.parts?.some((p) => "reasoning" in p && "details" in p) ?? false) || + (msg?.parts?.some((p) => p.type === "file" && "mimeType" in p && "data" in p) ?? false) + ); +} + +function isV4ToolInvocationPart(part: unknown): part is V4ToolInvocationPart { + return ( + typeof part === "object" && + part !== null && + "type" in part && + part.type === "tool-invocation" && + "toolInvocation" in part + ); +} + +function isV4ReasoningPart(part: unknown): part is V4ReasoningPart { + return ( + typeof part === "object" && part !== null && "type" in part && part.type === "reasoning" && "reasoning" in part + ); +} + +function isV4SourcePart(part: unknown): part is V4SourcePart { + return typeof part === "object" && part !== null && "type" in part && part.type === "source" && "source" in part; +} + +function isV4FilePart(part: unknown): part is V4FilePart { + return ( + typeof part === "object" && + part !== null && + "type" in part && + part.type === "file" && + "mimeType" in part && + "data" in part + ); +} + +// State mapping +const V4_TO_V5_STATE_MAP = { + "partial-call": "input-streaming", + call: "input-available", + result: "output-available", +} as const; + +function convertToolInvocationState( + v4State: ToolInvocation["state"], +): "input-streaming" | "input-available" | "output-available" { + return V4_TO_V5_STATE_MAP[v4State] ?? "output-available"; +} + +// Tool conversion +function convertV4ToolInvocationToV5ToolUIPart(toolInvocation: ToolInvocation): ToolUIPart { + return { + type: `tool-${toolInvocation.toolName}`, + toolCallId: toolInvocation.toolCallId, + input: "input" in toolInvocation ? toolInvocation.input : undefined, + output: toolInvocation.state === "result" && "output" in toolInvocation ? toolInvocation.output : undefined, + state: convertToolInvocationState(toolInvocation.state), + }; +} + +// Part converters +function convertV4ToolInvocationPart(part: V4ToolInvocationPart): V5Part { + return convertV4ToolInvocationToV5ToolUIPart(part.toolInvocation); +} + +function convertV4ReasoningPart(part: V4ReasoningPart): V5Part { + return { type: "reasoning", text: part.reasoning }; +} + +function convertV4SourcePart(part: V4SourcePart): V5Part { + return { + type: "source-url", + url: part.source.url, + sourceId: part.source.id, + title: part.source.title, + }; +} + +function convertV4FilePart(part: V4FilePart): V5Part { + return { + type: "file", + mediaType: part.mimeType, + url: part.data, + }; +} + +function convertPart(part: V4Part | V5Part): V5Part { + if (isV4ToolInvocationPart(part)) { + return convertV4ToolInvocationPart(part); + } + if (isV4ReasoningPart(part)) { + return convertV4ReasoningPart(part); + } + if (isV4SourcePart(part)) { + return convertV4SourcePart(part); + } + if (isV4FilePart(part)) { + return convertV4FilePart(part); + } + // Already V5 format + return part; +} + +// Message conversion +function createBaseMessage(msg: V4Message | MyUIMessage, index: number): Pick { + return { + id: msg.id || `msg-${index}`, + role: msg.role === "data" ? "assistant" : msg.role, + }; +} + +function convertDataMessage(msg: V4Message, index: number): MyUIMessage { + return { + ...createBaseMessage(msg, index), + parts: [ + { + type: "data-custom", + data: msg.data || msg.content, + }, + ], + }; +} + +function buildPartsFromTopLevelFields(msg: V4Message): MyUIMessage["parts"] { + const parts: MyUIMessage["parts"] = []; + + if (msg.reasoning) { + parts.push({ type: "reasoning", text: msg.reasoning }); + } + + if (msg.toolInvocations) { + parts.push(...msg.toolInvocations.map(convertV4ToolInvocationToV5ToolUIPart)); + } + + if (msg.content && typeof msg.content === "string") { + parts.push({ type: "text", text: msg.content }); + } + + return parts; +} + +function convertPartsArray(parts: V4Part[]): MyUIMessage["parts"] { + return parts.map(convertPart); +} + +export function convertV4MessageToV5(msg: V4Message | MyUIMessage, index: number): MyUIMessage { + if (!isV4Message(msg)) { + return msg as MyUIMessage; + } + + if (msg.role === "data") { + return convertDataMessage(msg, index); + } + + const base = createBaseMessage(msg, index); + const parts = msg.parts ? convertPartsArray(msg.parts) : buildPartsFromTopLevelFields(msg); + + return { ...base, parts }; +} + +// V5 to V4 conversion +function convertV5ToolUIPartToV4ToolInvocation(part: ToolUIPart): ToolInvocation { + const state = + part.state === "input-streaming" ? "partial-call" : part.state === "input-available" ? "call" : "result"; + + const toolName = part.type.startsWith("tool-") ? part.type.slice(5) : part.type; + + const base = { + toolCallId: part.toolCallId, + toolName, + input: part.input, + state, + }; + + if (state === "result" && part.output !== undefined) { + return { ...base, state: "result" as const, output: part.output }; + } + + return base as ToolInvocation; +} + +export function convertV5MessageToV4(msg: MyUIMessage): LegacyUIMessage { + const parts: V4Part[] = []; + + const base: LegacyUIMessage = { + id: msg.id, + role: msg.role, + content: "", + parts, + }; + + let textContent = ""; + let reasoning: string | undefined; + const toolInvocations: ToolInvocation[] = []; + + for (const part of msg.parts) { + if (part.type === "text") { + textContent = part.text; + parts.push({ type: "text", text: part.text }); + } else if (part.type === "reasoning") { + reasoning = part.text; + parts.push({ + type: "reasoning", + reasoning: part.text, + details: [{ type: "text", text: part.text }], + }); + } else if (part.type.startsWith("tool-")) { + const toolInvocation = convertV5ToolUIPartToV4ToolInvocation(part as ToolUIPart); + parts.push({ type: "tool-invocation", toolInvocation: toolInvocation }); + toolInvocations.push(toolInvocation); + } else if (part.type === "source-url") { + parts.push({ + type: "source", + source: { + id: part.sourceId, + url: part.url, + title: part.title || "", + sourceType: "url", + }, + }); + } else if (part.type === "file") { + parts.push({ + type: "file", + mimeType: part.mediaType, + data: part.url, + }); + } else if (part.type === "data-custom") { + base.data = part.data; + } + } + + if (textContent) { + base.content = textContent; + } + + if (reasoning) { + base.reasoning = reasoning; + } + + if (toolInvocations.length > 0) { + base.toolInvocations = toolInvocations; + } + + if (parts.length > 0) { + base.parts = parts; + } + return base; +} diff --git a/lib/llm/types.ts b/lib/llm/types.ts index a34411a1..8927ac39 100644 --- a/lib/llm/types.ts +++ b/lib/llm/types.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import { z } from "zod/v3"; const DEFAULT_TEMPERATURE = 0.3; diff --git a/lib/message-utils.ts b/lib/message-utils.ts new file mode 100644 index 00000000..d672fd21 --- /dev/null +++ b/lib/message-utils.ts @@ -0,0 +1,69 @@ +import { convertV4MessageToV5, convertV5MessageToV4 } from "./convert-messages"; +import { ExtendedUIMessage, MyUIMessage } from "./types/messages"; + +// Helper function to get text content from v5 UIMessage +export function getMessageText(message: MyUIMessage | ExtendedUIMessage): string { + if (!message.parts) return ""; + + for (const part of message.parts) { + if (part.type === "text") { + return part.text; + } + } + return ""; +} // Helper function to create a text message in v5 format +export function createTextMessage( + id: string, + role: "user" | "assistant", + text: string, + metadata?: Partial, +): ExtendedUIMessage { + return { + id, + role, + parts: [{ type: "text", text }], + ...metadata, + }; +} + +// Helper function to convert database message (with content field) to UIMessage using official conversion +export function dbMessageToUIMessage(dbMessage: any): ExtendedUIMessage { + // If it already has parts, it might be v4 format - use official converter + if (dbMessage.parts || dbMessage.toolInvocations || dbMessage.reasoning) { + const converted = convertV4MessageToV5(dbMessage, 0); + return { + ...converted, + sources: dbMessage.sources, + model: dbMessage.model, + type: dbMessage.type, + }; + } + + // Otherwise it's a simple content-only message, convert directly + return { + id: dbMessage.id, + role: dbMessage.role, + parts: [{ type: "text", text: dbMessage.content || "" }], + sources: dbMessage.sources, + model: dbMessage.model, + type: dbMessage.type, + }; +} + +// Helper function to convert UIMessage back to database format (with content field) using official conversion +export function uiMessageToDbMessage(uiMessage: ExtendedUIMessage) { + const v4Message = convertV5MessageToV4(uiMessage); + return { + id: v4Message.id, + role: v4Message.role, + content: v4Message.content, + parts: v4Message.parts, + sources: uiMessage.sources, + model: uiMessage.model, + type: uiMessage.type, + // Preserve any v4 fields that might exist + toolInvocations: v4Message.toolInvocations, + reasoning: v4Message.reasoning, + data: v4Message.data, + }; +} diff --git a/lib/orb-types.ts b/lib/orb-types.ts index baeb7182..28f43136 100644 --- a/lib/orb-types.ts +++ b/lib/orb-types.ts @@ -1,5 +1,5 @@ import Orb from "orb-billing"; -import { z } from "zod"; +import { z } from "zod/v3"; // used on the pricing page for in-app upgrades export const tierSchema = z.union([ diff --git a/lib/server/agentic-actions.ts b/lib/server/agentic-actions.ts index e9895420..f24b1ff4 100644 --- a/lib/server/agentic-actions.ts +++ b/lib/server/agentic-actions.ts @@ -2,7 +2,7 @@ import assert from "assert"; -import { z } from "zod"; +import { z } from "zod/v3"; import { finalAnswerSchema, stepResultSchema, evidenceSchema } from "@/components/agentic-retriever/types"; import db from "@/lib/server/db"; diff --git a/lib/server/conversation-context/conversation-context.ts b/lib/server/conversation-context/conversation-context.ts index 70cf69ed..cd91e4e1 100644 --- a/lib/server/conversation-context/conversation-context.ts +++ b/lib/server/conversation-context/conversation-context.ts @@ -1,5 +1,5 @@ import { AppMentionEvent, GenericMessageEvent } from "@slack/web-api"; -import { CoreMessage } from "ai"; +import { ModelMessage } from "ai"; import assertNever from "assert-never"; import * as schema from "@/lib/server/db/schema"; @@ -17,7 +17,7 @@ interface RetrieverSettings { export interface ReplyContext { conversationId: string; - messages: CoreMessage[]; + messages: ModelMessage[]; sources: any[]; } @@ -116,7 +116,7 @@ export default class ConversationContext { conversationId: this._conversation.id, }); - const messages: CoreMessage[] = all.map(({ role, content }) => { + const messages: ModelMessage[] = all.map(({ role, content }) => { switch (role) { case "assistant": return { role: "assistant" as const, content: content ?? "" }; diff --git a/lib/server/conversation-context/generator.ts b/lib/server/conversation-context/generator.ts index a209b4c0..3b175abb 100644 --- a/lib/server/conversation-context/generator.ts +++ b/lib/server/conversation-context/generator.ts @@ -3,7 +3,7 @@ import { google } from "@ai-sdk/google"; import { groq } from "@ai-sdk/groq"; import { openai } from "@ai-sdk/openai"; import { - CoreMessage, + ModelMessage, DeepPartial, generateObject, LanguageModel, @@ -12,7 +12,7 @@ import { StreamObjectResult, } from "ai"; import { assertNever } from "assert-never"; -import { z } from "zod"; +import { z } from "zod/v3"; import { createConversationMessageResponseSchema } from "@/lib/api"; import { DEFAULT_PROVIDER, getProviderForModel, getModelConfig } from "@/lib/llm/types"; @@ -23,7 +23,7 @@ type GenerateStreamOptions = { onFinish: StreamObjectOnFinishCallback; }; -function filterMessages(messages: CoreMessage[]) { +function filterMessages(messages: ModelMessage[]) { return messages.filter((msg) => { if (!msg.content) return false; if (typeof msg.content === "string" && msg.content.trim() === "") return false; @@ -32,7 +32,7 @@ function filterMessages(messages: CoreMessage[]) { } export interface GenerateContext { - messages: CoreMessage[]; + messages: ModelMessage[]; } export default interface Generator { diff --git a/lib/server/db/schema.ts b/lib/server/db/schema.ts index f3bc0f56..5e05e9b2 100644 --- a/lib/server/db/schema.ts +++ b/lib/server/db/schema.ts @@ -13,7 +13,7 @@ import { uuid, index, } from "drizzle-orm/pg-core"; -import { z } from "zod"; +import { z } from "zod/v3"; import { stepResultSchema, finalAnswerSchema } from "@/components/agentic-retriever/types"; import { DEFAULT_MODEL, modelSchema, modelArraySchema } from "@/lib/llm/types"; diff --git a/lib/server/utils.ts b/lib/server/utils.ts index f15320ef..464f9537 100644 --- a/lib/server/utils.ts +++ b/lib/server/utils.ts @@ -3,7 +3,7 @@ import assert from "assert"; import argon2 from "argon2"; import { headers } from "next/headers"; import { redirect, unauthorized } from "next/navigation"; -import { z } from "zod"; +import { z } from "zod/v3"; import auth from "@/auth"; diff --git a/lib/types/ai-sdk-v4-legacy.ts b/lib/types/ai-sdk-v4-legacy.ts new file mode 100644 index 00000000..6ebe3078 --- /dev/null +++ b/lib/types/ai-sdk-v4-legacy.ts @@ -0,0 +1,178 @@ +/** + * Legacy AI SDK v4 types for backward compatibility during migration. + * These types are extracted from ai-legacy@4.3.19 to avoid peer dependency conflicts. + */ + +// Re-export ToolCall and ToolResult from provider-utils (these are consistent across versions) +import type { ToolCall, ToolResult } from "@ai-sdk/provider-utils"; + +/** + * Legacy JSONValue type for v4 compatibility + */ +export type JSONValue = string | number | boolean | null | JSONValue[] | { [key: string]: JSONValue }; + +/** + * Tool invocation from AI SDK v4 + * Can be in different states: partial-call, call, or result + */ +export type ToolInvocation = + | ({ + state: "partial-call"; + step?: number; + } & ToolCall) + | ({ + state: "call"; + step?: number; + } & ToolCall) + | ({ + state: "result"; + step?: number; + } & ToolResult); + +/** + * An attachment that can be sent along with a message. + */ +export interface Attachment { + /** + * The name of the attachment, usually the file name. + */ + name?: string; + /** + * A string indicating the media type. + */ + contentType?: string; + /** + * The URL of the attachment. + */ + url: string; +} + +/** + * Base message interface from AI SDK v4 + */ +export interface Message { + /** + * A unique identifier for the message. + */ + id: string; + /** + * The timestamp of the message. + */ + createdAt?: Date; + /** + * Text content of the message. Use parts when possible. + */ + content: string; + /** + * Reasoning for the message. + * @deprecated Use `parts` instead. + */ + reasoning?: string; + /** + * Additional attachments to be sent along with the message. + */ + experimental_attachments?: Attachment[]; + /** + * The 'data' role is deprecated. + */ + role: "system" | "user" | "assistant" | "data"; + /** + * For data messages. + * @deprecated Data messages will be removed. + */ + data?: JSONValue; + /** + * Additional message-specific information added on the server via StreamData + */ + annotations?: JSONValue[] | undefined; + /** + * Tool invocations (that can be tool calls or tool results, depending on whether or not the invocation has finished) + * that the assistant made as part of this message. + * @deprecated Use `parts` instead. + */ + toolInvocations?: Array; + /** + * The parts of the message. Use this for rendering the message in the UI. + * + * Assistant messages can have text, reasoning and tool invocation parts. + * User messages can have text parts. + */ + parts?: Array; +} + +/** + * UI Message extends Message with required parts array + */ +export type UIMessage = Message & { + /** + * The parts of the message. Use this for rendering the message in the UI. + * + * Assistant messages can have text, reasoning and tool invocation parts. + * User messages can have text parts. + */ + parts: Array; +}; + +/** + * A text part of a message. + */ +export type TextUIPart = { + type: "text"; + /** + * The text content. + */ + text: string; +}; + +/** + * A reasoning part of a message. + */ +export type ReasoningUIPart = { + type: "reasoning"; + /** + * The reasoning text. + */ + reasoning: string; + /** + * The details of the reasoning step. Can contain text or tool invocation parts. + */ + details: Array; +}; + +/** + * A tool invocation part of a message. + */ +export type ToolInvocationUIPart = { + type: "tool-invocation"; + toolInvocation: ToolInvocation; +}; + +/** + * A source part of a message (for citations/references). + */ +export type SourceUIPart = { + type: "source"; + source: { + id: string; + url: string; + title: string; + sourceType: "url" | "file" | "knowledge"; + }; +}; + +/** + * A file part of a message. + */ +export type FileUIPart = { + type: "file"; + mimeType: string; + data: string; // Base64 encoded or URL +}; + +/** + * A step start part of a message. + */ +export type StepStartUIPart = { + type: "step-start"; + step: number; +}; diff --git a/lib/types/messages.ts b/lib/types/messages.ts new file mode 100644 index 00000000..1470f422 --- /dev/null +++ b/lib/types/messages.ts @@ -0,0 +1,11 @@ +import type { JSONValue, UIMessage, UITools } from "ai"; + +// Custom AI SDK v5 UIMessage type with metadata support +export type MyUIMessage = UIMessage; + +// Extended message type for this application with additional fields +export type ExtendedUIMessage = MyUIMessage & { + sources?: any[]; + model?: string; + type?: "agentic" | "standard"; +}; diff --git a/package-lock.json b/package-lock.json index 06a08c99..17b456dc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,14 +8,14 @@ "name": "chatbot-example", "version": "0.1.0", "dependencies": { - "@ai-sdk/anthropic": "^1.2.1", - "@ai-sdk/google": "^1.2.2", - "@ai-sdk/groq": "^1.2.7", - "@ai-sdk/openai": "^1.3.1", - "@ai-sdk/react": "^1.2.1", + "@ai-sdk/anthropic": "^2.0.29", + "@ai-sdk/google": "^2.0.23", + "@ai-sdk/groq": "^2.0.24", + "@ai-sdk/openai": "^2.0.52", + "@ai-sdk/react": "^2.0.71", "@eballoi/react-use-polling": "^1.1.0", "@google-cloud/tasks": "^4.0.1", - "@hookform/resolvers": "^3.9.1", + "@hookform/resolvers": "^5.2.2", "@microsoft/fetch-event-source": "^2.0.1", "@radix-ui/react-checkbox": "^1.1.4", "@radix-ui/react-dialog": "^1.1.6", @@ -31,10 +31,11 @@ "@radix-ui/react-tooltip": "^1.2.4", "@react-email/components": "^0.0.36", "@slack/web-api": "^7.9.2", - "@stripe/react-stripe-js": "^3.7.0", + "@stripe/react-stripe-js": "^5.2.0", + "@stripe/stripe-js": "^8.0.0", "@tanstack/react-query": "^5.74.7", "@types/pluralize": "^0.0.33", - "ai": "^4.2.2", + "ai": "^5.0.71", "argon2": "^0.41.1", "assert-never": "^1.3.0", "better-auth": "^1.3.7", @@ -60,7 +61,7 @@ "react-dom": "^19.0.0", "react-dropzone": "^14.3.8", "react-easy-crop": "^5.4.1", - "react-hook-form": "^7.54.0", + "react-hook-form": "^7.65.0", "react-markdown": "^9.1.0", "redis": "^5.8.3", "rehype-highlight": "^7.0.2", @@ -70,7 +71,7 @@ "stripe": "^16.12.0", "tailwind-merge": "^2.5.4", "tailwindcss-animate": "^1.0.7", - "zod": "^3.23.8" + "zod": "^4.1.12" }, "devDependencies": { "@eslint/compat": "^1.2.7", @@ -108,73 +109,90 @@ "license": "MIT" }, "node_modules/@ai-sdk/anthropic": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/@ai-sdk/anthropic/-/anthropic-1.2.9.tgz", - "integrity": "sha512-IsPKFt45rEhrAIeJisNr5hS1N6NPiVD/sBcS6wqJc2eKp32Q74SqDn6hmEgk4MlqxuWzpUCQ2kjsa75gAV3Hew==", + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@ai-sdk/anthropic/-/anthropic-2.0.29.tgz", + "integrity": "sha512-kDYYgbBoeTwB+wMuQRE7iFx8dA3jv4kCSB7XtQypP7/lt1P+G1LpeIMTRbwp4wMzaZTfThZBWDCkg/OltDo2VA==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "1.1.2", - "@ai-sdk/provider-utils": "2.2.6" + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.12" }, "engines": { "node": ">=18" }, "peerDependencies": { - "zod": "^3.0.0" + "zod": "^3.25.76 || ^4.1.8" + } + }, + "node_modules/@ai-sdk/gateway": { + "version": "1.0.40", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-1.0.40.tgz", + "integrity": "sha512-zlixM9jac0w0jjYl5gwNq+w9nydvraAmLaZQbbh+QpHU+OPkTIZmyBcKeTq5eGQKQxhi+oquHxzCSKyJx3egGw==", + "license": "Apache-2.0", + "dependencies": { + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.12", + "@vercel/oidc": "3.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "zod": "^3.25.76 || ^4.1.8" } }, "node_modules/@ai-sdk/google": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/@ai-sdk/google/-/google-1.2.10.tgz", - "integrity": "sha512-YmZ9DIO6Un0+RU9PtjM9TfoExmUQg2fk8vTlwT+NOaARyhv8eskRCUTne0zf5uUOazPIJuBEv2I6YE9XnS+tUg==", + "version": "2.0.23", + "resolved": "https://registry.npmjs.org/@ai-sdk/google/-/google-2.0.23.tgz", + "integrity": "sha512-VbCnKR+6aWUVLkAiSW5gUEtST7KueEmlt+d6qwDikxlLnFG9pzy59je8MiDVeM5G2tuSXbvZQF78PGIfXDBmow==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "1.1.2", - "@ai-sdk/provider-utils": "2.2.6" + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.12" }, "engines": { "node": ">=18" }, "peerDependencies": { - "zod": "^3.0.0" + "zod": "^3.25.76 || ^4.1.8" } }, "node_modules/@ai-sdk/groq": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@ai-sdk/groq/-/groq-1.2.7.tgz", - "integrity": "sha512-Ggb/qcSA+74T6nf3eEqF6SoqdnQrrACJsj7gj7GdkUIkAv9smcFvCIyBLo7rKWbqdBuzcgnQCI1Lo6+XuJKEGg==", + "version": "2.0.24", + "resolved": "https://registry.npmjs.org/@ai-sdk/groq/-/groq-2.0.24.tgz", + "integrity": "sha512-PCtNwFsakxR6B/o+l3gtxlPIwN8lawK3vvOjRdC759Y8WtNxCv5RUs0JsxIKyAZxO+RBEy0AoL8xTQUy8fn3gw==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "1.1.2", - "@ai-sdk/provider-utils": "2.2.6" + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.12" }, "engines": { "node": ">=18" }, "peerDependencies": { - "zod": "^3.0.0" + "zod": "^3.25.76 || ^4.1.8" } }, "node_modules/@ai-sdk/openai": { - "version": "1.3.10", - "resolved": "https://registry.npmjs.org/@ai-sdk/openai/-/openai-1.3.10.tgz", - "integrity": "sha512-XO0wF2lmAMWCYjkM5bLpWTKoXet61fBiIimTi+blqEGiLUjAvivt/1zZL1Lzhrv9+p19IC1rn9EWZI1dCelV8w==", + "version": "2.0.52", + "resolved": "https://registry.npmjs.org/@ai-sdk/openai/-/openai-2.0.52.tgz", + "integrity": "sha512-n1arAo4+63e6/FFE6z/1ZsZbiOl4cfsoZ3F4i2X7LPIEea786Y2yd7Qdr7AdB4HTLVo3OSb1PHVIcQmvYIhmEA==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "1.1.2", - "@ai-sdk/provider-utils": "2.2.6" + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.12" }, "engines": { "node": ">=18" }, "peerDependencies": { - "zod": "^3.0.0" + "zod": "^3.25.76 || ^4.1.8" } }, "node_modules/@ai-sdk/provider": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.2.tgz", - "integrity": "sha512-ITdgNilJZwLKR7X5TnUr1BsQW6UTX5yFp0h66Nfx8XjBYkWD9W3yugr50GOz3CnE9m/U/Cd5OyEbTMI0rgi6ZQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-2.0.0.tgz", + "integrity": "sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==", "license": "Apache-2.0", "dependencies": { "json-schema": "^0.4.0" @@ -184,30 +202,30 @@ } }, "node_modules/@ai-sdk/provider-utils": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.6.tgz", - "integrity": "sha512-sUlZ7Gnq84DCGWMQRIK8XVbkzIBnvPR1diV4v6JwPgpn5armnLI/j+rqn62MpLrU5ZCQZlDKl/Lw6ed3ulYqaA==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-3.0.12.tgz", + "integrity": "sha512-ZtbdvYxdMoria+2SlNarEk6Hlgyf+zzcznlD55EAl+7VZvJaSg2sqPvwArY7L6TfDEDJsnCq0fdhBSkYo0Xqdg==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "1.1.2", - "nanoid": "^3.3.8", - "secure-json-parse": "^2.7.0" + "@ai-sdk/provider": "2.0.0", + "@standard-schema/spec": "^1.0.0", + "eventsource-parser": "^3.0.5" }, "engines": { "node": ">=18" }, "peerDependencies": { - "zod": "^3.23.8" + "zod": "^3.25.76 || ^4.1.8" } }, "node_modules/@ai-sdk/react": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-1.2.12.tgz", - "integrity": "sha512-jK1IZZ22evPZoQW3vlkZ7wvjYGYF+tRBKXtrcolduIkQ/m/sOAVcVeVDUDvh1T91xCnWCdUGCPZg2avZ90mv3g==", + "version": "2.0.71", + "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-2.0.71.tgz", + "integrity": "sha512-JDftKkkO8UXCdKNDGBe2JzE6ylHMoxyyxHsszAi2NuQSCTDIaz35DuTuK15wDSDM2M65cWs9/tHWej3QFZ/uDw==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider-utils": "2.2.8", - "@ai-sdk/ui-utils": "1.2.11", + "@ai-sdk/provider-utils": "3.0.12", + "ai": "5.0.71", "swr": "^2.2.5", "throttleit": "2.1.0" }, @@ -216,7 +234,7 @@ }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", - "zod": "^3.23.8" + "zod": "^3.25.76 || ^4.1.8" }, "peerDependenciesMeta": { "zod": { @@ -224,81 +242,6 @@ } } }, - "node_modules/@ai-sdk/react/node_modules/@ai-sdk/provider": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz", - "integrity": "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==", - "license": "Apache-2.0", - "dependencies": { - "json-schema": "^0.4.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ai-sdk/react/node_modules/@ai-sdk/provider-utils": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz", - "integrity": "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider": "1.1.3", - "nanoid": "^3.3.8", - "secure-json-parse": "^2.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "zod": "^3.23.8" - } - }, - "node_modules/@ai-sdk/ui-utils": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@ai-sdk/ui-utils/-/ui-utils-1.2.11.tgz", - "integrity": "sha512-3zcwCc8ezzFlwp3ZD15wAPjf2Au4s3vAbKsXQVyhxODHcmu0iyPO2Eua6D/vicq/AUm/BAo60r97O6HU+EI0+w==", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider": "1.1.3", - "@ai-sdk/provider-utils": "2.2.8", - "zod-to-json-schema": "^3.24.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "zod": "^3.23.8" - } - }, - "node_modules/@ai-sdk/ui-utils/node_modules/@ai-sdk/provider": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz", - "integrity": "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==", - "license": "Apache-2.0", - "dependencies": { - "json-schema": "^0.4.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ai-sdk/ui-utils/node_modules/@ai-sdk/provider-utils": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz", - "integrity": "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider": "1.1.3", - "nanoid": "^3.3.8", - "secure-json-parse": "^2.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "zod": "^3.23.8" - } - }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -863,15 +806,6 @@ "zod": "^4.1.5" } }, - "node_modules/@better-auth/core/node_modules/zod": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", - "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/@better-auth/utils": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@better-auth/utils/-/utils-0.3.0.tgz", @@ -946,6 +880,39 @@ "node": ">=0.10.0" } }, + "node_modules/@emnapi/core": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz", + "integrity": "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", + "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@esbuild-kit/core-utils": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/@esbuild-kit/core-utils/-/core-utils-3.3.2.tgz", @@ -970,378 +937,1128 @@ "get-tsconfig": "^4.7.0" } }, - "node_modules/@esbuild/darwin-arm64": { + "node_modules/@esbuild/aix-ppc64": { "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", "cpu": [ - "arm64" + "ppc64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "darwin" + "aix" ], "engines": { "node": ">=18" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", - "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=18" } }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=18" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=18" } }, - "node_modules/@eslint/compat": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.8.tgz", - "integrity": "sha512-LqCYHdWL/QqKIJuZ/ucMAv8d4luKGs4oCPgpt8mWztQAtPrHfXKQ/XAUc8ljCHAfJCn6SvkpTcGt5Tsh8saowA==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^9.10.0" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@eslint/config-helpers": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", - "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@eslint/core": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", - "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=18" } }, - "node_modules/@eslint/js": { - "version": "9.34.0", + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.5.1.tgz", + "integrity": "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/compat": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.8.tgz", + "integrity": "sha512-LqCYHdWL/QqKIJuZ/ucMAv8d4luKGs4oCPgpt8mWztQAtPrHfXKQ/XAUc8ljCHAfJCn6SvkpTcGt5Tsh8saowA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^9.10.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz", + "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.2.tgz", + "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "9.34.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.34.0.tgz", "integrity": "sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==", "dev": true, "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", + "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.2", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "license": "MIT" + }, + "node_modules/@google-cloud/tasks": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@google-cloud/tasks/-/tasks-4.1.0.tgz", + "integrity": "sha512-9n6Aw0JZS/c6dqP1wmK9tmzwqayS/E62BM1rOtzDhwYeWhtAhFsdXjCDZZ9+H+kGOrpsLf+4NPIs5lu5mQvapg==", + "license": "Apache-2.0", + "dependencies": { + "google-gax": "^4.0.4" + }, + "engines": { + "node": ">=v14" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.4.tgz", + "integrity": "sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==", + "license": "Apache-2.0", + "dependencies": { + "@grpc/proto-loader": "^0.7.13", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", + "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@hexagon/base64": { + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz", + "integrity": "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==", + "license": "MIT" + }, + "node_modules/@hookform/resolvers": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz", + "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==", + "license": "MIT", + "dependencies": { + "@standard-schema/utils": "^0.3.0" + }, + "peerDependencies": { + "react-hook-form": "^7.55.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" }, "funding": { - "url": "https://eslint.org/donate" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@eslint/plugin-kit": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.5.tgz", - "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true, "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.15.2", - "levn": "^0.4.1" + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", + "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz", + "integrity": "sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.1.0" } }, - "node_modules/@floating-ui/core": { - "version": "1.6.9", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", - "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.9" + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", + "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", + "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", + "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", + "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", + "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", + "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@floating-ui/dom": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", - "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.9" + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", + "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", - "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", - "license": "MIT", - "dependencies": { - "@floating-ui/dom": "^1.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", + "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@floating-ui/utils": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", - "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", - "license": "MIT" - }, - "node_modules/@google-cloud/tasks": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@google-cloud/tasks/-/tasks-4.1.0.tgz", - "integrity": "sha512-9n6Aw0JZS/c6dqP1wmK9tmzwqayS/E62BM1rOtzDhwYeWhtAhFsdXjCDZZ9+H+kGOrpsLf+4NPIs5lu5mQvapg==", + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz", + "integrity": "sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==", + "cpu": [ + "arm" + ], "license": "Apache-2.0", - "dependencies": { - "google-gax": "^4.0.4" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=v14" - } - }, - "node_modules/@grpc/grpc-js": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.4.tgz", - "integrity": "sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==", - "license": "Apache-2.0", - "dependencies": { - "@grpc/proto-loader": "^0.7.13", - "@js-sdsl/ordered-map": "^4.4.2" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, - "engines": { - "node": ">=12.10.0" + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.1.0" } }, - "node_modules/@grpc/proto-loader": { - "version": "0.7.15", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", - "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz", + "integrity": "sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==", + "cpu": [ + "arm64" + ], "license": "Apache-2.0", - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.2.5", - "yargs": "^17.7.2" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + "funding": { + "url": "https://opencollective.com/libvips" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@hexagon/base64": { - "version": "1.1.28", - "resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz", - "integrity": "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==", - "license": "MIT" - }, - "node_modules/@hookform/resolvers": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.10.0.tgz", - "integrity": "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==", - "license": "MIT", - "peerDependencies": { - "react-hook-form": "^7.0.0" + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.1.0" } }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz", + "integrity": "sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==", + "cpu": [ + "s390x" + ], "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.18.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.1.0" } }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "dev": true, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz", + "integrity": "sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==", + "cpu": [ + "x64" + ], "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.18.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.1.0" } }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz", + "integrity": "sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==", + "cpu": [ + "arm64" + ], "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18.18" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz", + "integrity": "sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==", + "cpu": [ + "x64" + ], "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12.22" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.1.0" } }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", - "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@img/sharp-wasm32": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz", + "integrity": "sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.4.0" + }, "engines": { - "node": ">=18.18" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://opencollective.com/libvips" } }, - "node_modules/@img/sharp-darwin-arm64": { + "node_modules/@img/sharp-win32-ia32": { "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", - "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz", + "integrity": "sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==", "cpu": [ - "arm64" + "ia32" ], - "license": "Apache-2.0", + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.1.0" } }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", - "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz", + "integrity": "sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==", "cpu": [ - "arm64" + "x64" ], - "license": "LGPL-3.0-or-later", + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, "os": [ - "darwin" + "win32" ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, "funding": { "url": "https://opencollective.com/libvips" } @@ -1478,9 +2195,9 @@ } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { @@ -1949,6 +2666,19 @@ "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz", "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==" }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, "node_modules/@next/env": { "version": "15.3.0", "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.0.tgz", @@ -3991,26 +4721,37 @@ "npm": ">= 8.6.0" } }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT" + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, "node_modules/@stripe/react-stripe-js": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-3.7.0.tgz", - "integrity": "sha512-PYls/2S9l0FF+2n0wHaEJsEU8x7CmBagiH7zYOsxbBlLIHEsqUIQ4MlIAbV9Zg6xwT8jlYdlRIyBTHmO3yM7kQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@stripe/react-stripe-js/-/react-stripe-js-5.2.0.tgz", + "integrity": "sha512-m6CFXWjI5yikOcaP1L9xiabgkljdhu8vspoqF+BDD9mIjZIh1yEjeU0++oefqlXBd9U3QZj+C2ds4t3BDmICMg==", "license": "MIT", "dependencies": { "prop-types": "^15.7.2" }, "peerDependencies": { - "@stripe/stripe-js": ">=1.44.1 <8.0.0", + "@stripe/stripe-js": ">=8.0.0 <9.0.0", "react": ">=16.8.0 <20.0.0", "react-dom": ">=16.8.0 <20.0.0" } }, "node_modules/@stripe/stripe-js": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-7.3.1.tgz", - "integrity": "sha512-pTzb864TQWDRQBPLgSPFRoyjSDUqpCkbEgTzpsjiTjGz1Z5SxZNXJek28w1s6Dyry4CyW4/Izj5jHE/J9hCJYQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-8.0.0.tgz", + "integrity": "sha512-dLvD55KT1cBmrqzgYRgY42qNcw6zW4HS5oRZs0xRvHw9gBWig5yDnWNop/E+/t2JK+OZO30zsnupVBN2MqW2mg==", "license": "MIT", - "peer": true, "engines": { "node": ">=12.16" } @@ -4183,6 +4924,17 @@ "devOptional": true, "license": "MIT" }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/aria-query": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", @@ -4250,12 +5002,6 @@ "@types/ms": "*" } }, - "node_modules/@types/diff-match-patch": { - "version": "1.0.36", - "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz", - "integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==", - "license": "MIT" - }, "node_modules/@types/estree": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", @@ -4791,6 +5537,228 @@ "darwin" ] }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.5.0.tgz", + "integrity": "sha512-qpUrXgH4e/0xu1LOhPEdfgSY3vIXOxDQv370NEL8npN8h40HcQDA+Pl2r4HBW6tTXezWIjxUFcP7tj529RZtDw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.5.0.tgz", + "integrity": "sha512-3tX8r8vgjvZzaJZB4jvxUaaFCDCb3aWDCpZN3EjhGnnwhztslI05KSG5NY/jNjlcZ5QWZ7dEZZ/rNBFsmTaSPw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.5.0.tgz", + "integrity": "sha512-FH+ixzBKaUU9fWOj3TYO+Yn/eO6kYvMLV9eNJlJlkU7OgrxkCmiMS6wUbyT0KA3FOZGxnEQ2z3/BHgYm2jqeLA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.5.0.tgz", + "integrity": "sha512-pxCgXMgwB/4PfqFQg73lMhmWwcC0j5L+dNXhZoz/0ek0iS/oAWl65fxZeT/OnU7fVs52MgdP2q02EipqJJXHSg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.5.0.tgz", + "integrity": "sha512-FX2FV7vpLE/+Z0NZX9/1pwWud5Wocm/2PgpUXbT5aSV3QEB10kBPJAzssOQylvdj8mOHoKl5pVkXpbCwww/T2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.5.0.tgz", + "integrity": "sha512-+gF97xst1BZb28T3nwwzEtq2ewCoMDGKsenYsZuvpmNrW0019G1iUAunZN+FG55L21y+uP7zsGX06OXDQ/viKw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.5.0.tgz", + "integrity": "sha512-5bEmVcQw9js8JYM2LkUBw5SeELSIxX+qKf9bFrfFINKAp4noZ//hUxLpbF7u/3gTBN1GsER6xOzIZlw/VTdXtA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.5.0.tgz", + "integrity": "sha512-GGk/8TPUsf1Q99F+lzMdjE6sGL26uJCwQ9TlvBs8zR3cLQNw/MIumPN7zrs3GFGySjnwXc8gA6J3HKbejywmqA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.5.0.tgz", + "integrity": "sha512-5uRkFYYVNAeVaA4W/CwugjFN3iDOHCPqsBLCCOoJiMfFMMz4evBRsg+498OFa9w6VcTn2bD5aI+RRayaIgk2Sw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.5.0.tgz", + "integrity": "sha512-j905CZH3nehYy6NimNqC2B14pxn4Ltd7guKMyPTzKehbFXTUgihQS/ZfHQTdojkMzbSwBOSgq1dOrY+IpgxDsA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.5.0.tgz", + "integrity": "sha512-dmLevQTuzQRwu5A+mvj54R5aye5I4PVKiWqGxg8tTaYP2k2oTs/3Mo8mgnhPk28VoYCi0fdFYpgzCd4AJndQvQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.5.0.tgz", + "integrity": "sha512-LtJMhwu7avhoi+kKfAZOKN773RtzLBVVF90YJbB0wyMpUj9yQPeA+mteVUI9P70OG/opH47FeV5AWeaNWWgqJg==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.8" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.5.0.tgz", + "integrity": "sha512-FTZBxLL4SO1mgIM86KykzJmPeTPisBDHQV6xtfDXbTMrentuZ6SdQKJUV5BWaoUK3p8kIULlrCcucqdCnk8Npg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.5.0.tgz", + "integrity": "sha512-i5bB7vJ1waUsFciU/FKLd4Zw0VnAkvhiJ4//jYQXyDUuiLKodmtQZVTcOPU7pp97RrNgCFtXfC1gnvj/DHPJTw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.5.0.tgz", + "integrity": "sha512-wAvXp4k7jhioi4SebXW/yfzzYwsUCr9kIX4gCsUFKpCTUf8Mi7vScJXI3S+kupSUf0LbVHudR8qBbe2wFMSNUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vercel/oidc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-3.0.2.tgz", + "integrity": "sha512-JekxQ0RApo4gS4un/iMGsIL1/k4KUBe3HmnGcDvzHuFBdQdudEJgTqcsJC7y6Ul4Yw5CeykgvQbX2XeEJd0+DA==", + "license": "Apache-2.0", + "engines": { + "node": ">= 20" + } + }, "node_modules/@zxing/text-encoding": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", @@ -4890,58 +5858,21 @@ } }, "node_modules/ai": { - "version": "4.3.19", - "resolved": "https://registry.npmjs.org/ai/-/ai-4.3.19.tgz", - "integrity": "sha512-dIE2bfNpqHN3r6IINp9znguYdhIOheKW2LDigAMrgt/upT3B8eBGPSCblENvaZGoq+hxaN9fSMzjWpbqloP+7Q==", - "license": "Apache-2.0", - "dependencies": { - "@ai-sdk/provider": "1.1.3", - "@ai-sdk/provider-utils": "2.2.8", - "@ai-sdk/react": "1.2.12", - "@ai-sdk/ui-utils": "1.2.11", - "@opentelemetry/api": "1.9.0", - "jsondiffpatch": "0.6.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "zod": "^3.23.8" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - } - } - }, - "node_modules/ai/node_modules/@ai-sdk/provider": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.1.3.tgz", - "integrity": "sha512-qZMxYJ0qqX/RfnuIaab+zp8UAeJn/ygXXAffR5I4N0n1IrvA6qBsjc8hXLmBiMV2zoXlifkacF7sEFnYnjBcqg==", - "license": "Apache-2.0", - "dependencies": { - "json-schema": "^0.4.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/ai/node_modules/@ai-sdk/provider-utils": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.2.8.tgz", - "integrity": "sha512-fqhG+4sCVv8x7nFzYnFo19ryhAa3w096Kmc3hWxMQfW/TubPOmt3A6tYZhl4mUfQWWQMsuSkLrtjlWuXBVSGQA==", + "version": "5.0.71", + "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.71.tgz", + "integrity": "sha512-2c9/cXpF7O1K9xOgcoPCMC7Jj5GxVsPHTBhKcV6bqCVKm21P8AiN+rz9zIGopNMDhlEbQxqi8qSgrwCfsW+KMw==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "1.1.3", - "nanoid": "^3.3.8", - "secure-json-parse": "^2.7.0" + "@ai-sdk/gateway": "1.0.40", + "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider-utils": "3.0.12", + "@opentelemetry/api": "1.9.0" }, "engines": { "node": ">=18" }, "peerDependencies": { - "zod": "^3.23.8" + "zod": "^3.25.76 || ^4.1.8" } }, "node_modules/ajv": { @@ -5541,15 +6472,6 @@ } } }, - "node_modules/better-auth/node_modules/zod": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", - "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/better-call": { "version": "1.0.19", "resolved": "https://registry.npmjs.org/better-call/-/better-call-1.0.19.tgz", @@ -6457,12 +7379,6 @@ "node": ">=0.3.1" } }, - "node_modules/diff-match-patch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", - "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", - "license": "Apache-2.0" - }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -7563,6 +8479,15 @@ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -10309,9 +11234,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -10436,35 +11361,6 @@ "node": ">=6" } }, - "node_modules/jsondiffpatch": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz", - "integrity": "sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==", - "license": "MIT", - "dependencies": { - "@types/diff-match-patch": "^1.0.36", - "chalk": "^5.3.0", - "diff-match-patch": "^1.0.5" - }, - "bin": { - "jsondiffpatch": "bin/jsondiffpatch.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, - "node_modules/jsondiffpatch/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -13285,6 +14181,15 @@ } } }, + "node_modules/ragie/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/react": { "version": "19.1.0", "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", @@ -13338,9 +14243,9 @@ } }, "node_modules/react-hook-form": { - "version": "7.55.0", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.55.0.tgz", - "integrity": "sha512-XRnjsH3GVMQz1moZTW53MxfoWN7aDpUg/GpVNc4A3eXRVNdGXfbzJ4vM4aLQ8g6XCUh1nIbx70aaNCl7kxnjog==", + "version": "7.65.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.65.0.tgz", + "integrity": "sha512-xtOzDz063WcXvGWaHgLNrNzlsdFgtUWcb32E6WFaGTd7kPZG3EeDusjdZfUsPwKCKVXy1ZlntifaHZ4l8pAsmw==", "license": "MIT", "engines": { "node": ">=18.0.0" @@ -13925,12 +14830,6 @@ "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", "license": "MIT" }, - "node_modules/secure-json-parse": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", - "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", - "license": "BSD-3-Clause" - }, "node_modules/selderee": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz", @@ -14708,9 +15607,9 @@ } }, "node_modules/sucrase/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -16072,23 +16971,14 @@ } }, "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", + "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/zod-to-json-schema": { - "version": "3.24.6", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", - "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", - "license": "ISC", - "peerDependencies": { - "zod": "^3.24.1" - } - }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index 267b7039..55d667ed 100644 --- a/package.json +++ b/package.json @@ -19,14 +19,14 @@ "migrate-to-disabled-models": "node scripts/migrate-to-disabled-models.js" }, "dependencies": { - "@ai-sdk/anthropic": "^1.2.1", - "@ai-sdk/google": "^1.2.2", - "@ai-sdk/groq": "^1.2.7", - "@ai-sdk/openai": "^1.3.1", - "@ai-sdk/react": "^1.2.1", + "@ai-sdk/anthropic": "^2.0.29", + "@ai-sdk/google": "^2.0.23", + "@ai-sdk/groq": "^2.0.24", + "@ai-sdk/openai": "^2.0.52", + "@ai-sdk/react": "^2.0.71", "@eballoi/react-use-polling": "^1.1.0", "@google-cloud/tasks": "^4.0.1", - "@hookform/resolvers": "^3.9.1", + "@hookform/resolvers": "^5.2.2", "@microsoft/fetch-event-source": "^2.0.1", "@radix-ui/react-checkbox": "^1.1.4", "@radix-ui/react-dialog": "^1.1.6", @@ -42,10 +42,11 @@ "@radix-ui/react-tooltip": "^1.2.4", "@react-email/components": "^0.0.36", "@slack/web-api": "^7.9.2", - "@stripe/react-stripe-js": "^3.7.0", + "@stripe/react-stripe-js": "^5.2.0", + "@stripe/stripe-js": "^8.0.0", "@tanstack/react-query": "^5.74.7", "@types/pluralize": "^0.0.33", - "ai": "^4.2.2", + "ai": "^5.0.71", "argon2": "^0.41.1", "assert-never": "^1.3.0", "better-auth": "^1.3.7", @@ -71,7 +72,7 @@ "react-dom": "^19.0.0", "react-dropzone": "^14.3.8", "react-easy-crop": "^5.4.1", - "react-hook-form": "^7.54.0", + "react-hook-form": "^7.65.0", "react-markdown": "^9.1.0", "redis": "^5.8.3", "rehype-highlight": "^7.0.2", @@ -81,7 +82,7 @@ "stripe": "^16.12.0", "tailwind-merge": "^2.5.4", "tailwindcss-animate": "^1.0.7", - "zod": "^3.23.8" + "zod": "^4.1.12" }, "devDependencies": { "@eslint/compat": "^1.2.7",