diff --git a/backend/src/build-system/handlers/ux/sitemap-document/uxsmd.ts b/backend/src/build-system/handlers/ux/sitemap-document/uxsmd.ts index 956cdd10..7fdb1f49 100644 --- a/backend/src/build-system/handlers/ux/sitemap-document/uxsmd.ts +++ b/backend/src/build-system/handlers/ux/sitemap-document/uxsmd.ts @@ -34,6 +34,8 @@ // throw new MissingConfigurationError('Missing or invalid PRD content.'); // } +// Generate the prompt dynamically +// const prompt = prompts.generateUxsmdPrompt(projectName, platform); // // Generate the prompt dynamically // const prompt = prompts.generateUxsmdrompt( // projectName, diff --git a/backend/src/chat/chat.model.ts b/backend/src/chat/chat.model.ts index 4e1694d2..086dcdbf 100644 --- a/backend/src/chat/chat.model.ts +++ b/backend/src/chat/chat.model.ts @@ -24,9 +24,21 @@ export class Chat extends SystemBaseModel { @Column({ nullable: true }) title: string; - // 修改这里 @Field(() => [Message], { nullable: true }) - @Column('simple-json', { nullable: true, default: '[]' }) + @Column('simple-json', { + nullable: true, + default: '[]', + transformer: { + to: (messages: Message[]) => messages, + from: (value: any) => { + return value.map((message: any) => ({ + ...message, + createdAt: message.createdAt ? new Date(message.createdAt) : null, + updatedAt: message.updatedAt ? new Date(message.updatedAt) : null, + })); + }, + }, + }) messages: Message[]; @ManyToOne(() => User, (user) => user.chats) diff --git a/backend/src/chat/chat.resolver.ts b/backend/src/chat/chat.resolver.ts index 5d2883b6..ee6607df 100644 --- a/backend/src/chat/chat.resolver.ts +++ b/backend/src/chat/chat.resolver.ts @@ -81,8 +81,10 @@ export class ChatResolver { async getAvailableModelTags( @GetUserIdFromToken() userId: string, ): Promise { + this.logger.log('Fetching model tags for user:', userId); try { const response = await this.chatProxyService.fetchModelTags(); + this.logger.log('Loaded model tags:', response); return response; } catch (error) { throw new Error('Failed to fetch model tags'); @@ -92,6 +94,7 @@ export class ChatResolver { @Query(() => [Chat], { nullable: true }) async getUserChats(@GetUserIdFromToken() userId: string): Promise { const user = await this.userService.getUserChats(userId); + return user ? user.chats : []; } // To do: message need a update resolver diff --git a/backend/src/common/model-provider/openai-model-provider.ts b/backend/src/common/model-provider/openai-model-provider.ts index ac7b93b5..35db77ae 100644 --- a/backend/src/common/model-provider/openai-model-provider.ts +++ b/backend/src/common/model-provider/openai-model-provider.ts @@ -7,7 +7,7 @@ import OpenAI from 'openai'; import { Logger } from '@nestjs/common'; import { Stream } from 'openai/streaming'; import { ChatCompletionChunk as OpenAIChatCompletionChunk } from 'openai/resources/chat'; -import { ChatCompletionChunk } from 'src/chat/chat.model'; +import { ChatCompletionChunk, StreamStatus } from 'src/chat/chat.model'; import PQueue from 'p-queue-es5'; import { ConfigLoader, ModelConfig } from 'codefox-common'; export class OpenAIModelProvider implements IModelProvider { @@ -140,9 +140,13 @@ export class OpenAIModelProvider implements IModelProvider { try { const currentIterator = await createStream(); const chunk = await currentIterator.next(); + const chunkValue = chunk.value as OpenAIChatCompletionChunk; return { done: chunk.done, - value: chunk.value as ChatCompletionChunk, + value: { + ...chunkValue, + status: StreamStatus.STREAMING, + } as unknown as ChatCompletionChunk, }; } catch (error) { stream = null; diff --git a/backend/src/common/scalar/date.scalar.ts b/backend/src/common/scalar/date.scalar.ts index cf853c81..69d8023e 100644 --- a/backend/src/common/scalar/date.scalar.ts +++ b/backend/src/common/scalar/date.scalar.ts @@ -10,7 +10,7 @@ export class DateScalar implements CustomScalar { } serialize(value: Date): number { - return value.getTime(); // value sent to the client + return value.getTime(); } parseLiteral(ast: ValueNode): Date { diff --git a/backend/src/decorator/get-auth-token.decorator.ts b/backend/src/decorator/get-auth-token.decorator.ts index 16c7821f..9bd8547c 100644 --- a/backend/src/decorator/get-auth-token.decorator.ts +++ b/backend/src/decorator/get-auth-token.decorator.ts @@ -2,6 +2,7 @@ import { createParamDecorator, ExecutionContext, + Logger, UnauthorizedException, } from '@nestjs/common'; import { GqlExecutionContext } from '@nestjs/graphql'; @@ -27,6 +28,7 @@ export const GetUserIdFromToken = createParamDecorator( const authHeader = request.headers.authorization; if (!authHeader || !authHeader.startsWith('Bearer ')) { + Logger.error('Authorization token is missing or invalid'); throw new UnauthorizedException( 'Authorization token is missing or invalid', ); diff --git a/backend/src/system-base-model/system-base.model.ts b/backend/src/system-base-model/system-base.model.ts index 444997ab..373d8996 100644 --- a/backend/src/system-base-model/system-base.model.ts +++ b/backend/src/system-base-model/system-base.model.ts @@ -8,7 +8,7 @@ export class SystemBaseModel { createdAt: Date; @Field() - @UpdateDateColumn() + @UpdateDateColumn({ type: 'datetime' }) updatedAt: Date; @Field() diff --git a/frontend/src/app/(main)/[id]/page.tsx b/frontend/src/app/(main)/[id]/page.tsx deleted file mode 100644 index fe8eb3e8..00000000 --- a/frontend/src/app/(main)/[id]/page.tsx +++ /dev/null @@ -1,63 +0,0 @@ -'use client'; - -import { useEffect, useRef, useState } from 'react'; -import { useParams } from 'next/navigation'; -import { Message } from '@/components/types'; -import { useModels } from '@/app/hooks/useModels'; -import ChatContent from '@/components/chat/chat'; -import { useChatStream } from '../../hooks/useChatStream'; -import { useQuery } from '@apollo/client'; -import { GET_CHAT_HISTORY } from '@/graphql/request'; -import { toast } from 'sonner'; - -export default function ChatPage() { - const params = useParams(); - const chatId = params.id as string; - - // Core message states - const [messages, setMessages] = useState([]); - const [input, setInput] = useState(''); - const formRef = useRef(null); - - const { models } = useModels(); - const [selectedModel, setSelectedModel] = useState( - models[0] || 'gpt-4o' - ); - - useQuery(GET_CHAT_HISTORY, { - variables: { chatId: params.id }, - onCompleted: (data) => { - if (data?.getChatHistory) { - setMessages(data.getChatHistory); - } - }, - onError: (error) => { - toast.error('Failed to load chat history'); - }, - }); - - const { loadingSubmit, handleSubmit, handleInputChange, stop } = - useChatStream({ - chatId, - input, - setInput, - setMessages, - selectedModel, - }); - - return ( - - ); -} diff --git a/frontend/src/app/(main)/page.tsx b/frontend/src/app/(main)/page.tsx index ad5d7a2d..5ee87ebf 100644 --- a/frontend/src/app/(main)/page.tsx +++ b/frontend/src/app/(main)/page.tsx @@ -1,21 +1,64 @@ 'use client'; -import { useRef, useState } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { Message } from '@/components/types'; import { useModels } from '../hooks/useModels'; import ChatContent from '@/components/chat/chat'; import { useChatStream } from '../hooks/useChatStream'; +import { GET_CHAT_HISTORY } from '@/graphql/request'; +import { useQuery } from '@apollo/client'; +import { toast } from 'sonner'; +import { useChatList } from '../hooks/useChatList'; +import { EventEnum } from '@/components/enum'; export default function Home() { + const urlParams = new URLSearchParams(window.location.search); + const [chatId, setChatId] = useState(''); + // Core message states const [messages, setMessages] = useState([]); const [input, setInput] = useState(''); const formRef = useRef(null); - const { selectedModel, setSelectedModel } = useModels(); + const { models } = useModels(); + const [selectedModel, setSelectedModel] = useState( + models[0] || 'gpt-4o' + ); + + const { refetchChats } = useChatList(); + + useEffect(() => { + setChatId(urlParams.get('id') || ''); + refetchChats(); + console.log(`update ${urlParams.get('id')}`); + }, [urlParams]); + + useQuery(GET_CHAT_HISTORY, { + variables: { chatId }, + onCompleted: (data) => { + if (data?.getChatHistory) { + setMessages(data.getChatHistory); + } + }, + onError: (error) => { + toast.error('Failed to load chat history'); + }, + }); + + const updateChatId = () => { + setChatId(''); + }; + + useEffect(() => { + window.addEventListener(EventEnum.NEW_CHAT, updateChatId); + + return () => { + window.removeEventListener(EventEnum.NEW_CHAT, updateChatId); + }; + }, []); - const { loadingSubmit, handleSubmit, handleInputChange, stop, isStreaming } = + const { loadingSubmit, handleSubmit, handleInputChange, stop } = useChatStream({ - chatId: '', + chatId, input, setInput, setMessages, @@ -24,7 +67,7 @@ export default function Home() { return ( { const { refetch: checkToken } = useQuery<{ checkToken: boolean }>( CHECK_TOKEN_QUERY, { + variables: { + input: { + token: '', + }, + }, skip: true, } ); diff --git a/frontend/src/app/hooks/useChatStream.ts b/frontend/src/app/hooks/useChatStream.ts index 3ab63993..b7bd3f0a 100644 --- a/frontend/src/app/hooks/useChatStream.ts +++ b/frontend/src/app/hooks/useChatStream.ts @@ -3,7 +3,7 @@ import { useMutation, useSubscription } from '@apollo/client'; import { CHAT_STREAM, CREATE_CHAT, TRIGGER_CHAT } from '@/graphql/request'; import { Message } from '@/components/types'; import { toast } from 'sonner'; - +import { useRouter } from 'next/navigation'; enum StreamStatus { IDLE = 'IDLE', STREAMING = 'STREAMING', @@ -49,6 +49,12 @@ export function useChatStream({ variables: null, }); + const updateChatId = () => { + setCurrentChatId(''); + }; + + window.addEventListener('newchat', updateChatId); + const [triggerChat] = useMutation(TRIGGER_CHAT, { onCompleted: () => { setStreamStatus(StreamStatus.STREAMING); @@ -62,9 +68,10 @@ export function useChatStream({ const [createChat] = useMutation(CREATE_CHAT, { onCompleted: async (data) => { const newChatId = data.createChat.id; - window.history.replaceState({}, '', `/${newChatId}`); setCurrentChatId(newChatId); await startChatStream(newChatId, input); + window.history.pushState({}, '', `/?id=${newChatId}`); + console.log(`new chat: ${newChatId}`); }, onError: () => { toast.error('Failed to create chat'); @@ -120,6 +127,7 @@ export function useChatStream({ } }, onError: (error) => { + console.log(error); toast.error('Connection error. Please try again.'); setStreamStatus(StreamStatus.IDLE); finishChatResponse(); @@ -133,7 +141,9 @@ export function useChatStream({ message, model: selectedModel, }; + console.log(input); + setInput(''); setStreamStatus(StreamStatus.STREAMING); setSubscription({ enabled: true, @@ -153,7 +163,6 @@ export function useChatStream({ e.preventDefault(); const content = input; - setInput(''); if (!content.trim() || loadingSubmit) return; diff --git a/frontend/src/app/hooks/useModels.ts b/frontend/src/app/hooks/useModels.ts index 1ac03e9b..f10981ed 100644 --- a/frontend/src/app/hooks/useModels.ts +++ b/frontend/src/app/hooks/useModels.ts @@ -2,6 +2,7 @@ import { gql, useQuery } from '@apollo/client'; import { toast } from 'sonner'; import { useState, useEffect } from 'react'; import { LocalStore } from '@/lib/storage'; +import { GET_MODEL_TAGS } from '@/graphql/request'; interface ModelsCache { models: string[]; @@ -48,23 +49,18 @@ export const useModels = () => { const { data, loading, error } = useQuery<{ getAvailableModelTags: string[]; - }>( - gql` - query { - getAvailableModelTags + }>(GET_MODEL_TAGS, { + skip: !shouldUpdateCache(), + onCompleted: (data) => { + console.log(data); + if (data?.getAvailableModelTags) { + updateCache(data.getAvailableModelTags); } - `, - { - skip: !shouldUpdateCache(), - onCompleted: (data) => { - if (data?.getAvailableModelTags) { - updateCache(data.getAvailableModelTags); - } - }, - } - ); + }, + }); if (error) { + console.log(error); toast.error('Failed to load models'); } diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx deleted file mode 100644 index 969085ec..00000000 --- a/frontend/src/app/page.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function Home() { - return <>nihao ; -} diff --git a/frontend/src/app/providers/AuthProvider.tsx b/frontend/src/app/providers/AuthProvider.tsx index 60547973..80f566da 100644 --- a/frontend/src/app/providers/AuthProvider.tsx +++ b/frontend/src/app/providers/AuthProvider.tsx @@ -1,10 +1,8 @@ import { usePathname, useRouter } from 'next/navigation'; -import { useQuery } from '@apollo/client'; +import { useLazyQuery, useQuery } from '@apollo/client'; import { CHECK_TOKEN_QUERY } from '@/graphql/request'; import { LocalStore } from '@/lib/storage'; import { useEffect, useState, useRef } from 'react'; -import { useTheme } from 'next-themes'; -import { Loader2 } from 'lucide-react'; import { LoadingPage } from '@/components/global-loading'; const VALIDATION_TIMEOUT = 5000; @@ -22,9 +20,7 @@ export const AuthProvider = ({ children }: AuthProviderProps) => { const isRedirectingRef = useRef(false); const timeoutRef = useRef(); - const { refetch: checkToken } = useQuery(CHECK_TOKEN_QUERY, { - skip: true, - }); + const [checkToken] = useLazyQuery(CHECK_TOKEN_QUERY); useEffect(() => { let isMounted = true; @@ -48,6 +44,7 @@ export const AuthProvider = ({ children }: AuthProviderProps) => { const token = localStorage.getItem(LocalStore.accessToken); + console.log(token); if (!token) { isRedirectingRef.current = true; router.replace('/login'); @@ -69,7 +66,11 @@ export const AuthProvider = ({ children }: AuthProviderProps) => { try { const { data } = await checkToken({ - input: { token }, + variables: { + input: { + token, + }, + }, }); if (isMounted) { @@ -79,6 +80,7 @@ export const AuthProvider = ({ children }: AuthProviderProps) => { router.replace('/login'); setIsAuthorized(false); } else { + console.log('token checked'); setIsAuthorized(true); } } diff --git a/frontend/src/components/enum.ts b/frontend/src/components/enum.ts new file mode 100644 index 00000000..83656be3 --- /dev/null +++ b/frontend/src/components/enum.ts @@ -0,0 +1,3 @@ +export enum EventEnum { + NEW_CHAT = 'newchat', // event name 'newchat', help to monitor the change of url +} diff --git a/frontend/src/components/sidebar-item.tsx b/frontend/src/components/sidebar-item.tsx index fb9c0d6a..543068e9 100644 --- a/frontend/src/components/sidebar-item.tsx +++ b/frontend/src/components/sidebar-item.tsx @@ -22,6 +22,7 @@ import Link from 'next/link'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { toast } from 'sonner'; +import { EventEnum } from './enum'; interface SideBarItemProps { id: string; @@ -47,7 +48,9 @@ export function SideBarItem({ toast.success('Chat deleted successfully'); refetchChats(); if (isSelected) { - router.push('/'); + window.history.pushState({}, '', '/'); + const event = new Event(EventEnum.NEW_CHAT); + window.dispatchEvent(event); } }, onError: (error) => { @@ -86,7 +89,7 @@ export function SideBarItem({ )} > diff --git a/frontend/src/components/sidebar.tsx b/frontend/src/components/sidebar.tsx index eabdd867..17ce560b 100644 --- a/frontend/src/components/sidebar.tsx +++ b/frontend/src/components/sidebar.tsx @@ -8,6 +8,7 @@ import SidebarSkeleton from './sidebar-skeleton'; import UserSettings from './user-settings'; import { SideBarItem } from './sidebar-item'; import { Chat } from '@/graphql/type'; +import { EventEnum } from './enum'; interface SidebarProps { isCollapsed: boolean; @@ -36,7 +37,9 @@ function Sidebar({ const handleNewChat = useCallback(() => { //force reload to reset the chat state - window.location.href = '/'; + window.history.pushState({}, '', '/'); + const event = new Event(EventEnum.NEW_CHAT); + window.dispatchEvent(event); }, []); if (loading) return ; @@ -80,7 +83,9 @@ function Sidebar({ id={chat.id} title={chat.title} isSelected={currentChatId === chat.id} - onSelect={() => router.push(`/${chat.id}`)} + onSelect={() => + window.history.replaceState({}, '', `/?id=${chat.id}`) + } refetchChats={onRefetch} /> ))} diff --git a/frontend/src/lib/client.ts b/frontend/src/lib/client.ts index 24fa568f..0f93d0a8 100644 --- a/frontend/src/lib/client.ts +++ b/frontend/src/lib/client.ts @@ -4,7 +4,6 @@ import { InMemoryCache, HttpLink, ApolloLink, - concat, from, split, } from '@apollo/client'; @@ -13,6 +12,7 @@ import { GraphQLWsLink } from '@apollo/client/link/subscriptions'; import { createClient } from 'graphql-ws'; import { getMainDefinition } from '@apollo/client/utilities'; + // HTTP Link const httpLink = new HttpLink({ uri: process.env.NEXT_PUBLIC_GRAPHQL_URL, @@ -22,14 +22,15 @@ const httpLink = new HttpLink({ }, }); -let wsLink; +// WebSocket Link (only in browser environment) +let wsLink = null; if (typeof window !== 'undefined') { - // WebSocket Link wsLink = new GraphQLWsLink( createClient({ url: process.env.NEXT_PUBLIC_GRAPHQL_URL, connectionParams: () => { - return {}; + const token = localStorage.getItem(LocalStore.accessToken); + return token ? { Authorization: `Bearer ${token}` } : {}; }, }) ); @@ -79,24 +80,26 @@ const errorLink = onError(({ graphQLErrors, networkError, operation }) => { }); // Split traffic based on operation type -const splitLink = split( - ({ query }) => { - if (!query) { - throw new Error('Query is undefined'); - } - const definition = getMainDefinition(query); - return ( - definition.kind === 'OperationDefinition' && - definition.operation === 'subscription' - ); - }, - wsLink, - from([errorLink, requestLoggingMiddleware, authMiddleware, httpLink]) -); +const splitLink = wsLink + ? split( + ({ query }) => { + if (!query) { + throw new Error('Query is undefined'); + } + const definition = getMainDefinition(query); + return ( + definition.kind === 'OperationDefinition' && + definition.operation === 'subscription' + ); + }, + wsLink, + from([errorLink, requestLoggingMiddleware, authMiddleware, httpLink]) + ) + : from([errorLink, requestLoggingMiddleware, authMiddleware, httpLink]); // Create Apollo Client const client = new ApolloClient({ - link: wsLink ? from([httpLink, wsLink]) : httpLink, + link: splitLink, // Use splitLink here cache: new InMemoryCache(), defaultOptions: { watchQuery: { diff --git a/package.json b/package.json index 48a79c60..2901ba6c 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "prettier": "^3.0.0", "turbo": "^2.2.3" }, - "packageManager": "pnpm@9.1.2", + "packageManager": "pnpm@9.1.0", "engines": { "node": ">=18" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8bc3dcc2..a3c460fd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,10 +14,10 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: ^8.0.0 - version: 8.20.0(@typescript-eslint/parser@8.20.0)(eslint@8.57.1)(typescript@5.6.2) + version: 8.21.0(@typescript-eslint/parser@8.21.0)(eslint@8.57.1)(typescript@5.6.2) '@typescript-eslint/parser': specifier: ^8.0.0 - version: 8.20.0(eslint@8.57.1)(typescript@5.6.2) + version: 8.21.0(eslint@8.57.1)(typescript@5.6.2) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -95,7 +95,7 @@ importers: version: 16.4.7 eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.20.0)(eslint@8.57.1) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.21.0)(eslint@8.57.1) fastembed: specifier: ^1.14.1 version: 1.14.1 @@ -125,7 +125,7 @@ importers: version: 3.0.0 openai: specifier: ^4.77.0 - version: 4.78.1(zod@3.24.1) + version: 4.79.4(ws@8.18.0)(zod@3.24.1) p-queue-es5: specifier: ^6.0.2 version: 6.0.2 @@ -177,10 +177,10 @@ importers: version: 6.0.2 '@typescript-eslint/eslint-plugin': specifier: ^8.0.0 - version: 8.20.0(@typescript-eslint/parser@8.20.0)(eslint@8.57.1)(typescript@5.6.3) + version: 8.21.0(@typescript-eslint/parser@8.21.0)(eslint@8.57.1)(typescript@5.6.3) '@typescript-eslint/parser': specifier: ^8.0.0 - version: 8.20.0(eslint@8.57.1)(typescript@5.6.3) + version: 8.21.0(eslint@8.57.1)(typescript@5.6.3) codefox-common: specifier: workspace:* version: link:../codefox-common @@ -192,7 +192,7 @@ importers: version: 9.1.0(eslint@8.57.1) eslint-plugin-prettier: specifier: ^5.0.0 - version: 5.2.2(eslint-config-prettier@9.1.0)(eslint@8.57.1)(prettier@3.4.2) + version: 5.2.3(eslint-config-prettier@9.1.0)(eslint@8.57.1)(prettier@3.4.2) jest: specifier: ^29.5.0 version: 29.7.0(@types/node@20.17.14)(ts-node@10.9.2) @@ -229,7 +229,7 @@ importers: dependencies: openai: specifier: ^4.0.0 - version: 4.78.1(zod@3.24.1) + version: 4.79.4(ws@8.18.0)(zod@3.24.1) devDependencies: '@nestjs/common': specifier: 10.4.15 @@ -315,7 +315,7 @@ importers: dependencies: '@apollo/client': specifier: ^3.11.8 - version: 3.12.6(@types/react@18.3.18)(graphql-ws@5.16.2)(graphql@16.10.0)(react-dom@18.3.1)(react@18.3.1)(subscriptions-transport-ws@0.11.0) + version: 3.12.7(@types/react@18.3.18)(graphql-ws@5.16.2)(graphql@16.10.0)(react-dom@18.3.1)(react@18.3.1)(subscriptions-transport-ws@0.11.0) '@emoji-mart/data': specifier: ^1.2.1 version: 1.2.1 @@ -327,10 +327,10 @@ importers: version: 3.10.0(react-hook-form@7.54.2) '@langchain/community': specifier: ^0.3.1 - version: 0.3.24(@browserbasehq/stagehand@1.9.0)(@ibm-cloud/watsonx-ai@1.3.1)(@langchain/core@0.3.30)(axios@1.7.4)(ibm-cloud-sdk-core@5.1.1)(openai@4.78.1)(ws@8.18.0) + version: 0.3.26(@browserbasehq/stagehand@1.10.1)(@ibm-cloud/watsonx-ai@1.3.2)(@langchain/core@0.3.33)(axios@1.7.4)(ibm-cloud-sdk-core@5.1.1)(openai@4.79.4)(ws@8.18.0) '@langchain/core': specifier: ^0.3.3 - version: 0.3.30(openai@4.78.1) + version: 0.3.33(openai@4.79.4) '@nestjs/common': specifier: ^10.4.6 version: 10.4.15(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.1) @@ -381,7 +381,7 @@ importers: version: 5.6.0 framer-motion: specifier: ^11.5.6 - version: 11.18.0(react-dom@18.3.1)(react@18.3.1) + version: 11.18.2(react-dom@18.3.1)(react@18.3.1) graphql: specifier: ^16.9.0 version: 16.10.0 @@ -590,10 +590,10 @@ importers: version: 16.18.124 '@typescript-eslint/eslint-plugin': specifier: ^8.0.0 - version: 8.20.0(@typescript-eslint/parser@8.20.0)(eslint@8.57.1)(typescript@5.6.3) + version: 8.21.0(@typescript-eslint/parser@8.21.0)(eslint@8.57.1)(typescript@5.6.3) '@typescript-eslint/parser': specifier: ^8.0.0 - version: 8.20.0(eslint@8.57.1)(typescript@5.6.3) + version: 8.21.0(eslint@8.57.1)(typescript@5.6.3) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -602,7 +602,7 @@ importers: version: 9.1.0(eslint@8.57.1) eslint-plugin-prettier: specifier: ^5.0.0 - version: 5.2.2(eslint-config-prettier@9.1.0)(eslint@8.57.1)(prettier@3.4.2) + version: 5.2.3(eslint-config-prettier@9.1.0)(eslint@8.57.1)(prettier@3.4.2) jest: specifier: ^29.7.0 version: 29.7.0(@types/node@16.18.124) @@ -611,7 +611,7 @@ importers: version: 29.7.0 openai: specifier: ^4.78.1 - version: 4.78.1(zod@3.24.1) + version: 4.79.4(ws@8.18.0)(zod@3.24.1) prettier: specifier: ^3.0.0 version: 3.4.2 @@ -662,42 +662,42 @@ packages: resolution: {integrity: sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==} dev: true - /@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3): - resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==} + /@algolia/autocomplete-core@1.17.9(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3): + resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==} dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) + '@algolia/autocomplete-plugin-algolia-insights': 1.17.9(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) transitivePeerDependencies: - '@algolia/client-search' - algoliasearch - search-insights dev: false - /@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3): - resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==} + /@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3): + resolution: {integrity: sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==} peerDependencies: search-insights: '>= 1 < 3' dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) search-insights: 2.17.3 transitivePeerDependencies: - '@algolia/client-search' - algoliasearch dev: false - /@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0): - resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==} + /@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.19.0)(algoliasearch@5.19.0): + resolution: {integrity: sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' dependencies: - '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) + '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) '@algolia/client-search': 5.19.0 algoliasearch: 5.19.0 dev: false - /@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0): - resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==} + /@algolia/autocomplete-shared@1.17.9(@algolia/client-search@5.19.0)(algoliasearch@5.19.0): + resolution: {integrity: sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ==} peerDependencies: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' @@ -1046,8 +1046,8 @@ packages: graphql: 16.10.0 dev: false - /@apollo/client@3.12.6(@types/react@18.3.18)(graphql-ws@5.16.2)(graphql@16.10.0)(react-dom@18.3.1)(react@18.3.1)(subscriptions-transport-ws@0.11.0): - resolution: {integrity: sha512-MOEtkojZagMKB7nxlwQ426eaBYwEs/Xfn+JeLOd81wv6j7toKo57eEGAbJdZwyXGRgtiqDkX5gx3EzE7qtarXA==} + /@apollo/client@3.12.7(@types/react@18.3.18)(graphql-ws@5.16.2)(graphql@16.10.0)(react-dom@18.3.1)(react@18.3.1)(subscriptions-transport-ws@0.11.0): + resolution: {integrity: sha512-c0LSzS3tmJ06WSyNxsTHlfc4OLLYDnWtN+zkRjMQ80KCcp89sEpNgZP5ZCXdt2pUwUqOAvZFKJW7L8tolDzkrw==} peerDependencies: graphql: ^15.0.0 || ^16.0.0 graphql-ws: ^5.5.5 @@ -2677,8 +2677,8 @@ packages: - encoding dev: false - /@browserbasehq/stagehand@1.9.0(@playwright/test@1.49.1)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.78.1)(zod@3.24.1): - resolution: {integrity: sha512-0wIFnwOVnUEgVkPKW0RX7NoOt98qaRJ8+l1m9ppk1f5E03GtefDQTMiQwwT9WQn163bpZT5cOhyA1I3jZNfFeA==} + /@browserbasehq/stagehand@1.10.1(@playwright/test@1.49.1)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.79.4)(zod@3.24.1): + resolution: {integrity: sha512-A222TCseFvKNvBwav7ZrZmug0JnYvy1vFI1ReNOtcymjhrZQLfklq1gm/luUjr8aRTbTzsUV8iclt5r0kyaXbA==} peerDependencies: '@playwright/test': ^1.42.1 deepmerge: ^4.3.1 @@ -2691,7 +2691,7 @@ packages: '@playwright/test': 1.49.1 deepmerge: 4.3.1 dotenv: 16.4.7 - openai: 4.78.1(zod@3.24.1) + openai: 4.79.4(ws@8.18.0)(zod@3.24.1) sharp: 0.33.5 ws: 8.18.0 zod: 3.24.1 @@ -3184,12 +3184,12 @@ packages: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} - /@docsearch/css@3.8.2: - resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==} + /@docsearch/css@3.8.3: + resolution: {integrity: sha512-1nELpMV40JDLJ6rpVVFX48R1jsBFIQ6RnEQDsLFGmzOjPWTOMlZqUcXcvRx8VmYV/TqnS1l784Ofz+ZEb+wEOQ==} dev: false - /@docsearch/react@3.8.2(@algolia/client-search@5.19.0)(@types/react@18.3.18)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.3): - resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==} + /@docsearch/react@3.8.3(@algolia/client-search@5.19.0)(@types/react@18.3.18)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.3): + resolution: {integrity: sha512-6UNrg88K7lJWmuS6zFPL/xgL+n326qXqZ7Ybyy4E8P/6Rcblk3GE8RXxeol4Pd5pFpKMhOhBhzABKKwHtbJCIg==} peerDependencies: '@types/react': '>= 16.8.0 < 19.0.0' react: '>= 16.8.0 < 19.0.0' @@ -3205,9 +3205,9 @@ packages: search-insights: optional: true dependencies: - '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) - '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) - '@docsearch/css': 3.8.2 + '@algolia/autocomplete-core': 1.17.9(@algolia/client-search@5.19.0)(algoliasearch@5.19.0)(search-insights@2.17.3) + '@algolia/autocomplete-preset-algolia': 1.17.9(@algolia/client-search@5.19.0)(algoliasearch@5.19.0) + '@docsearch/css': 3.8.3 '@types/react': 18.3.18 algoliasearch: 5.19.0 react: 18.3.1 @@ -3934,7 +3934,7 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@docsearch/react': 3.8.2(@algolia/client-search@5.19.0)(@types/react@18.3.18)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.3) + '@docsearch/react': 3.8.3(@algolia/client-search@5.19.0)(@types/react@18.3.18)(react-dom@18.3.1)(react@18.3.1)(search-insights@2.17.3) '@docusaurus/core': 3.6.3(@mdx-js/react@3.1.0)(acorn@8.14.0)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.3) '@docusaurus/logger': 3.6.3 '@docusaurus/plugin-content-docs': 3.6.3(@mdx-js/react@3.1.0)(acorn@8.14.0)(eslint@8.57.1)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.3) @@ -3943,7 +3943,7 @@ packages: '@docusaurus/utils': 3.6.3(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.3) '@docusaurus/utils-validation': 3.6.3(acorn@8.14.0)(react-dom@18.3.1)(react@18.3.1)(typescript@5.6.3) algoliasearch: 4.24.0 - algoliasearch-helper: 3.23.0(algoliasearch@4.24.0) + algoliasearch-helper: 3.23.1(algoliasearch@4.24.0) clsx: 2.1.1 eta: 2.2.0 fs-extra: 11.3.0 @@ -4820,8 +4820,8 @@ packages: - supports-color dev: true - /@graphql-tools/delegate@10.2.9(graphql@16.10.0): - resolution: {integrity: sha512-JlD/IdC26tyqopYvgXo48XwlDnpYPVs523dq5tg/u8kxJe3PtBmEUoE6EQ4CEMk0mB/r5ck+ZXTHt/wiOCWKhw==} + /@graphql-tools/delegate@10.2.10(graphql@16.10.0): + resolution: {integrity: sha512-+p5F0+2I0Yk8FG6EwwOjKKWRA6hFRnZekj8zUFLu5Be4s2TMt/E+KJSaL+hayyXwEqQJT8CZHmOExPPqEMzZhw==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -5197,7 +5197,7 @@ packages: '@graphql-tools/executor-http': 1.2.5(@types/node@22.10.7)(graphql@16.10.0) '@graphql-tools/executor-legacy-ws': 1.1.10(graphql@16.10.0) '@graphql-tools/utils': 10.7.2(graphql@16.10.0) - '@graphql-tools/wrap': 10.0.27(graphql@16.10.0) + '@graphql-tools/wrap': 10.0.28(graphql@16.10.0) '@types/ws': 8.5.13 '@whatwg-node/fetch': 0.10.3 graphql: 16.10.0 @@ -5256,13 +5256,13 @@ packages: graphql: 16.10.0 tslib: 2.6.3 - /@graphql-tools/wrap@10.0.27(graphql@16.10.0): - resolution: {integrity: sha512-UikYBknzYgJKhzIXrzA58EO8IZ+jlX/iPmfUactK6aypc7iKCJzGD31Ha8rDI9GiHPn1F8PUAB4cTlGJ1qRh3w==} + /@graphql-tools/wrap@10.0.28(graphql@16.10.0): + resolution: {integrity: sha512-QkoQTybeBfji2Na67jgdJNDKKgLgH2cAMfxCDTbNpzksah0u/b4LD5RebZTXZ8FAsbFUMRbDGh7aL1Th+dbffg==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@graphql-tools/delegate': 10.2.9(graphql@16.10.0) + '@graphql-tools/delegate': 10.2.10(graphql@16.10.0) '@graphql-tools/schema': 10.0.16(graphql@16.10.0) '@graphql-tools/utils': 10.7.2(graphql@16.10.0) graphql: 16.10.0 @@ -5296,7 +5296,7 @@ packages: resolution: {integrity: sha512-IZ3fJ4WJ4iOghZkHWaKJY+XZJK9xAbaSIziY+OQcYtxnlcXo01/ibe2y2JjdsIhfzmYpxvov7F1qHoj2ek7tWQ==} engines: {node: '>=18'} dependencies: - '@huggingface/tasks': 0.13.15 + '@huggingface/tasks': 0.13.16 dev: false /@huggingface/jinja@0.3.2: @@ -5304,8 +5304,8 @@ packages: engines: {node: '>=18'} dev: false - /@huggingface/tasks@0.13.15: - resolution: {integrity: sha512-DDkPK1wh5EkhkmcRrQIPUc48v56hIv2Of2mJipfAnOUZARnKedzHvMZrUxiTz7GCYDEG9+N4xOZwJZtm99YdCA==} + /@huggingface/tasks@0.13.16: + resolution: {integrity: sha512-2kniw63zvyBOPzMWGMbLvTLJkUHhr+nRcvh/qC5g3AfHdqCjs22+6CsUgSKFn2wnEAoJV3W6GiOUAPud4kMxFA==} dev: false /@huggingface/transformers@3.3.1: @@ -5336,14 +5336,16 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead - /@ibm-cloud/watsonx-ai@1.3.1: - resolution: {integrity: sha512-oW2r+Oxd7MVE/Q87/sPBCQufQfUtsorGNNgCyA4iW6T3vcxfDyIBInkr3JxnVM7MXp4k2CEXDQmZrRl94mk2rQ==} + /@ibm-cloud/watsonx-ai@1.3.2(@langchain/core@0.3.33): + resolution: {integrity: sha512-I8FX086BG1dOOE+kRpsa28mDTTgc4qodjZsxWomKm6xfmgZFibC8WiJMjLx58QTLr6KZKw1Zk4ya7JVtturYag==} engines: {node: '>=18.0.0'} dependencies: + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.33) '@types/node': 18.19.71 extend: 3.0.2 ibm-cloud-sdk-core: 5.1.1 transitivePeerDependencies: + - '@langchain/core' - supports-color dev: false @@ -5826,8 +5828,8 @@ packages: resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} dev: false - /@langchain/community@0.3.24(@browserbasehq/stagehand@1.9.0)(@ibm-cloud/watsonx-ai@1.3.1)(@langchain/core@0.3.30)(axios@1.7.4)(ibm-cloud-sdk-core@5.1.1)(openai@4.78.1)(ws@8.18.0): - resolution: {integrity: sha512-lHio63Bi5mxO6aMzLfXq5ouo6gKpSs7JWJ3Fi2Sl1fdH0AdCEqQZyLG0Fjinx/T815aPBb8eUIdjUlQIrPE2eA==} + /@langchain/community@0.3.26(@browserbasehq/stagehand@1.10.1)(@ibm-cloud/watsonx-ai@1.3.2)(@langchain/core@0.3.33)(axios@1.7.4)(ibm-cloud-sdk-core@5.1.1)(openai@4.79.4)(ws@8.18.0): + resolution: {integrity: sha512-aZjB2lMuHAeEEkM38GFYxUpTBA319GtGsO6t8+KxjsXzkxhwL/nJvEjCoTmoYkAEMI9u6NYksr8D0Urw+Oq27g==} engines: {node: '>=18'} peerDependencies: '@arcjet/redact': ^v1.0.0-alpha.23 @@ -6200,18 +6202,18 @@ packages: youtubei.js: optional: true dependencies: - '@browserbasehq/stagehand': 1.9.0(@playwright/test@1.49.1)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.78.1)(zod@3.24.1) - '@ibm-cloud/watsonx-ai': 1.3.1 - '@langchain/core': 0.3.30(openai@4.78.1) - '@langchain/openai': 0.3.17(@langchain/core@0.3.30) + '@browserbasehq/stagehand': 1.10.1(@playwright/test@1.49.1)(deepmerge@4.3.1)(dotenv@16.4.7)(openai@4.79.4)(zod@3.24.1) + '@ibm-cloud/watsonx-ai': 1.3.2(@langchain/core@0.3.33) + '@langchain/core': 0.3.33(openai@4.79.4) + '@langchain/openai': 0.3.17(@langchain/core@0.3.33)(ws@8.18.0) binary-extensions: 2.3.0 expr-eval: 2.0.2 flat: 5.0.2 ibm-cloud-sdk-core: 5.1.1 js-yaml: 4.1.0 - langchain: 0.3.11(@langchain/core@0.3.30)(axios@1.7.4)(openai@4.78.1) - langsmith: 0.2.15(openai@4.78.1) - openai: 4.78.1(zod@3.24.1) + langchain: 0.3.12(@langchain/core@0.3.33)(axios@1.7.4)(openai@4.79.4)(ws@8.18.0) + langsmith: 0.3.2(openai@4.79.4) + openai: 4.79.4(ws@8.18.0)(zod@3.24.1) uuid: 10.0.0 ws: 8.18.0 zod: 3.24.1 @@ -6233,8 +6235,8 @@ packages: - peggy dev: false - /@langchain/core@0.3.30(openai@4.78.1): - resolution: {integrity: sha512-HFUpjJ6FkPSSeLKzCLKxba4VN1DKnrXRmjaWHDb5KUyE9DZrqak3Sh6k2dkzXDJIcdd/uNeeQGFyQnubVEMkPw==} + /@langchain/core@0.3.33(openai@4.79.4): + resolution: {integrity: sha512-gIszaRKWmP1HEgOhJLJaMiTMH8U3W9hG6raWihwpCTb0Ns7owjrmaqmgMa9h3W4/0xriaKfrfFBd6tepKsfxZA==} engines: {node: '>=18'} dependencies: '@cfworker/json-schema': 4.1.0 @@ -6242,7 +6244,7 @@ packages: camelcase: 6.3.0 decamelize: 1.2.0 js-tiktoken: 1.0.16 - langsmith: 0.2.15(openai@4.78.1) + langsmith: 0.3.2(openai@4.79.4) mustache: 4.2.0 p-queue: 6.6.2 p-retry: 4.6.2 @@ -6253,28 +6255,29 @@ packages: - openai dev: false - /@langchain/openai@0.3.17(@langchain/core@0.3.30): + /@langchain/openai@0.3.17(@langchain/core@0.3.33)(ws@8.18.0): resolution: {integrity: sha512-uw4po32OKptVjq+CYHrumgbfh4NuD7LqyE+ZgqY9I/LrLc6bHLMc+sisHmI17vgek0K/yqtarI0alPJbzrwyag==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.3.29 <0.4.0' dependencies: - '@langchain/core': 0.3.30(openai@4.78.1) + '@langchain/core': 0.3.33(openai@4.79.4) js-tiktoken: 1.0.16 - openai: 4.78.1(zod@3.24.1) + openai: 4.79.4(ws@8.18.0)(zod@3.24.1) zod: 3.24.1 zod-to-json-schema: 3.24.1(zod@3.24.1) transitivePeerDependencies: - encoding + - ws dev: false - /@langchain/textsplitters@0.1.0(@langchain/core@0.3.30): + /@langchain/textsplitters@0.1.0(@langchain/core@0.3.33): resolution: {integrity: sha512-djI4uw9rlkAb5iMhtLED+xJebDdAG935AdP4eRTB02R7OB/act55Bj9wsskhZsvuyQRpO4O1wQOp85s6T6GWmw==} engines: {node: '>=18'} peerDependencies: '@langchain/core': '>=0.2.21 <0.4.0' dependencies: - '@langchain/core': 0.3.30(openai@4.78.1) + '@langchain/core': 0.3.33(openai@4.79.4) js-tiktoken: 1.0.16 dev: false @@ -8975,8 +8978,8 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@8.20.0(@typescript-eslint/parser@8.20.0)(eslint@8.57.1)(typescript@5.6.2): - resolution: {integrity: sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==} + /@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0)(eslint@8.57.1)(typescript@5.6.2): + resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -8984,11 +8987,11 @@ packages: typescript: '>=4.8.4 <5.8.0' dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.20.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/type-utils': 8.20.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/utils': 8.20.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/visitor-keys': 8.20.0 + '@typescript-eslint/parser': 8.21.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/type-utils': 8.21.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/utils': 8.21.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.21.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 @@ -8999,8 +9002,8 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin@8.20.0(@typescript-eslint/parser@8.20.0)(eslint@8.57.1)(typescript@5.6.3): - resolution: {integrity: sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==} + /@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0)(eslint@8.57.1)(typescript@5.6.3): + resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -9008,11 +9011,11 @@ packages: typescript: '>=4.8.4 <5.8.0' dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.20.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/type-utils': 8.20.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/utils': 8.20.0(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.20.0 + '@typescript-eslint/parser': 8.21.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/type-utils': 8.21.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/utils': 8.21.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.21.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 @@ -9043,17 +9046,17 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@8.20.0(eslint@8.57.1)(typescript@5.6.2): - resolution: {integrity: sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==} + /@typescript-eslint/parser@8.21.0(eslint@8.57.1)(typescript@5.6.2): + resolution: {integrity: sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' dependencies: - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.6.2) - '@typescript-eslint/visitor-keys': 8.20.0 + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 8.21.0 debug: 4.4.0(supports-color@5.5.0) eslint: 8.57.1 typescript: 5.6.2 @@ -9061,17 +9064,17 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@8.20.0(eslint@8.57.1)(typescript@5.6.3): - resolution: {integrity: sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==} + /@typescript-eslint/parser@8.21.0(eslint@8.57.1)(typescript@5.6.3): + resolution: {integrity: sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' dependencies: - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.20.0 + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.21.0 debug: 4.4.0(supports-color@5.5.0) eslint: 8.57.1 typescript: 5.6.3 @@ -9086,12 +9089,12 @@ packages: '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/scope-manager@8.20.0: - resolution: {integrity: sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==} + /@typescript-eslint/scope-manager@8.21.0: + resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/visitor-keys': 8.20.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/visitor-keys': 8.21.0 /@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.6.3): resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} @@ -9113,15 +9116,15 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@8.20.0(eslint@8.57.1)(typescript@5.6.2): - resolution: {integrity: sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==} + /@typescript-eslint/type-utils@8.21.0(eslint@8.57.1)(typescript@5.6.2): + resolution: {integrity: sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' dependencies: - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.20.0(eslint@8.57.1)(typescript@5.6.2) + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.6.2) + '@typescript-eslint/utils': 8.21.0(eslint@8.57.1)(typescript@5.6.2) debug: 4.4.0(supports-color@5.5.0) eslint: 8.57.1 ts-api-utils: 2.0.0(typescript@5.6.2) @@ -9130,15 +9133,15 @@ packages: - supports-color dev: true - /@typescript-eslint/type-utils@8.20.0(eslint@8.57.1)(typescript@5.6.3): - resolution: {integrity: sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==} + /@typescript-eslint/type-utils@8.21.0(eslint@8.57.1)(typescript@5.6.3): + resolution: {integrity: sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' dependencies: - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.20.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.21.0(eslint@8.57.1)(typescript@5.6.3) debug: 4.4.0(supports-color@5.5.0) eslint: 8.57.1 ts-api-utils: 2.0.0(typescript@5.6.3) @@ -9151,8 +9154,8 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/types@8.20.0: - resolution: {integrity: sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==} + /@typescript-eslint/types@8.21.0: + resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} /@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.3): @@ -9177,14 +9180,14 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@8.20.0(typescript@5.6.2): - resolution: {integrity: sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==} + /@typescript-eslint/typescript-estree@8.21.0(typescript@5.6.2): + resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' dependencies: - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/visitor-keys': 8.20.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/visitor-keys': 8.21.0 debug: 4.4.0(supports-color@5.5.0) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -9196,14 +9199,14 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@8.20.0(typescript@5.6.3): - resolution: {integrity: sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==} + /@typescript-eslint/typescript-estree@8.21.0(typescript@5.6.3): + resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' dependencies: - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/visitor-keys': 8.20.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/visitor-keys': 8.21.0 debug: 4.4.0(supports-color@5.5.0) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -9233,34 +9236,34 @@ packages: - typescript dev: true - /@typescript-eslint/utils@8.20.0(eslint@8.57.1)(typescript@5.6.2): - resolution: {integrity: sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==} + /@typescript-eslint/utils@8.21.0(eslint@8.57.1)(typescript@5.6.2): + resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.6.2) + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.6.2) eslint: 8.57.1 typescript: 5.6.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@8.20.0(eslint@8.57.1)(typescript@5.6.3): - resolution: {integrity: sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==} + /@typescript-eslint/utils@8.21.0(eslint@8.57.1)(typescript@5.6.3): + resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.6.3) eslint: 8.57.1 typescript: 5.6.3 transitivePeerDependencies: @@ -9274,11 +9277,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@8.20.0: - resolution: {integrity: sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==} + /@typescript-eslint/visitor-keys@8.21.0: + resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/types': 8.21.0 eslint-visitor-keys: 4.2.0 /@ungap/structured-clone@1.2.1: @@ -9620,12 +9623,12 @@ packages: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.5 + fast-uri: 3.0.6 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - /algoliasearch-helper@3.23.0(algoliasearch@4.24.0): - resolution: {integrity: sha512-8CK4Gb/ju4OesAYcS+mjBpNiVA7ILWpg7D2vhBZohh0YkG8QT1KZ9LG+8+EntQBUGoKtPy06OFhiwP4f5zzAQg==} + /algoliasearch-helper@3.23.1(algoliasearch@4.24.0): + resolution: {integrity: sha512-j/dF2ZELJBm4SJTK5ECsMuCDJpBB8ITiWKRjd3S15bK2bqrXKLWqDiA5A96WhVvCpZ2NmgNlUYmFbKOfcqivbg==} peerDependencies: algoliasearch: '>= 3.1 < 6' dependencies: @@ -9946,7 +9949,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001692 + caniuse-lite: 1.0.30001695 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -10299,8 +10302,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001692 - electron-to-chromium: 1.5.83 + caniuse-lite: 1.0.30001695 + electron-to-chromium: 1.5.84 node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) @@ -10457,13 +10460,13 @@ packages: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001692 + caniuse-lite: 1.0.30001695 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: false - /caniuse-lite@1.0.30001692: - resolution: {integrity: sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==} + /caniuse-lite@1.0.30001695: + resolution: {integrity: sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==} /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -10796,7 +10799,7 @@ packages: fs-extra: 11.3.0 lodash.isplainobject: 4.0.6 memory-stream: 1.0.0 - node-api-headers: 1.4.0 + node-api-headers: 1.5.0 npmlog: 6.0.2 rc: 1.2.8 semver: 7.6.3 @@ -11001,6 +11004,12 @@ packages: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: false + /console-table-printer@2.12.1: + resolution: {integrity: sha512-wKGOQRRvdnd89pCeH96e2Fn4wkbenSP6LMHfjfyNLMbGuHEFbMqQNuxXqd0oXG9caIOQ1FTvc5Uijp9/4jujnQ==} + dependencies: + simple-wcswidth: 1.0.1 + dev: false + /constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} dependencies: @@ -11954,8 +11963,8 @@ packages: jake: 10.9.2 dev: true - /electron-to-chromium@1.5.83: - resolution: {integrity: sha512-LcUDPqSt+V0QmI47XLzZrz5OqILSMGsPFkDYus22rIbgorSvBYEFqq854ltTmUdHkY92FSdAAvsh4jWEULMdfQ==} + /electron-to-chromium@1.5.84: + resolution: {integrity: sha512-I+DQ8xgafao9Ha6y0qjHHvpZ9OfyA1qKlkHkjywxzniORU2awxyz7f/iVJcULmrF2yrM3nHQf+iDjJtbbexd/g==} /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -12276,12 +12285,12 @@ packages: dependencies: '@next/eslint-plugin-next': 14.2.13 '@rushstack/eslint-patch': 1.10.5 - '@typescript-eslint/eslint-plugin': 8.20.0(@typescript-eslint/parser@8.20.0)(eslint@8.57.1)(typescript@5.6.3) - '@typescript-eslint/parser': 8.20.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.21.0(@typescript-eslint/parser@8.21.0)(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': 8.21.0(eslint@8.57.1)(typescript@5.6.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.20.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.21.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.4(eslint@8.57.1) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1) @@ -12328,9 +12337,9 @@ packages: debug: 4.4.0(supports-color@5.5.0) enhanced-resolve: 5.18.0 eslint: 8.57.1 - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.20.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.21.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) fast-glob: 3.3.3 - get-tsconfig: 4.8.1 + get-tsconfig: 4.10.0 is-bun-module: 1.3.0 is-glob: 4.0.3 stable-hash: 0.0.4 @@ -12338,7 +12347,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.20.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): + /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} peerDependencies: @@ -12359,7 +12368,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 8.20.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': 8.21.0(eslint@8.57.1)(typescript@5.6.3) debug: 3.2.7 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 @@ -12368,7 +12377,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.20.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): + /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.21.0)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} engines: {node: '>=4'} peerDependencies: @@ -12379,7 +12388,7 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 8.20.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': 8.21.0(eslint@8.57.1)(typescript@5.6.3) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.3 @@ -12388,7 +12397,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.20.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -12429,8 +12438,8 @@ packages: string.prototype.includes: 2.0.1 dev: true - /eslint-plugin-prettier@5.2.2(eslint-config-prettier@9.1.0)(eslint@8.57.1)(prettier@3.4.2): - resolution: {integrity: sha512-1yI3/hf35wmlq66C8yOyrujQnel+v5l1Vop5Cl2I6ylyNTT1JbuUUnV3/41PzwTzcyDp/oF0jWE3HXvcH5AQOQ==} + /eslint-plugin-prettier@5.2.3(eslint-config-prettier@9.1.0)(eslint@8.57.1)(prettier@3.4.2): + resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -12486,7 +12495,7 @@ packages: string.prototype.repeat: 1.0.0 dev: true - /eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.20.0)(eslint@8.57.1): + /eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.21.0)(eslint@8.57.1): resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} peerDependencies: '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 @@ -12495,7 +12504,7 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 8.20.0(@typescript-eslint/parser@8.20.0)(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.21.0(@typescript-eslint/parser@8.21.0)(eslint@8.57.1)(typescript@5.6.3) eslint: 8.57.1 dev: false @@ -12849,8 +12858,8 @@ packages: /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - /fast-uri@3.0.5: - resolution: {integrity: sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==} + /fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} /fastembed@1.14.1: resolution: {integrity: sha512-Y14v+FWZwjNUpQ7mRGYu4N5yF+hZkF7zqzPWzzLbwdIEtYsHy0DSpiVJ+Fg6Oi1fQjrBKASQt0hdSMSjw1/Wtw==} @@ -13207,8 +13216,8 @@ packages: /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - /framer-motion@11.18.0(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-Vmjl5Al7XqKHzDFnVqzi1H9hzn5w4eN/bdqXTymVpU2UuMQuz9w6UPdsL9dFBeH7loBlnu4qcEXME+nvbkcIOw==} + /framer-motion@11.18.2(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-5F5Och7wrvtLVElIpclDT0CBzMVg3dL22B64aZwHtsIY8RB4mXICLrkajK4G9R+ieSAGcgrLeae2SeUTg2pr6w==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -13221,8 +13230,8 @@ packages: react-dom: optional: true dependencies: - motion-dom: 11.16.4 - motion-utils: 11.16.0 + motion-dom: 11.18.1 + motion-utils: 11.18.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -13403,8 +13412,8 @@ packages: get-intrinsic: 1.2.7 dev: true - /get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + /get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -15816,8 +15825,8 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} - /langchain@0.3.11(@langchain/core@0.3.30)(axios@1.7.4)(openai@4.78.1): - resolution: {integrity: sha512-PgAG4ZLeuSRkKsyf98cmWGdwKv3I1hOFC8a4fr7e+bm7E+F6Fx6xUkgbuC78ff0N/Cjs5BBryZIFMrqoKPqsvg==} + /langchain@0.3.12(@langchain/core@0.3.33)(axios@1.7.4)(openai@4.79.4)(ws@8.18.0): + resolution: {integrity: sha512-BjdQ/f/66W05L8nRgX74bf5QvJIphpg+K5ZTmQwGE8Gk3umtzHp8T4YIRFYjvTxU4XQrGXOgWk1Y9rk5uBbjKA==} engines: {node: '>=18'} peerDependencies: '@langchain/anthropic': '*' @@ -15868,14 +15877,14 @@ packages: typeorm: optional: true dependencies: - '@langchain/core': 0.3.30(openai@4.78.1) - '@langchain/openai': 0.3.17(@langchain/core@0.3.30) - '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.30) + '@langchain/core': 0.3.33(openai@4.79.4) + '@langchain/openai': 0.3.17(@langchain/core@0.3.33)(ws@8.18.0) + '@langchain/textsplitters': 0.1.0(@langchain/core@0.3.33) axios: 1.7.4(debug@4.4.0) js-tiktoken: 1.0.16 js-yaml: 4.1.0 jsonpointer: 5.0.1 - langsmith: 0.2.15(openai@4.78.1) + langsmith: 0.3.2(openai@4.79.4) openapi-types: 12.1.3 p-retry: 4.6.2 uuid: 10.0.0 @@ -15885,10 +15894,11 @@ packages: transitivePeerDependencies: - encoding - openai + - ws dev: false - /langsmith@0.2.15(openai@4.78.1): - resolution: {integrity: sha512-homtJU41iitqIZVuuLW7iarCzD4f39KcfP9RTBWav9jifhrsDa1Ez89Ejr+4qi72iuBu8Y5xykchsGVgiEZ93w==} + /langsmith@0.3.2(openai@4.79.4): + resolution: {integrity: sha512-QUaO6KdinTpts/vBsyPro/R0/Iop+TwTyEYYX8aSIvzwj5EVZY2/VxOefll51t1/E6sISEnra1EwdSCS74Y5NA==} peerDependencies: openai: '*' peerDependenciesMeta: @@ -15896,8 +15906,9 @@ packages: optional: true dependencies: '@types/uuid': 10.0.0 - commander: 10.0.1 - openai: 4.78.1(zod@3.24.1) + chalk: 4.1.2 + console-table-printer: 2.12.1 + openai: 4.79.4(ws@8.18.0)(zod@3.24.1) p-queue: 6.6.2 p-retry: 4.6.2 semver: 7.6.3 @@ -16635,8 +16646,8 @@ packages: micromark-util-types: 2.0.1 dev: false - /micromark-extension-gfm-table@2.1.0: - resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} + /micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.1 @@ -16667,7 +16678,7 @@ packages: micromark-extension-gfm-autolink-literal: 2.1.0 micromark-extension-gfm-footnote: 2.1.0 micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.0 + micromark-extension-gfm-table: 2.1.1 micromark-extension-gfm-tagfilter: 2.0.0 micromark-extension-gfm-task-list-item: 2.1.0 micromark-util-combine-extensions: 2.0.1 @@ -17132,14 +17143,14 @@ packages: hasBin: true dev: false - /motion-dom@11.16.4: - resolution: {integrity: sha512-2wuCie206pCiP2K23uvwJeci4pMFfyQKpWI0Vy6HrCTDzDCer4TsYtT7IVnuGbDeoIV37UuZiUr6SZMHEc1Vww==} + /motion-dom@11.18.1: + resolution: {integrity: sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw==} dependencies: - motion-utils: 11.16.0 + motion-utils: 11.18.1 dev: false - /motion-utils@11.16.0: - resolution: {integrity: sha512-ngdWPjg31rD4WGXFi0eZ00DQQqKKu04QExyv/ymlC+3k+WIgYVFbt6gS5JsFPbJODTF/r8XiE/X+SsoT9c0ocw==} + /motion-utils@11.18.1: + resolution: {integrity: sha512-49Kt+HKjtbJKLtgO/LKj9Ld+6vw9BjH5d9sc40R/kVyH8GLAXgT42M2NnuPcJNuA3s9ZfZBUcwIgpmZWGEE+hA==} dev: false /mrmime@2.0.0: @@ -17205,8 +17216,8 @@ packages: hasBin: true dev: false - /napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + /napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} dev: false /natural-compare@1.4.0: @@ -17256,7 +17267,7 @@ packages: '@playwright/test': 1.49.1 '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001692 + caniuse-lite: 1.0.30001695 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 @@ -17305,8 +17316,8 @@ packages: engines: {node: ^18 || ^20 || >= 21} dev: false - /node-api-headers@1.4.0: - resolution: {integrity: sha512-u83U3WnRbBpWlhc0sQbpF3slHRLV/a6/OXByc+QzHcLxiDiJUWLuKGZp4/ntZUchnXGOCnCq++JUEtwb1/tyow==} + /node-api-headers@1.5.0: + resolution: {integrity: sha512-Yi/FgnN8IU/Cd6KeLxyHkylBUvDTsSScT0Tna2zTrz8klmc8qF2ppj6Q1LHsmOueJWhigQwR4cO2p0XBGW5IaQ==} dev: false /node-domexception@1.0.0: @@ -17703,12 +17714,15 @@ packages: is-wsl: 2.2.0 dev: false - /openai@4.78.1(zod@3.24.1): - resolution: {integrity: sha512-drt0lHZBd2lMyORckOXFPQTmnGLWSLt8VK0W9BhOKWpMFBEoHMoz5gxMPmVq5icp+sOrsbMnsmZTVHUlKvD1Ow==} + /openai@4.79.4(ws@8.18.0)(zod@3.24.1): + resolution: {integrity: sha512-c3rCDLDK4N6TpE4yQ1sl8eIkYET3tRjFcvm4lGga0qlBxaNL9RqUXg9DuhU+/UpzS3XA9dnRlc1H0vyQTRy65Q==} hasBin: true peerDependencies: + ws: ^8.18.0 zod: ^3.23.8 peerDependenciesMeta: + ws: + optional: true zod: optional: true dependencies: @@ -17719,6 +17733,7 @@ packages: form-data-encoder: 1.7.2 formdata-node: 4.4.1 node-fetch: 2.7.0 + ws: 8.18.0 zod: 3.24.1 transitivePeerDependencies: - encoding @@ -18992,8 +19007,8 @@ packages: picocolors: 1.1.1 source-map-js: 1.2.1 - /prebuild-install@7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + /prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} engines: {node: '>=10'} hasBin: true dependencies: @@ -19002,7 +19017,7 @@ packages: github-from-package: 0.0.0 minimist: 1.2.8 mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 + napi-build-utils: 2.0.0 node-abi: 3.73.0 pump: 3.0.2 rc: 1.2.8 @@ -20521,6 +20536,10 @@ packages: semver: 7.6.3 dev: false + /simple-wcswidth@1.0.1: + resolution: {integrity: sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==} + dev: false + /sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} @@ -20728,7 +20747,7 @@ packages: dependencies: bindings: 1.5.0 node-addon-api: 7.1.1 - prebuild-install: 7.1.2 + prebuild-install: 7.1.3 tar: 6.2.1 optionalDependencies: node-gyp: 8.4.1 @@ -21661,7 +21680,7 @@ packages: hasBin: true dependencies: esbuild: 0.23.1 - get-tsconfig: 4.8.1 + get-tsconfig: 4.10.0 optionalDependencies: fsevents: 2.3.3 dev: true