feat(search): Add ability to set default provider, model, and optimization mode when coming from a search query

This commit is contained in:
Willie Zutz 2025-07-03 00:27:32 -06:00
parent b392aa2c21
commit 37c93c3c9b
17 changed files with 603 additions and 319 deletions

View file

@ -222,6 +222,9 @@ This fork adds several enhancements to the original Perplexica project:
- ✅ Enhanced Balance mode that uses a headless web browser to retrieve web content and use relevant excerpts to enhance responses - ✅ Enhanced Balance mode that uses a headless web browser to retrieve web content and use relevant excerpts to enhance responses
- ✅ Adds Agent mode that uses the full content of web pages to answer queries and an agentic flow to intelligently answer complex queries with accuracy - ✅ Adds Agent mode that uses the full content of web pages to answer queries and an agentic flow to intelligently answer complex queries with accuracy
- See the [README.md](docs/architecture/README.md) in the docs architecture directory for more info - See the [README.md](docs/architecture/README.md) in the docs architecture directory for more info
- ✅ Query-based settings override for browser search engine integration
- Automatically applies user's saved optimization mode and AI model preferences when accessing via URL with `q` parameter
- Enables seamless browser search bar integration with personalized settings
### AI Functionality ### AI Functionality

75
package-lock.json generated
View file

@ -16,6 +16,7 @@
"@langchain/community": "^0.3.45", "@langchain/community": "^0.3.45",
"@langchain/core": "^0.3.57", "@langchain/core": "^0.3.57",
"@langchain/google-genai": "^0.2.10", "@langchain/google-genai": "^0.2.10",
"@langchain/groq": "^0.2.3",
"@langchain/langgraph": "^0.3.1", "@langchain/langgraph": "^0.3.1",
"@langchain/ollama": "^0.2.0", "@langchain/ollama": "^0.2.0",
"@langchain/openai": "^0.5.12", "@langchain/openai": "^0.5.12",
@ -2574,9 +2575,9 @@
} }
}, },
"node_modules/@langchain/core": { "node_modules/@langchain/core": {
"version": "0.3.57", "version": "0.3.61",
"resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.57.tgz", "resolved": "https://registry.npmjs.org/@langchain/core/-/core-0.3.61.tgz",
"integrity": "sha512-jz28qCTKJmi47b6jqhQ6vYRTG5jRpqhtPQjriRTB5wR8mgvzo6xKs0fG/kExS3ZvM79ytD1npBvgf8i19xOo9Q==", "integrity": "sha512-4O7fw5SXNSE+uBnathLQrhm3t+7dZGagt/5kt37A+pXw0AkudxEBvveg73sSnpBd9SIz3/Vc7F4k8rCKXGbEDA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@cfworker/json-schema": "^4.0.2", "@cfworker/json-schema": "^4.0.2",
@ -2584,12 +2585,12 @@
"camelcase": "6", "camelcase": "6",
"decamelize": "1.2.0", "decamelize": "1.2.0",
"js-tiktoken": "^1.0.12", "js-tiktoken": "^1.0.12",
"langsmith": "^0.3.29", "langsmith": "^0.3.33",
"mustache": "^4.2.0", "mustache": "^4.2.0",
"p-queue": "^6.6.2", "p-queue": "^6.6.2",
"p-retry": "4", "p-retry": "4",
"uuid": "^10.0.0", "uuid": "^10.0.0",
"zod": "^3.22.4", "zod": "^3.25.32",
"zod-to-json-schema": "^3.22.3" "zod-to-json-schema": "^3.22.3"
}, },
"engines": { "engines": {
@ -2626,6 +2627,22 @@
"uuid": "dist/esm/bin/uuid" "uuid": "dist/esm/bin/uuid"
} }
}, },
"node_modules/@langchain/groq": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@langchain/groq/-/groq-0.2.3.tgz",
"integrity": "sha512-r+yjysG36a0IZxTlCMr655Feumfb4IrOyA0jLLq4l7gEhVyMpYXMwyE6evseyU2LRP+7qOPbGRVpGqAIK0MsUA==",
"license": "MIT",
"dependencies": {
"groq-sdk": "^0.19.0",
"zod": "^3.22.4"
},
"engines": {
"node": ">=18"
},
"peerDependencies": {
"@langchain/core": ">=0.3.58 <0.4.0"
}
},
"node_modules/@langchain/langgraph": { "node_modules/@langchain/langgraph": {
"version": "0.3.1", "version": "0.3.1",
"resolved": "https://registry.npmjs.org/@langchain/langgraph/-/langgraph-0.3.1.tgz", "resolved": "https://registry.npmjs.org/@langchain/langgraph/-/langgraph-0.3.1.tgz",
@ -7072,6 +7089,36 @@
"graphql": "14 - 16" "graphql": "14 - 16"
} }
}, },
"node_modules/groq-sdk": {
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/groq-sdk/-/groq-sdk-0.19.0.tgz",
"integrity": "sha512-vdh5h7ORvwvOvutA80dKF81b0gPWHxu6K/GOJBOM0n6p6CSqAVLhFfeS79Ef0j/yCycDR09jqY7jkYz9dLiS6w==",
"license": "Apache-2.0",
"dependencies": {
"@types/node": "^18.11.18",
"@types/node-fetch": "^2.6.4",
"abort-controller": "^3.0.0",
"agentkeepalive": "^4.2.1",
"form-data-encoder": "1.7.2",
"formdata-node": "^4.3.2",
"node-fetch": "^2.6.7"
}
},
"node_modules/groq-sdk/node_modules/@types/node": {
"version": "18.19.115",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.115.tgz",
"integrity": "sha512-kNrFiTgG4a9JAn1LMQeLOv3MvXIPokzXziohMrMsvpYgLpdEt/mMiVYc4sGKtDfyxM5gIDF4VgrPRyCw4fHOYg==",
"license": "MIT",
"dependencies": {
"undici-types": "~5.26.4"
}
},
"node_modules/groq-sdk/node_modules/undici-types": {
"version": "5.26.5",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
"license": "MIT"
},
"node_modules/guid-typescript": { "node_modules/guid-typescript": {
"version": "1.0.9", "version": "1.0.9",
"resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz", "resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz",
@ -8347,9 +8394,9 @@
} }
}, },
"node_modules/langsmith": { "node_modules/langsmith": {
"version": "0.3.30", "version": "0.3.37",
"resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.3.30.tgz", "resolved": "https://registry.npmjs.org/langsmith/-/langsmith-0.3.37.tgz",
"integrity": "sha512-ZaiaOx9MysuSQlAkRw8mjm7iqhrlF7HI0LCTLxiNBEWBPywdkgI7UnN+s7KtlRiM0tP1cOLm+dQY++Fi33jkPQ==", "integrity": "sha512-aDFM+LbT01gP8hsJNs4QJjmbRNfoifqhpCSpk8j4k/V8wejEgvgATbgj9W9DQsfQFdtfwx+8G48sK5/0PqQisg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@types/uuid": "^10.0.0", "@types/uuid": "^10.0.0",
@ -8361,9 +8408,21 @@
"uuid": "^10.0.0" "uuid": "^10.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@opentelemetry/api": "*",
"@opentelemetry/exporter-trace-otlp-proto": "*",
"@opentelemetry/sdk-trace-base": "*",
"openai": "*" "openai": "*"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"@opentelemetry/api": {
"optional": true
},
"@opentelemetry/exporter-trace-otlp-proto": {
"optional": true
},
"@opentelemetry/sdk-trace-base": {
"optional": true
},
"openai": { "openai": {
"optional": true "optional": true
} }

View file

@ -19,6 +19,7 @@
"@langchain/community": "^0.3.45", "@langchain/community": "^0.3.45",
"@langchain/core": "^0.3.57", "@langchain/core": "^0.3.57",
"@langchain/google-genai": "^0.2.10", "@langchain/google-genai": "^0.2.10",
"@langchain/groq": "^0.2.3",
"@langchain/langgraph": "^0.3.1", "@langchain/langgraph": "^0.3.1",
"@langchain/ollama": "^0.2.0", "@langchain/ollama": "^0.2.0",
"@langchain/openai": "^0.5.12", "@langchain/openai": "^0.5.12",

View file

@ -10,6 +10,7 @@ import {
PlusCircle, PlusCircle,
Save, Save,
X, X,
RotateCcw,
} from 'lucide-react'; } from 'lucide-react';
import { useEffect, useState, useRef } from 'react'; import { useEffect, useState, useRef } from 'react';
import { cn } from '@/lib/utils'; import { cn } from '@/lib/utils';
@ -18,6 +19,8 @@ import ThemeSwitcher from '@/components/theme/Switcher';
import { ImagesIcon, VideoIcon, Layers3 } from 'lucide-react'; import { ImagesIcon, VideoIcon, Layers3 } from 'lucide-react';
import Link from 'next/link'; import Link from 'next/link';
import { PROVIDER_METADATA } from '@/lib/providers'; import { PROVIDER_METADATA } from '@/lib/providers';
import Optimization from '@/components/MessageInputActions/Optimization';
import ModelSelector from '@/components/MessageInputActions/ModelSelector';
interface SettingsType { interface SettingsType {
chatModelProviders: { chatModelProviders: {
@ -242,6 +245,13 @@ export default function SettingsPage() {
); );
const [isAddingNewPrompt, setIsAddingNewPrompt] = useState(false); const [isAddingNewPrompt, setIsAddingNewPrompt] = useState(false);
// Default Search Settings state variables
const [searchOptimizationMode, setSearchOptimizationMode] =
useState<string>('');
const [searchChatModelProvider, setSearchChatModelProvider] =
useState<string>('');
const [searchChatModel, setSearchChatModel] = useState<string>('');
useEffect(() => { useEffect(() => {
const fetchConfig = async () => { const fetchConfig = async () => {
setIsLoading(true); setIsLoading(true);
@ -311,6 +321,29 @@ export default function SettingsPage() {
fetchConfig(); fetchConfig();
// Load search settings from localStorage
const loadSearchSettings = () => {
const storedSearchOptimizationMode = localStorage.getItem(
'searchOptimizationMode',
);
const storedSearchChatModelProvider = localStorage.getItem(
'searchChatModelProvider',
);
const storedSearchChatModel = localStorage.getItem('searchChatModel');
if (storedSearchOptimizationMode) {
setSearchOptimizationMode(storedSearchOptimizationMode);
}
if (storedSearchChatModelProvider) {
setSearchChatModelProvider(storedSearchChatModelProvider);
}
if (storedSearchChatModel) {
setSearchChatModel(storedSearchChatModel);
}
};
loadSearchSettings();
const fetchSystemPrompts = async () => { const fetchSystemPrompts = async () => {
setIsLoading(true); setIsLoading(true);
try { try {
@ -492,6 +525,10 @@ export default function SettingsPage() {
} }
}; };
const saveSearchSetting = (key: string, value: string) => {
localStorage.setItem(key, value);
};
const handleAddOrUpdateSystemPrompt = async () => { const handleAddOrUpdateSystemPrompt = async () => {
const currentPrompt = editingPrompt || { const currentPrompt = editingPrompt || {
name: newPromptName, name: newPromptName,
@ -997,6 +1034,79 @@ export default function SettingsPage() {
</div> </div>
</SettingsSection> </SettingsSection>
<SettingsSection
title="Default Search Settings"
tooltip='Select the settings that will be used when navigating to the site with a search query, such as "example.com/search?q=your+query".\nThese settings will override the global settings for search queries.\n\nIf settings are not specified, the global settings will be used.'
>
<div className="flex flex-col space-y-4">
<div className="flex flex-col space-y-1">
<p className="text-black/70 dark:text-white/70 text-sm">
Optimization Mode
</p>
<div className="flex justify-start items-center space-x-2">
<Optimization
optimizationMode={searchOptimizationMode}
setOptimizationMode={(mode) => {
setSearchOptimizationMode(mode);
saveSearchSetting('searchOptimizationMode', mode);
}}
showTitle={true}
/>
{searchOptimizationMode && (
<button
onClick={() => {
setSearchOptimizationMode('');
localStorage.removeItem('searchOptimizationMode');
}}
className="p-1.5 rounded-md hover:bg-light-200 dark:hover:bg-dark-200 text-black/50 dark:text-white/50 hover:text-black/80 dark:hover:text-white/80 transition-colors"
title="Reset optimization mode"
>
<RotateCcw size={16} />
</button>
)}
</div>
</div>
<div className="flex flex-col space-y-1">
<p className="text-black/70 dark:text-white/70 text-sm">
Chat Model
</p>
<div className="flex justify-start items-center space-x-2">
<ModelSelector
selectedModel={{
provider: searchChatModelProvider,
model: searchChatModel,
}}
setSelectedModel={(model) => {
setSearchChatModelProvider(model.provider);
setSearchChatModel(model.model);
saveSearchSetting(
'searchChatModelProvider',
model.provider,
);
saveSearchSetting('searchChatModel', model.model);
}}
truncateModelName={false}
/>
{(searchChatModelProvider || searchChatModel) && (
<button
onClick={() => {
setSearchChatModelProvider('');
setSearchChatModel('');
localStorage.removeItem('searchChatModelProvider');
localStorage.removeItem('searchChatModel');
}}
className="p-1.5 rounded-md hover:bg-light-200 dark:hover:bg-dark-200 text-black/50 dark:text-white/50 hover:text-black/80 dark:hover:text-white/80 transition-colors"
title="Reset chat model"
>
<RotateCcw size={16} />
</button>
)}
</div>
</div>
</div>
</SettingsSection>
<SettingsSection title="Model Settings"> <SettingsSection title="Model Settings">
{config.chatModelProviders && ( {config.chatModelProviders && (
<div className="flex flex-col space-y-4"> <div className="flex flex-col space-y-4">

View file

@ -7,7 +7,7 @@ import Chat from './Chat';
import EmptyChat from './EmptyChat'; import EmptyChat from './EmptyChat';
import crypto from 'crypto'; import crypto from 'crypto';
import { toast } from 'sonner'; import { toast } from 'sonner';
import { useSearchParams } from 'next/navigation'; import { useSearchParams, useRouter } from 'next/navigation';
import { getSuggestions } from '@/lib/actions'; import { getSuggestions } from '@/lib/actions';
import { Settings } from 'lucide-react'; import { Settings } from 'lucide-react';
import Link from 'next/link'; import Link from 'next/link';
@ -250,6 +250,7 @@ const loadMessages = async (
const ChatWindow = ({ id }: { id?: string }) => { const ChatWindow = ({ id }: { id?: string }) => {
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const router = useRouter();
const initialMessage = searchParams.get('q'); const initialMessage = searchParams.get('q');
const [chatId, setChatId] = useState<string | undefined>(id); const [chatId, setChatId] = useState<string | undefined>(id);
@ -585,6 +586,9 @@ const ChatWindow = ({ id }: { id?: string }) => {
currentChatModelProvider || chatModelProvider.provider; currentChatModelProvider || chatModelProvider.provider;
const modelName = currentChatModel || chatModelProvider.name; const modelName = currentChatModel || chatModelProvider.name;
const currentOptimizationMode =
localStorage.getItem('optimizationMode') || optimizationMode;
const res = await fetch('/api/chat', { const res = await fetch('/api/chat', {
method: 'POST', method: 'POST',
headers: { headers: {
@ -600,7 +604,7 @@ const ChatWindow = ({ id }: { id?: string }) => {
chatId: chatId!, chatId: chatId!,
files: fileIds, files: fileIds,
focusMode: focusMode, focusMode: focusMode,
optimizationMode: optimizationMode, optimizationMode: currentOptimizationMode,
history: messageChatHistory, history: messageChatHistory,
chatModel: { chatModel: {
name: modelName, name: modelName,
@ -674,7 +678,42 @@ const ChatWindow = ({ id }: { id?: string }) => {
useEffect(() => { useEffect(() => {
if (isReady && initialMessage && isConfigReady) { if (isReady && initialMessage && isConfigReady) {
// Check if we have an initial query and apply saved search settings
const searchOptimizationMode = localStorage.getItem(
'searchOptimizationMode',
);
const searchChatModelProvider = localStorage.getItem(
'searchChatModelProvider',
);
const searchChatModel = localStorage.getItem('searchChatModel');
// Apply saved optimization mode if valid
if (
searchOptimizationMode &&
(searchOptimizationMode === 'speed' ||
searchOptimizationMode === 'agent')
) {
setOptimizationMode(searchOptimizationMode);
localStorage.setItem('optimizationMode', searchOptimizationMode);
}
// Apply saved chat model if valid
if (searchChatModelProvider && searchChatModel) {
setChatModelProvider({
name: searchChatModel,
provider: searchChatModelProvider,
});
// Also update localStorage to ensure consistency
localStorage.setItem('chatModelProvider', searchChatModelProvider);
localStorage.setItem('chatModel', searchChatModel);
}
sendMessage(initialMessage); sendMessage(initialMessage);
// Remove the query parameter from the URL to prevent re-execution on page reload
const url = new URL(window.location.href);
url.searchParams.delete('q');
router.replace(url.pathname + url.search, { scroll: false });
} }
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, [isConfigReady, isReady, initialMessage]); }, [isConfigReady, isReady, initialMessage]);

View file

@ -164,7 +164,14 @@ const MessageInput = ({
<div className="flex flex-row items-center space-x-2"> <div className="flex flex-row items-center space-x-2">
<ModelSelector <ModelSelector
selectedModel={selectedModel} selectedModel={selectedModel}
setSelectedModel={setSelectedModel} setSelectedModel={(selectedModel) => {
setSelectedModel(selectedModel);
localStorage.setItem(
'chatModelProvider',
selectedModel.provider,
);
localStorage.setItem('chatModel', selectedModel.model);
}}
/> />
<SystemPromptSelector <SystemPromptSelector
selectedPromptIds={systemPromptIds} selectedPromptIds={systemPromptIds}
@ -172,7 +179,10 @@ const MessageInput = ({
/> />
<Optimization <Optimization
optimizationMode={optimizationMode} optimizationMode={optimizationMode}
setOptimizationMode={setOptimizationMode} setOptimizationMode={(optimizationMode) => {
setOptimizationMode(optimizationMode);
localStorage.setItem('optimizationMode', optimizationMode);
}}
/> />
{loading ? ( {loading ? (
<button <button

View file

@ -90,8 +90,16 @@ const Attach = ({
> >
{files.length > 1 && ( {files.length > 1 && (
<> <>
<File size={19} className={isDisabled ? 'text-sky-900' : 'text-sky-400'} /> <File
<p className={cn("inline whitespace-nowrap text-xs font-medium", isDisabled ? 'text-sky-900' : 'text-sky-400')}> size={19}
className={isDisabled ? 'text-sky-900' : 'text-sky-400'}
/>
<p
className={cn(
'inline whitespace-nowrap text-xs font-medium',
isDisabled ? 'text-sky-900' : 'text-sky-400',
)}
>
{files.length} files {files.length} files
</p> </p>
</> </>
@ -99,8 +107,16 @@ const Attach = ({
{files.length === 1 && ( {files.length === 1 && (
<> <>
<File size={18} className={isDisabled ? 'text-sky-900' : 'text-sky-400'} /> <File
<p className={cn("text-xs font-medium", isDisabled ? 'text-sky-900' : 'text-sky-400')}> size={18}
className={isDisabled ? 'text-sky-900' : 'text-sky-400'}
/>
<p
className={cn(
'text-xs font-medium',
isDisabled ? 'text-sky-900' : 'text-sky-400',
)}
>
{files[0].fileName.length > 10 {files[0].fileName.length > 10
? files[0].fileName.replace(/\.\w+$/, '').substring(0, 3) + ? files[0].fileName.replace(/\.\w+$/, '').substring(0, 3) +
'...' + '...' +

View file

@ -25,9 +25,11 @@ interface ProviderModelMap {
const ModelSelector = ({ const ModelSelector = ({
selectedModel, selectedModel,
setSelectedModel, setSelectedModel,
truncateModelName = true,
}: { }: {
selectedModel: { provider: string; model: string } | null; selectedModel: { provider: string; model: string } | null;
setSelectedModel: (model: { provider: string; model: string }) => void; setSelectedModel: (model: { provider: string; model: string }) => void;
truncateModelName?: boolean;
}) => { }) => {
const [providerModels, setProviderModels] = useState<ProviderModelMap>({}); const [providerModels, setProviderModels] = useState<ProviderModelMap>({});
const [providersList, setProvidersList] = useState<string[]>([]); const [providersList, setProvidersList] = useState<string[]>([]);
@ -114,7 +116,13 @@ const ModelSelector = ({
setSelectedModelDisplay(currentModel.displayName); setSelectedModelDisplay(currentModel.displayName);
setSelectedProviderDisplay(provider.displayName); setSelectedProviderDisplay(provider.displayName);
} }
} else {
setSelectedModelDisplay('');
setSelectedProviderDisplay('');
} }
} else {
setSelectedModelDisplay('');
setSelectedProviderDisplay('');
} }
setLoading(false); setLoading(false);
@ -125,7 +133,7 @@ const ModelSelector = ({
}; };
fetchModels(); fetchModels();
}, [selectedModel, setSelectedModel]); }, [selectedModel]);
const toggleProviderExpanded = (provider: string) => { const toggleProviderExpanded = (provider: string) => {
setExpandedProviders((prev) => ({ setExpandedProviders((prev) => ({
@ -144,10 +152,6 @@ const ModelSelector = ({
setSelectedProviderDisplay( setSelectedProviderDisplay(
providerModels[option.provider]?.displayName || option.provider, providerModels[option.provider]?.displayName || option.provider,
); );
// Save to localStorage for persistence
localStorage.setItem('chatModelProvider', option.provider);
localStorage.setItem('chatModel', option.model);
}; };
const getDisplayText = () => { const getDisplayText = () => {
@ -162,9 +166,19 @@ const ModelSelector = ({
{({ open }) => ( {({ open }) => (
<> <>
<div className="relative"> <div className="relative">
<PopoverButton className="group flex items-center justify-center text-black/50 dark:text-white/50 rounded-xl hover:bg-light-secondary dark:hover:bg-dark-secondary active:scale-95 transition duration-200 hover:text-black dark:hover:text-white"> <PopoverButton
type="button"
className="p-2 group flex text-black/50 dark:text-white/50 rounded-xl hover:bg-light-secondary dark:hover:bg-dark-secondary active:scale-95 transition duration-200 hover:text-black dark:hover:text-white"
>
<Cpu size={18} /> <Cpu size={18} />
<span className="mx-2 text-xs font-medium overflow-hidden text-ellipsis whitespace-nowrap max-w-44 hidden lg:block"> <span
className={cn(
'mx-2 text-xs font-medium overflow-hidden text-ellipsis whitespace-nowrap hidden lg:block',
{
'max-w-44': truncateModelName,
},
)}
>
{getDisplayText()} {getDisplayText()}
</span> </span>
<ChevronDown <ChevronDown

View file

@ -46,15 +46,12 @@ const OptimizationModes = [
const Optimization = ({ const Optimization = ({
optimizationMode, optimizationMode,
setOptimizationMode, setOptimizationMode,
showTitle = false,
}: { }: {
optimizationMode: string; optimizationMode: string;
setOptimizationMode: (mode: string) => void; setOptimizationMode: (mode: string) => void;
showTitle?: boolean;
}) => { }) => {
const handleOptimizationChange = (mode: string) => {
setOptimizationMode(mode);
localStorage.setItem('optimizationMode', mode);
};
return ( return (
<Popover className="relative"> <Popover className="relative">
<PopoverButton <PopoverButton
@ -62,16 +59,14 @@ const Optimization = ({
className="p-2 text-black/50 dark:text-white/50 rounded-xl hover:bg-light-secondary dark:hover:bg-dark-secondary active:scale-95 transition duration-200 hover:text-black dark:hover:text-white" className="p-2 text-black/50 dark:text-white/50 rounded-xl hover:bg-light-secondary dark:hover:bg-dark-secondary active:scale-95 transition duration-200 hover:text-black dark:hover:text-white"
> >
<div className="flex flex-row items-center space-x-1"> <div className="flex flex-row items-center space-x-1">
{ {OptimizationModes.find((mode) => mode.key === optimizationMode)
OptimizationModes.find((mode) => mode.key === optimizationMode) ?.icon || <Minimize2 size={20} className="text-gray-400" />}
?.icon {showTitle && (
} <p className="text-xs font-medium">
{/* <p className="text-xs font-medium hidden lg:block"> {OptimizationModes.find((mode) => mode.key === optimizationMode)
{ ?.title || 'Select mode'}
OptimizationModes.find((mode) => mode.key === optimizationMode) </p>
?.title )}
}
</p> */}
<ChevronDown size={20} /> <ChevronDown size={20} />
</div> </div>
</PopoverButton> </PopoverButton>
@ -88,7 +83,7 @@ const Optimization = ({
<div className="flex flex-col gap-2 bg-light-primary dark:bg-dark-primary border rounded-lg border-light-200 dark:border-dark-200 w-max max-w-[300px] p-4 max-h-[200px] md:max-h-none overflow-y-auto"> <div className="flex flex-col gap-2 bg-light-primary dark:bg-dark-primary border rounded-lg border-light-200 dark:border-dark-200 w-max max-w-[300px] p-4 max-h-[200px] md:max-h-none overflow-y-auto">
{OptimizationModes.map((mode, i) => ( {OptimizationModes.map((mode, i) => (
<PopoverButton <PopoverButton
onClick={() => handleOptimizationChange(mode.key)} onClick={() => setOptimizationMode(mode.key)}
key={i} key={i}
className={cn( className={cn(
'p-2 rounded-lg flex flex-col items-start justify-start text-start space-y-1 duration-200 cursor-pointer transition', 'p-2 rounded-lg flex flex-col items-start justify-start text-start space-y-1 duration-200 cursor-pointer transition',

View file

@ -86,7 +86,9 @@ export class AnalyzerAgent {
const urls = [...new Set(state.query.match(urlRegex) || [])]; const urls = [...new Set(state.query.match(urlRegex) || [])];
if (urls.length > 0) { if (urls.length > 0) {
console.log('URLs detected in initial query, routing to URL summarization'); console.log(
'URLs detected in initial query, routing to URL summarization',
);
console.log(`URLs found: ${urls.join(', ')}`); console.log(`URLs found: ${urls.join(', ')}`);
// Emit URL detection event // Emit URL detection event

View file

@ -104,10 +104,10 @@ export class ContentRouterAgent {
}, },
); );
const routerDecision = await structuredLlm.invoke( const routerDecision = (await structuredLlm.invoke(
[...removeThinkingBlocksFromMessages(state.messages), prompt], [...removeThinkingBlocksFromMessages(state.messages), prompt],
{ signal: this.signal }, { signal: this.signal },
); )) as RouterDecision;
console.log(`Router decision: ${routerDecision.decision}`); console.log(`Router decision: ${routerDecision.decision}`);
console.log(`Router reasoning: ${routerDecision.reasoning}`); console.log(`Router reasoning: ${routerDecision.reasoning}`);

View file

@ -145,9 +145,9 @@ export class TaskManagerAgent {
name: 'break_down_tasks', name: 'break_down_tasks',
}); });
const taskBreakdownResult = await structuredLlm.invoke([prompt], { const taskBreakdownResult = (await structuredLlm.invoke([prompt], {
signal: this.signal, signal: this.signal,
}); })) as TaskBreakdown;
console.log('Task breakdown response:', taskBreakdownResult); console.log('Task breakdown response:', taskBreakdownResult);

View file

@ -35,14 +35,22 @@ export class URLSummarizationAgent {
// Use pre-analyzed URLs from ContentRouterAgent // Use pre-analyzed URLs from ContentRouterAgent
const urlsToProcess = state.urlsToSummarize || []; const urlsToProcess = state.urlsToSummarize || [];
const summarizationIntent = state.summarizationIntent || 'process content to help answer the user query'; const summarizationIntent =
state.summarizationIntent ||
'process content to help answer the user query';
if (urlsToProcess.length === 0) { if (urlsToProcess.length === 0) {
console.log('No URLs found for processing, routing back to content router'); console.log(
'No URLs found for processing, routing back to content router',
);
return new Command({ return new Command({
goto: 'content_router', goto: 'content_router',
update: { update: {
messages: [new AIMessage('No URLs found for processing, routing to content router')], messages: [
new AIMessage(
'No URLs found for processing, routing to content router',
),
],
}, },
}); });
} }
@ -119,7 +127,9 @@ export class URLSummarizationAgent {
finalContent = webContent.pageContent; finalContent = webContent.pageContent;
processingType = 'url-direct-content'; processingType = 'url-direct-content';
console.log(`Content is short (${contentLength} chars), using directly without summarization`); console.log(
`Content is short (${contentLength} chars), using directly without summarization`,
);
// Emit direct content usage event // Emit direct content usage event
this.emitter.emit('agent_action', { this.emitter.emit('agent_action', {
@ -138,7 +148,9 @@ export class URLSummarizationAgent {
}); });
} else { } else {
// Content is long, summarize using LLM // Content is long, summarize using LLM
console.log(`Content is long (${contentLength} chars), generating summary`); console.log(
`Content is long (${contentLength} chars), generating summary`,
);
const systemPrompt = this.systemInstructions const systemPrompt = this.systemInstructions
? `${this.systemInstructions}\n\n` ? `${this.systemInstructions}\n\n`

View file

@ -183,23 +183,26 @@ export class WebSearchAgent {
let previewContents: PreviewContent[] = []; let previewContents: PreviewContent[] = [];
// Always take the top 3 results for preview content // Always take the top 3 results for preview content
previewContents.push(...filteredResults.slice(0, 3) previewContents.push(
.map((result) => ({ ...filteredResults.slice(0, 3).map((result) => ({
title: result.title || 'Untitled', title: result.title || 'Untitled',
snippet: result.content || '', snippet: result.content || '',
url: result.url, url: result.url,
})) })),
); );
// Sort by relevance score and take top 12 results for a total of 15 // Sort by relevance score and take top 12 results for a total of 15
previewContents.push(...resultsWithSimilarity.slice(3) previewContents.push(
...resultsWithSimilarity
.slice(3)
.sort((a, b) => b.similarity - a.similarity) .sort((a, b) => b.similarity - a.similarity)
.slice(0, 12) .slice(0, 12)
.map(({ result }) => ({ .map(({ result }) => ({
title: result.title || 'Untitled', title: result.title || 'Untitled',
snippet: result.content || '', snippet: result.content || '',
url: result.url, url: result.url,
}))); })),
);
console.log( console.log(
`Extracted preview content from ${previewContents.length} search results for analysis`, `Extracted preview content from ${previewContents.length} search results for analysis`,

View file

@ -1,4 +1,4 @@
import { ChatOpenAI } from '@langchain/openai'; import { ChatGroq } from '@langchain/groq';
import { getGroqApiKey } from '../config'; import { getGroqApiKey } from '../config';
import { ChatModel } from '.'; import { ChatModel } from '.';
import { BaseChatModel } from '@langchain/core/language_models/chat_models'; import { BaseChatModel } from '@langchain/core/language_models/chat_models';
@ -47,7 +47,7 @@ const generateDisplayName = (modelId: string, ownedBy: string): string => {
let displayName = modelId let displayName = modelId
.replace(/[-_]/g, ' ') .replace(/[-_]/g, ' ')
.split(' ') .split(' ')
.map(word => word.charAt(0).toUpperCase() + word.slice(1)) .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
.join(' '); .join(' ');
// Add owner info for certain models // Add owner info for certain models
@ -62,24 +62,27 @@ const fetchGroqModels = async (apiKey: string): Promise<GroqModel[]> => {
try { try {
const response = await fetch('https://api.groq.com/openai/v1/models', { const response = await fetch('https://api.groq.com/openai/v1/models', {
headers: { headers: {
'Authorization': `Bearer ${apiKey}`, Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json', 'Content-Type': 'application/json',
}, },
}); });
if (!response.ok) { if (!response.ok) {
throw new Error(`Failed to fetch models: ${response.status} ${response.statusText}`); throw new Error(
`Failed to fetch models: ${response.status} ${response.statusText}`,
);
} }
const data: GroqModelsResponse = await response.json(); const data: GroqModelsResponse = await response.json();
// Filter for active chat completion models (exclude audio/whisper models) // Filter for active chat completion models (exclude audio/whisper models)
return data.data.filter(model => return data.data.filter(
(model) =>
model.active && model.active &&
!model.id.includes('whisper') && !model.id.includes('whisper') &&
!model.id.includes('tts') && !model.id.includes('tts') &&
!model.id.includes('guard') && !model.id.includes('guard') &&
!model.id.includes('prompt-guard') !model.id.includes('prompt-guard'),
); );
} catch (error) { } catch (error) {
console.error('Error fetching Groq models:', error); console.error('Error fetching Groq models:', error);
@ -101,13 +104,9 @@ export const loadGroqChatModels = async () => {
availableModels.forEach((model) => { availableModels.forEach((model) => {
chatModels[model.id] = { chatModels[model.id] = {
displayName: generateDisplayName(model.id, model.owned_by), displayName: generateDisplayName(model.id, model.owned_by),
model: new ChatOpenAI({ model: new ChatGroq({
openAIApiKey: groqApiKey, apiKey: groqApiKey,
modelName: model.id, model: model.id,
// temperature: 0.7,
configuration: {
baseURL: 'https://api.groq.com/openai/v1',
},
}) as unknown as BaseChatModel, }) as unknown as BaseChatModel,
}; };
}); });

View file

@ -18,7 +18,7 @@ const RelevanceCheckSchema = z.object({
.describe('Whether the content is relevant to the user query'), .describe('Whether the content is relevant to the user query'),
reason: z reason: z
.string() .string()
.describe('Brief explanation of why content is or isn\'t relevant'), .describe("Brief explanation of why content is or isn't relevant"),
}); });
export const summarizeWebContent = async ( export const summarizeWebContent = async (
@ -39,7 +39,8 @@ export const summarizeWebContent = async (
: ''; : '';
// Determine content length for short-circuit logic // Determine content length for short-circuit logic
const contentToAnalyze = content.pageContent || content.metadata.html || ''; const contentToAnalyze =
content.pageContent || content.metadata.html || '';
const isShortContent = contentToAnalyze.length < 4000; const isShortContent = contentToAnalyze.length < 4000;
if (isShortContent) { if (isShortContent) {
@ -66,14 +67,16 @@ Here is the query you need to answer: ${query}
Here is the content to analyze: Here is the content to analyze:
${contentToAnalyze}`, ${contentToAnalyze}`,
{ signal } { signal },
); );
if (!relevanceResult) { if (!relevanceResult) {
console.error(`No relevance result returned for URL ${url}`); console.error(`No relevance result returned for URL ${url}`);
// Fall through to full summarization as fallback // Fall through to full summarization as fallback
} else if (relevanceResult.relevant) { } else if (relevanceResult.relevant) {
console.log(`Short content for URL "${url}" is relevant: ${relevanceResult.reason}`); console.log(
`Short content for URL "${url}" is relevant: ${relevanceResult.reason}`,
);
return { return {
document: new Document({ document: new Document({
pageContent: content.pageContent, pageContent: content.pageContent,
@ -86,14 +89,20 @@ ${contentToAnalyze}`,
notRelevantReason: undefined, notRelevantReason: undefined,
}; };
} else { } else {
console.log(`Short content for URL "${url}" is not relevant: ${relevanceResult.reason}`); console.log(
`Short content for URL "${url}" is not relevant: ${relevanceResult.reason}`,
);
return { return {
document: null, document: null,
notRelevantReason: relevanceResult.reason || 'Content not relevant to query', notRelevantReason:
relevanceResult.reason || 'Content not relevant to query',
}; };
} }
} catch (error) { } catch (error) {
console.error(`Error checking relevance for short content from URL ${url}:`, error); console.error(
`Error checking relevance for short content from URL ${url}:`,
error,
);
// Fall through to full summarization as fallback // Fall through to full summarization as fallback
} }
} }

466
yarn.lock
View file

@ -20,7 +20,7 @@
formdata-node "^4.3.2" formdata-node "^4.3.2"
node-fetch "^2.6.7" node-fetch "^2.6.7"
"@asamuzakjp/css-color@^3.1.2": "@asamuzakjp/css-color@^3.2.0":
version "3.2.0" version "3.2.0"
resolved "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz" resolved "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz"
integrity sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw== integrity sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==
@ -32,9 +32,9 @@
lru-cache "^10.4.3" lru-cache "^10.4.3"
"@babel/runtime@^7.20.13", "@babel/runtime@^7.3.1": "@babel/runtime@^7.20.13", "@babel/runtime@^7.3.1":
version "7.27.4" version "7.27.6"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.4.tgz" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz"
integrity sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA== integrity sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==
"@cfworker/json-schema@^4.0.2": "@cfworker/json-schema@^4.0.2":
version "4.1.1" version "4.1.1"
@ -692,21 +692,21 @@
zod-to-json-schema "^3.22.5" zod-to-json-schema "^3.22.5"
"@langchain/core@^0.3.57": "@langchain/core@^0.3.57":
version "0.3.57" version "0.3.61"
resolved "https://registry.npmjs.org/@langchain/core/-/core-0.3.57.tgz" resolved "https://registry.npmjs.org/@langchain/core/-/core-0.3.61.tgz"
integrity sha512-jz28qCTKJmi47b6jqhQ6vYRTG5jRpqhtPQjriRTB5wR8mgvzo6xKs0fG/kExS3ZvM79ytD1npBvgf8i19xOo9Q== integrity sha512-4O7fw5SXNSE+uBnathLQrhm3t+7dZGagt/5kt37A+pXw0AkudxEBvveg73sSnpBd9SIz3/Vc7F4k8rCKXGbEDA==
dependencies: dependencies:
"@cfworker/json-schema" "^4.0.2" "@cfworker/json-schema" "^4.0.2"
ansi-styles "^5.0.0" ansi-styles "^5.0.0"
camelcase "6" camelcase "6"
decamelize "1.2.0" decamelize "1.2.0"
js-tiktoken "^1.0.12" js-tiktoken "^1.0.12"
langsmith "^0.3.29" langsmith "^0.3.33"
mustache "^4.2.0" mustache "^4.2.0"
p-queue "^6.6.2" p-queue "^6.6.2"
p-retry "4" p-retry "4"
uuid "^10.0.0" uuid "^10.0.0"
zod "^3.22.4" zod "^3.25.32"
zod-to-json-schema "^3.22.3" zod-to-json-schema "^3.22.3"
"@langchain/google-genai@^0.2.10": "@langchain/google-genai@^0.2.10":
@ -718,6 +718,14 @@
uuid "^11.1.0" uuid "^11.1.0"
zod-to-json-schema "^3.22.4" zod-to-json-schema "^3.22.4"
"@langchain/groq@^0.2.3":
version "0.2.3"
resolved "https://registry.npmjs.org/@langchain/groq/-/groq-0.2.3.tgz"
integrity sha512-r+yjysG36a0IZxTlCMr655Feumfb4IrOyA0jLLq4l7gEhVyMpYXMwyE6evseyU2LRP+7qOPbGRVpGqAIK0MsUA==
dependencies:
groq-sdk "^0.19.0"
zod "^3.22.4"
"@langchain/langgraph-checkpoint@~0.0.18": "@langchain/langgraph-checkpoint@~0.0.18":
version "0.0.18" version "0.0.18"
resolved "https://registry.npmjs.org/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-0.0.18.tgz" resolved "https://registry.npmjs.org/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-0.0.18.tgz"
@ -726,9 +734,9 @@
uuid "^10.0.0" uuid "^10.0.0"
"@langchain/langgraph-sdk@~0.0.32": "@langchain/langgraph-sdk@~0.0.32":
version "0.0.81" version "0.0.84"
resolved "https://registry.npmjs.org/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.81.tgz" resolved "https://registry.npmjs.org/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.84.tgz"
integrity sha512-2Vo6EHp3Wtcz40jbqj8NfZAEO+PY9UE5gIi0bGbnytta6g+ajz8fhFhsdwTGkZo1TtErZ6M23viOWk8Vi6knXQ== integrity sha512-l0PFQyJ+6m6aclORNPPWlcRwgKcXVXsPaJCbCUYFABR3yf4cOpsjhUNR0cJ7+2cS400oieHjGRdGGyO/hbSjhg==
dependencies: dependencies:
"@types/json-schema" "^7.0.15" "@types/json-schema" "^7.0.15"
p-queue "^6.6.2" p-queue "^6.6.2"
@ -737,7 +745,7 @@
"@langchain/langgraph@^0.3.1": "@langchain/langgraph@^0.3.1":
version "0.3.1" version "0.3.1"
resolved "https://registry.yarnpkg.com/@langchain/langgraph/-/langgraph-0.3.1.tgz#12b55eed0ef6b9415c860c63692fd85a8f64e54c" resolved "https://registry.npmjs.org/@langchain/langgraph/-/langgraph-0.3.1.tgz"
integrity sha512-BFa6DmKthPG1znkUhTBBqdza4dojs7QGg6o9V9aptIkWWdBF/UhRbjPvCx6ldkmU2oJRNWZ1BlkiP6RflxxPwA== integrity sha512-BFa6DmKthPG1znkUhTBBqdza4dojs7QGg6o9V9aptIkWWdBF/UhRbjPvCx6ldkmU2oJRNWZ1BlkiP6RflxxPwA==
dependencies: dependencies:
"@langchain/langgraph-checkpoint" "~0.0.18" "@langchain/langgraph-checkpoint" "~0.0.18"
@ -746,28 +754,18 @@
zod "^3.23.8" zod "^3.23.8"
"@langchain/ollama@^0.2.0": "@langchain/ollama@^0.2.0":
version "0.2.0" version "0.2.1"
resolved "https://registry.npmjs.org/@langchain/ollama/-/ollama-0.2.0.tgz" resolved "https://registry.npmjs.org/@langchain/ollama/-/ollama-0.2.1.tgz"
integrity sha512-jLlYFqt+nbhaJKLakk7lRTWHZJ7wHeJLM6yuv4jToQ8zPzpL//372+MjggDoW0mnw8ofysg1T2C6mEJspKJtiA== integrity sha512-9WQ/rJV002n2f/aBPzNKBZU7kJfhqDnaGTWeIKO5gM0wZ+Rb2mfk7psluFIedachwsM/FQ+oIBcViHriaXngzA==
dependencies: dependencies:
ollama "^0.5.12" ollama "^0.5.12"
uuid "^10.0.0" uuid "^10.0.0"
zod "^3.24.1" zod "^3.24.1"
zod-to-json-schema "^3.24.1" zod-to-json-schema "^3.24.1"
"@langchain/openai@>=0.1.0 <0.6.0", "@langchain/openai@>=0.2.0 <0.6.0": "@langchain/openai@>=0.1.0 <0.6.0", "@langchain/openai@>=0.2.0 <0.6.0", "@langchain/openai@^0.5.12":
version "0.5.11"
resolved "https://registry.npmjs.org/@langchain/openai/-/openai-0.5.11.tgz"
integrity sha512-DAp7x+NfjSqDvKVMle8yb85nzz+3ctP7zGJaeRS0vLmvkY9qf/jRkowsM0mcsIiEUKhG/AHzWqvxbhktb/jJ6Q==
dependencies:
js-tiktoken "^1.0.12"
openai "^4.96.0"
zod "^3.22.4"
zod-to-json-schema "^3.22.3"
"@langchain/openai@^0.5.12":
version "0.5.12" version "0.5.12"
resolved "https://registry.yarnpkg.com/@langchain/openai/-/openai-0.5.12.tgz#1ade0f923238f73e0330fd91b988fbcb3d0a5689" resolved "https://registry.npmjs.org/@langchain/openai/-/openai-0.5.12.tgz"
integrity sha512-k7rxBY3ed/HIiMLd6HBqFibsfB0+L6c82H8JgXDqKeyUoACJIi1JaKHXmofmCeF2SBXBU9dog4gEGpHfcUDGUA== integrity sha512-k7rxBY3ed/HIiMLd6HBqFibsfB0+L6c82H8JgXDqKeyUoACJIi1JaKHXmofmCeF2SBXBU9dog4gEGpHfcUDGUA==
dependencies: dependencies:
js-tiktoken "^1.0.12" js-tiktoken "^1.0.12"
@ -795,7 +793,7 @@
resolved "https://registry.npmjs.org/@mozilla/readability/-/readability-0.6.0.tgz" resolved "https://registry.npmjs.org/@mozilla/readability/-/readability-0.6.0.tgz"
integrity sha512-juG5VWh4qAivzTAeMzvY9xs9HY5rAcr2E4I7tiSSCokRFi7XIZCAu92ZkSTsIj1OPceCifL3cpfteP3pDT9/QQ== integrity sha512-juG5VWh4qAivzTAeMzvY9xs9HY5rAcr2E4I7tiSSCokRFi7XIZCAu92ZkSTsIj1OPceCifL3cpfteP3pDT9/QQ==
"@napi-rs/wasm-runtime@^0.2.10": "@napi-rs/wasm-runtime@^0.2.11":
version "0.2.11" version "0.2.11"
resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz#192c1610e1625048089ab4e35bc0649ce478500e" resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz#192c1610e1625048089ab4e35bc0649ce478500e"
integrity sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA== integrity sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==
@ -946,64 +944,64 @@
integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
"@react-aria/focus@^3.20.2": "@react-aria/focus@^3.20.2":
version "3.20.3" version "3.20.4"
resolved "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.3.tgz" resolved "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.4.tgz"
integrity sha512-rR5uZUMSY4xLHmpK/I8bP1V6vUNHFo33gTvrvNUsAKKqvMfa7R2nu5A6v97dr5g6tVH6xzpdkPsOJCWh90H2cw== integrity sha512-E9M/kPYvF1fBZpkRXsKqMhvBVEyTY7vmkHeXLJo6tInKQOjYyYs0VeWlnGnxBjQIAH7J7ZKAORfTFQQHyhoueQ==
dependencies: dependencies:
"@react-aria/interactions" "^3.25.1" "@react-aria/interactions" "^3.25.2"
"@react-aria/utils" "^3.29.0" "@react-aria/utils" "^3.29.1"
"@react-types/shared" "^3.29.1" "@react-types/shared" "^3.30.0"
"@swc/helpers" "^0.5.0" "@swc/helpers" "^0.5.0"
clsx "^2.0.0" clsx "^2.0.0"
"@react-aria/interactions@^3.25.0", "@react-aria/interactions@^3.25.1": "@react-aria/interactions@^3.25.0", "@react-aria/interactions@^3.25.2":
version "3.25.1" version "3.25.2"
resolved "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.1.tgz" resolved "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.2.tgz"
integrity sha512-ntLrlgqkmZupbbjekz3fE/n3eQH2vhncx8gUp0+N+GttKWevx7jos11JUBjnJwb1RSOPgRUFcrluOqBp0VgcfQ== integrity sha512-BWyZXBT4P17b9C9HfOIT2glDFMH9nUCfQF7vZ5FEeXNBudH/8OcSbzyBUG4Dg3XPtkOem5LP59ocaizkl32Tvg==
dependencies: dependencies:
"@react-aria/ssr" "^3.9.8" "@react-aria/ssr" "^3.9.9"
"@react-aria/utils" "^3.29.0" "@react-aria/utils" "^3.29.1"
"@react-stately/flags" "^3.1.1" "@react-stately/flags" "^3.1.2"
"@react-types/shared" "^3.29.1" "@react-types/shared" "^3.30.0"
"@swc/helpers" "^0.5.0" "@swc/helpers" "^0.5.0"
"@react-aria/ssr@^3.9.8": "@react-aria/ssr@^3.9.9":
version "3.9.8" version "3.9.9"
resolved "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.8.tgz" resolved "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.9.tgz"
integrity sha512-lQDE/c9uTfBSDOjaZUJS8xP2jCKVk4zjQeIlCH90xaLhHDgbpCdns3xvFpJJujfj3nI4Ll9K7A+ONUBDCASOuw== integrity sha512-2P5thfjfPy/np18e5wD4WPt8ydNXhij1jwA8oehxZTFqlgVMGXzcWKxTb4RtJrLFsqPO7RUQTiY8QJk0M4Vy2g==
dependencies: dependencies:
"@swc/helpers" "^0.5.0" "@swc/helpers" "^0.5.0"
"@react-aria/utils@^3.29.0": "@react-aria/utils@^3.29.1":
version "3.29.0"
resolved "https://registry.npmjs.org/@react-aria/utils/-/utils-3.29.0.tgz"
integrity sha512-jSOrZimCuT1iKNVlhjIxDkAhgF7HSp3pqyT6qjg/ZoA0wfqCi/okmrMPiWSAKBnkgX93N8GYTLT3CIEO6WZe9Q==
dependencies:
"@react-aria/ssr" "^3.9.8"
"@react-stately/flags" "^3.1.1"
"@react-stately/utils" "^3.10.6"
"@react-types/shared" "^3.29.1"
"@swc/helpers" "^0.5.0"
clsx "^2.0.0"
"@react-stately/flags@^3.1.1":
version "3.1.1"
resolved "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.1.tgz"
integrity sha512-XPR5gi5LfrPdhxZzdIlJDz/B5cBf63l4q6/AzNqVWFKgd0QqY5LvWJftXkklaIUpKSJkIKQb8dphuZXDtkWNqg==
dependencies:
"@swc/helpers" "^0.5.0"
"@react-stately/utils@^3.10.6":
version "3.10.6"
resolved "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.6.tgz"
integrity sha512-O76ip4InfTTzAJrg8OaZxKU4vvjMDOpfA/PGNOytiXwBbkct2ZeZwaimJ8Bt9W1bj5VsZ81/o/tW4BacbdDOMA==
dependencies:
"@swc/helpers" "^0.5.0"
"@react-types/shared@^3.29.1":
version "3.29.1" version "3.29.1"
resolved "https://registry.npmjs.org/@react-types/shared/-/shared-3.29.1.tgz" resolved "https://registry.npmjs.org/@react-aria/utils/-/utils-3.29.1.tgz"
integrity sha512-KtM+cDf2CXoUX439rfEhbnEdAgFZX20UP2A35ypNIawR7/PFFPjQDWyA2EnClCcW/dLWJDEPX2U8+EJff8xqmQ== integrity sha512-yXMFVJ73rbQ/yYE/49n5Uidjw7kh192WNN9PNQGV0Xoc7EJUlSOxqhnpHmYTyO0EotJ8fdM1fMH8durHjUSI8g==
dependencies:
"@react-aria/ssr" "^3.9.9"
"@react-stately/flags" "^3.1.2"
"@react-stately/utils" "^3.10.7"
"@react-types/shared" "^3.30.0"
"@swc/helpers" "^0.5.0"
clsx "^2.0.0"
"@react-stately/flags@^3.1.2":
version "3.1.2"
resolved "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.2.tgz"
integrity sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg==
dependencies:
"@swc/helpers" "^0.5.0"
"@react-stately/utils@^3.10.7":
version "3.10.7"
resolved "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.7.tgz"
integrity sha512-cWvjGAocvy4abO9zbr6PW6taHgF24Mwy/LbQ4TC4Aq3tKdKDntxyD+sh7AkSRfJRT2ccMVaHVv2+FfHThd3PKQ==
dependencies:
"@swc/helpers" "^0.5.0"
"@react-types/shared@^3.30.0":
version "3.30.0"
resolved "https://registry.npmjs.org/@react-types/shared/-/shared-3.30.0.tgz"
integrity sha512-COIazDAx1ncDg046cTJ8SFYsX8aS3lB/08LDnbkH/SkdYrFPWDlXMrO/sUam8j1WWM+PJ+4d1mj7tODIKNiFog==
"@rtsao/scc@^1.1.0": "@rtsao/scc@^1.1.0":
version "1.1.0" version "1.1.0"
@ -1053,16 +1051,16 @@
postcss-selector-parser "6.0.10" postcss-selector-parser "6.0.10"
"@tanstack/react-virtual@^3.13.9": "@tanstack/react-virtual@^3.13.9":
version "3.13.9" version "3.13.10"
resolved "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.9.tgz" resolved "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.10.tgz"
integrity sha512-SPWC8kwG/dWBf7Py7cfheAPOxuvIv4fFQ54PdmYbg7CpXfsKxkucak43Q0qKsxVthhUJQ1A7CIMAIplq4BjVwA== integrity sha512-nvrzk4E9mWB4124YdJ7/yzwou7IfHxlSef6ugCFcBfRmsnsma3heciiiV97sBNxyc3VuwtZvmwXd0aB5BpucVw==
dependencies: dependencies:
"@tanstack/virtual-core" "3.13.9" "@tanstack/virtual-core" "3.13.10"
"@tanstack/virtual-core@3.13.9": "@tanstack/virtual-core@3.13.10":
version "3.13.9" version "3.13.10"
resolved "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.9.tgz" resolved "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.10.tgz"
integrity sha512-3jztt0jpaoJO5TARe2WIHC1UQC3VMLAFUW5mmMo0yrkwtDB2AQP0+sh10BVUpWrnvHjSLvzFizydtEGLCJKFoQ== integrity sha512-sPEDhXREou5HyZYqSWIqdU580rsF6FGeN7vpzijmP3KTiOGjOMZASz4Y6+QKjiFQwhWrR58OP8izYaNGVxvViA==
"@tybys/wasm-util@^0.9.0": "@tybys/wasm-util@^0.9.0":
version "0.9.0" version "0.9.0"
@ -1123,16 +1121,16 @@
form-data "^4.0.0" form-data "^4.0.0"
"@types/node@*", "@types/node@>=13.7.0", "@types/node@^20": "@types/node@*", "@types/node@>=13.7.0", "@types/node@^20":
version "20.17.57" version "20.19.0"
resolved "https://registry.npmjs.org/@types/node/-/node-20.17.57.tgz" resolved "https://registry.npmjs.org/@types/node/-/node-20.19.0.tgz"
integrity sha512-f3T4y6VU4fVQDKVqJV4Uppy8c1p/sVvS3peyqxyWnzkqXFJLRU7Y1Bl7rMS1Qe9z0v4M6McY0Fp9yBsgHJUsWQ== integrity sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q==
dependencies: dependencies:
undici-types "~6.19.2" undici-types "~6.21.0"
"@types/node@^18.11.18": "@types/node@^18.11.18":
version "18.19.110" version "18.19.111"
resolved "https://registry.npmjs.org/@types/node/-/node-18.19.110.tgz" resolved "https://registry.npmjs.org/@types/node/-/node-18.19.111.tgz"
integrity sha512-WW2o4gTmREtSnqKty9nhqF/vA0GKd0V/rbC0OyjSk9Bz6bzlsXKT+i7WDdS/a0z74rfT2PO4dArVCSnapNLA5Q== integrity sha512-90sGdgA+QLJr1F9X79tQuEut0gEYIfkX9pydI4XGRgvFo9g2JWswefI+WUSUHPYVBHYSEfTEqBxA5hQvAZB3Mw==
dependencies: dependencies:
undici-types "~5.26.4" undici-types "~5.26.4"
@ -1144,9 +1142,9 @@
"@types/node" "*" "@types/node" "*"
"@types/prop-types@*": "@types/prop-types@*":
version "15.7.14" version "15.7.15"
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz" resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz"
integrity sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ== integrity sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==
"@types/react-dom@^18": "@types/react-dom@^18":
version "18.3.7" version "18.3.7"
@ -1244,92 +1242,92 @@
resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz"
integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==
"@unrs/resolver-binding-darwin-arm64@1.7.8": "@unrs/resolver-binding-darwin-arm64@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.7.8.tgz" resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.7.12.tgz"
integrity sha512-rsRK8T7yxraNRDmpFLZCWqpea6OlXPNRRCjWMx24O1V86KFol7u2gj9zJCv6zB1oJjtnzWceuqdnCgOipFcJPA== integrity sha512-C//UObaqVcGKpRMMThzBCDxbqM9YQg2dtWy3OwcERLu+qzLa781AqvGdgqwqakRO+cWCK6dl75ebAcsSozmARg==
"@unrs/resolver-binding-darwin-x64@1.7.8": "@unrs/resolver-binding-darwin-x64@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.7.8.tgz#d095a6c941b2d7892179c3afbd7c34e2416094fd" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.7.12.tgz#4dad7ad7b3fd745ec7169373387aab1dc0902a3d"
integrity sha512-16yEMWa+Olqkk8Kl6Bu0ltT5OgEedkSAsxcz1B3yEctrDYp3EMBu/5PPAGhWVGnwhtf3hNe3y15gfYBAjOv5tQ== integrity sha512-eRXO0uPaZtWIogCeVlpSCfzKr3ZJynQl3IRzhFucrA+efdjAylS+ZemWFfnhGbQgWv4lItKCfCpxGuZsosudWw==
"@unrs/resolver-binding-freebsd-x64@1.7.8": "@unrs/resolver-binding-freebsd-x64@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.7.8.tgz#0330e52103c400d0c9d5d27050bfda39c40ccae2" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.7.12.tgz#8cd285da4b6a98b8a3fba8cf1673adaa971cf6ae"
integrity sha512-ST4uqF6FmdZQgv+Q73FU1uHzppeT4mhX3IIEmHlLObrv5Ep50olWRz0iQ4PWovadjHMTAmpuJAGaAuCZYb7UAQ== integrity sha512-VUdT2CwMoyWy9Jolavu2fWTcusiA9FePjSyMLIrZvAeC2PMnM9msF3HJkO/j0S2fZkzgZy+UBBZjJwG0Mfds0g==
"@unrs/resolver-binding-linux-arm-gnueabihf@1.7.8": "@unrs/resolver-binding-linux-arm-gnueabihf@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.7.8.tgz#dcc2c61b6c49886c225ad25ab3e73bbaf768d906" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.7.12.tgz#feb25431a2b9c62f2404f5f49963523a9bed18e2"
integrity sha512-Z/A/4Rm2VWku2g25C3tVb986fY6unx5jaaCFpx1pbAj0OKkyuJ5wcQLHvNbIcJ9qhiYwXfrkB7JNlxrAbg7YFg== integrity sha512-hbWi7U2UlglpT1LQZbm7He3YpSRYGoHwFMMKC+oCD9UzPImFJZOFrQUL4FQVsOaxxz0ggWK1Q/ZcK23LpG2STg==
"@unrs/resolver-binding-linux-arm-musleabihf@1.7.8": "@unrs/resolver-binding-linux-arm-musleabihf@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.7.8.tgz#269f5d78cbfdfe3591005c7602bf9c559a6f6928" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.7.12.tgz#76fc53f47a0cad563d4c00c2346fe25a4e346730"
integrity sha512-HN0p7o38qKmDo3bZUiQa6gP7Qhf0sKgJZtRfSHi6JL2Gi4NaUVF0EO1sQ1RHbeQ4VvfjUGMh3QE5dxEh06BgQQ== integrity sha512-KBblhYFUhUTVSkTKxxaw4cFS3qgQMs2oM1DUSNrsFX7uRBG6SxXkLXGKua+uWq+G0vT7pp30BPXJ7c4I6vRGcw==
"@unrs/resolver-binding-linux-arm64-gnu@1.7.8": "@unrs/resolver-binding-linux-arm64-gnu@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.7.8.tgz#43c30aeecdb1d36aa2201196568209c46d99c234" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.7.12.tgz#5d7e6ee9fb9e985bdb9833aefda269267b226a75"
integrity sha512-HsoVqDBt9G69AN0KWeDNJW+7i8KFlwxrbbnJffgTGpiZd6Jw+Q95sqkXp8y458KhKduKLmXfVZGnKBTNxAgPjw== integrity sha512-A5jGMNiY5F/KyeLkph5/gaNXNs/P/FUJvhKIP79mIOn9KUqjqx+UbhZQ1UrRuGHsh0gXPVSnu2UJdhnvJsnEyw==
"@unrs/resolver-binding-linux-arm64-musl@1.7.8": "@unrs/resolver-binding-linux-arm64-musl@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.7.8.tgz#fc6cc665195a1d8f276cc3a83f4956ee3c1c0a6b" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.7.12.tgz#6fdfafe4ff11cf43f18fe0ab8e9f9c98dc757d3d"
integrity sha512-VfR2yTDUbUvn+e/Aw22CC9fQg9zdShHAfwWctNBdOk7w9CHWl2OtYlcMvjzMAns8QxoHQoqn3/CEnZ4Ts7hfrA== integrity sha512-Gv/duj5YStydJTNu2vSHFbSrRimpA6mnVmAnKTe1xMfhqDCm10EP/U6u7NII1jAjbpaRmqtnvFhtndzGxDyfhA==
"@unrs/resolver-binding-linux-ppc64-gnu@1.7.8": "@unrs/resolver-binding-linux-ppc64-gnu@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.7.8.tgz#bde19d505eab59ce82e812e8824c9d3e17ca71cf" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.7.12.tgz#f1f36dc330d9410984c319fbcb982f31c180dc85"
integrity sha512-xUauVQNz4uDgs4UJJiUAwMe3N0PA0wvtImh7V0IFu++UKZJhssXbKHBRR4ecUJpUHCX2bc4Wc8sGsB6P+7BANg== integrity sha512-BTjdqhVVl1Q8dZCdNkVXZrfFyqNRdWizFuY5N0eHP7zgtNmqwJ3F/eJF/60GnabIcmWHvWvugby2VqHZtW/bQw==
"@unrs/resolver-binding-linux-riscv64-gnu@1.7.8": "@unrs/resolver-binding-linux-riscv64-gnu@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.7.8.tgz#9b96ddfc4e88720d795629ad3c0cd7a2bcc4afa8" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.7.12.tgz#a2e3acadc3731cdd55d26bc57c870ae8b16c4313"
integrity sha512-GqyIB+CuSHGhhc8ph5RrurtNetYJjb6SctSHafqmdGcRuGi6uyTMR8l18hMEhZFsXdFMc/MpInPLvmNV22xn+A== integrity sha512-YkjQuWGi1o174Xz2R+oQOOYQgViCwkSdpsHGmLr0QRYgQclJCQ4ug6qT+EGTYi1g4994q3BAaFVgV0GzEM1YSQ==
"@unrs/resolver-binding-linux-riscv64-musl@1.7.8": "@unrs/resolver-binding-linux-riscv64-musl@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.7.8.tgz#287690c24f2b8106531968d22ad277af13bca57a" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.7.12.tgz#cf940218bf0fbcd5dc6b7a5ece75b67d16bd4bcd"
integrity sha512-eEU3rWIFRv60xaAbtsgwHNWRZGD7cqkpCvNtio/f1TjEE3HfKLzPNB24fA9X/8ZXQrGldE65b7UKK3PmO4eWIQ== integrity sha512-9ud5x0qYBuk1rGdGzdjKQq/o7tObgI3IdjaufxKLD6kJIQi6vqww1mfoJklYw2OR5JXOWc6WLNKHa0Rr9aFZsw==
"@unrs/resolver-binding-linux-s390x-gnu@1.7.8": "@unrs/resolver-binding-linux-s390x-gnu@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.7.8.tgz#b58bf7ed52f13753c9240fc59c2bd21cc348ee4e" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.7.12.tgz#9efb533f226da434709bd43180ff7718b88816e9"
integrity sha512-GVLI0f4I4TlLqEUoOFvTWedLsJEdvsD0+sxhdvQ5s+N+m2DSynTs8h9jxR0qQbKlpHWpc2Ortz3z48NHRT4l+w== integrity sha512-3CNVBpgsvZ4Vrr18JAxQ8Qxz+k4PqTJR05/xn5Tczs9jFEuxPDxZKFskv9QnK3flJtx+ur9MayiTGgFZQAa7hA==
"@unrs/resolver-binding-linux-x64-gnu@1.7.8": "@unrs/resolver-binding-linux-x64-gnu@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.7.8.tgz#578efe1a96f0e737ec9c65dd9211aff9c4bd4b99" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.7.12.tgz#fc3094d404838720ab04b9c34ecf3b3de1211dc6"
integrity sha512-GX1pZ/4ncUreB0Rlp1l7bhKAZ8ZmvDIgXdeb5V2iK0eRRF332+6gRfR/r5LK88xfbtOpsmRHU6mQ4N8ZnwvGEA== integrity sha512-bPACcY7lEp3M8IItjXEppQEsQ2N54a1aLb1yCWD16lccl8OG9aXQvji9x9VVcmdqR4JV4oWXzr0uIrZ+oFNvOw==
"@unrs/resolver-binding-linux-x64-musl@1.7.8": "@unrs/resolver-binding-linux-x64-musl@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.7.8.tgz#1f1aab9d047a2ab8830a2bb65dee950d7583518b" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.7.12.tgz#d224c9c531ae53db1d1482f59175ce554cc51522"
integrity sha512-n1N84MnsvDupzVuYqJGj+2pb9s8BI1A5RgXHvtVFHedGZVBCFjDpQVRlmsFMt6xZiKwDPaqsM16O/1isCUGt7w== integrity sha512-86WuRbj+0tK3qWPthfsR952CHxE23lDTjbKfHOczIkjRvKP/ggAzaiNMOEljxB5iel4HhGTQZBp1lx61aw2q/g==
"@unrs/resolver-binding-wasm32-wasi@1.7.8": "@unrs/resolver-binding-wasm32-wasi@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.7.8.tgz#85b627a4bf93d439df5e5c77c135f98699c1aa35" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.7.12.tgz#604ba5dd33678df88c3537bea98e1f6ace96ccf4"
integrity sha512-x94WnaU5g+pCPDVedfnXzoG6lCOF2xFGebNwhtbJCWfceE94Zj8aysSxdxotlrZrxnz5D3ijtyFUYtpz04n39Q== integrity sha512-RzWV0OyeARtKRNHSbVZyj869P+WHzT2OFEgigs+5qEIM8X3QzbQ90Ye/1hCvgu0zi/cDCXtKWp8Utr1Oym2UIA==
dependencies: dependencies:
"@napi-rs/wasm-runtime" "^0.2.10" "@napi-rs/wasm-runtime" "^0.2.11"
"@unrs/resolver-binding-win32-arm64-msvc@1.7.8": "@unrs/resolver-binding-win32-arm64-msvc@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.7.8.tgz#3acb45dbf6561c7c05d2fb554e36d2c46502bf1c" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.7.12.tgz#a60f4256560350ada479b39da0e2db22ecd85d9f"
integrity sha512-vst2u8EJZ5L6jhJ6iLis3w9rg16aYqRxQuBAMYQRVrPMI43693hLP7DuqyOBRKgsQXy9/jgh204k0ViHkqQgdg== integrity sha512-s9FdWj2QFT6PLNY/jPPmd7jF1Fn2HNSuLbZqUpdcSaMdeBGaDvy2C/eBYgGhrK7g8kIYUecT1LdT+SuDs6h+YA==
"@unrs/resolver-binding-win32-ia32-msvc@1.7.8": "@unrs/resolver-binding-win32-ia32-msvc@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.7.8.tgz#63628b5e12d14dd6275ec499398272ed5c272479" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.7.12.tgz#918d19beb57d6475ac843092d3917910352c5205"
integrity sha512-yb3LZOLMFqnA+/ShlE1E5bpYPGDsA590VHHJPB+efnyowT776GJXBoh82em6O9WmYBUq57YblGTcMYAFBm72HA== integrity sha512-Fo4Op3Il/6HZ8Gm+YhqBkRZpTGe/QJZWAsCB/CLYBDqJ2NjXptgFsuIvlgXv95+WUkoTw6ifRgxE9gwtcAk5YA==
"@unrs/resolver-binding-win32-x64-msvc@1.7.8": "@unrs/resolver-binding-win32-x64-msvc@1.7.12":
version "1.7.8" version "1.7.12"
resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.7.8.tgz#ee29c817f285ccb328b206356eeee588a7388d2b" resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.7.12.tgz#a8b737e111b72608e7abebe8d6c223d07304e687"
integrity sha512-hHKFx+opG5BA3/owMXon8ypwSotBGTdblG6oda/iOu9+OEYnk0cxD2uIcGyGT8jCK578kV+xMrNxqbn8Zjlpgw== integrity sha512-00cVr73Qizmx7qycr9aO5NBofoAHuQIhNsuqj+I2Bun/yMddLfpXk86K3GWj096jXLzk0u/77u3qUTJPhuYWiw==
"@xenova/transformers@^2.17.2": "@xenova/transformers@^2.17.2":
version "2.17.2" version "2.17.2"
@ -1360,9 +1358,9 @@ acorn-jsx@^5.3.2:
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.9.0: acorn@^8.9.0:
version "8.14.1" version "8.15.0"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz" resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz"
integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
agent-base@^7.1.0, agent-base@^7.1.2: agent-base@^7.1.0, agent-base@^7.1.2:
version "7.1.3" version "7.1.3"
@ -1771,9 +1769,9 @@ camelcase@6:
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001718: caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001718:
version "1.0.30001720" version "1.0.30001721"
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001720.tgz" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001721.tgz"
integrity sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g== integrity sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==
chalk@^4.0.0, chalk@^4.1.2: chalk@^4.0.0, chalk@^4.1.2:
version "4.1.2" version "4.1.2"
@ -1812,7 +1810,7 @@ cheerio-select@^2.1.0:
cheerio@^1.1.0: cheerio@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.1.0.tgz#87b9bec6dd3696e405ea79da7d2749d8308b0953" resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.1.0.tgz"
integrity sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ== integrity sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==
dependencies: dependencies:
cheerio-select "^2.1.0" cheerio-select "^2.1.0"
@ -1971,9 +1969,9 @@ concat-map@0.0.1:
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
console-table-printer@^2.12.1: console-table-printer@^2.12.1:
version "2.14.1" version "2.14.2"
resolved "https://registry.npmjs.org/console-table-printer/-/console-table-printer-2.14.1.tgz" resolved "https://registry.npmjs.org/console-table-printer/-/console-table-printer-2.14.2.tgz"
integrity sha512-Nvz+lt5BRvG8qJ8KrqhK0rtbE4hbi0oj4G5/2ig7pbMXBCvy+zcHEZbyIdidl2GEL0AwtxYX4Zc3C28fFSPXyA== integrity sha512-TyXKHIzSBFAuxRpgB4MA3RhFVzghJGpG8/eHmpWGm/2ezdswpbdVkxN7xTvDM3snIDKc8UrUs2NiR4LFjv/F1w==
dependencies: dependencies:
simple-wcswidth "^1.0.1" simple-wcswidth "^1.0.1"
@ -2015,11 +2013,11 @@ cssesc@^3.0.0:
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
cssstyle@^4.2.1: cssstyle@^4.2.1:
version "4.3.1" version "4.4.0"
resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.1.tgz" resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-4.4.0.tgz"
integrity sha512-ZgW+Jgdd7i52AaLYCriF8Mxqft0gD/R9i9wi6RWBhs1pqdPEzPjym7rvRKi397WmQFf3SlyUsszhw+VVCbx79Q== integrity sha512-W0Y2HOXlPkb2yaKrCVRjinYKciu/qSLEmK0K9mcfDei3zwlnHFEHAs/Du3cIRwPqY+J4JsiBzUjoHyc8RsJ03A==
dependencies: dependencies:
"@asamuzakjp/css-color" "^3.1.2" "@asamuzakjp/css-color" "^3.2.0"
rrweb-cssom "^0.8.0" rrweb-cssom "^0.8.0"
csstype@^3.0.2: csstype@^3.0.2:
@ -2233,9 +2231,9 @@ eastasianwidth@^0.2.0:
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
electron-to-chromium@^1.5.160: electron-to-chromium@^1.5.160:
version "1.5.162" version "1.5.166"
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.162.tgz" resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.166.tgz"
integrity sha512-hQA+Zb5QQwoSaXJWEAGEw1zhk//O7qDzib05Z4qTqZfNju/FAkrm5ZInp0JbTp4Z18A6bilopdZWEYrFSsfllA== integrity sha512-QPWqHL0BglzPYyJJ1zSSmwFFL6MFXhbACOCcsCdUMCkzPdS9/OIBVxg516X/Ado2qwAq8k0nJJ7phQPCqiaFAw==
emoji-regex@^8.0.0: emoji-regex@^8.0.0:
version "8.0.0" version "8.0.0"
@ -2253,9 +2251,9 @@ enabled@2.0.x:
integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
encoding-sniffer@^0.2.0: encoding-sniffer@^0.2.0:
version "0.2.0" version "0.2.1"
resolved "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz" resolved "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz"
integrity sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg== integrity sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==
dependencies: dependencies:
iconv-lite "^0.6.3" iconv-lite "^0.6.3"
whatwg-encoding "^3.1.1" whatwg-encoding "^3.1.1"
@ -2273,9 +2271,9 @@ entities@^4.2.0, entities@^4.4.0:
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
entities@^6.0.0: entities@^6.0.0:
version "6.0.0" version "6.0.1"
resolved "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz" resolved "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz"
integrity sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw== integrity sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==
env-paths@^3.0.0: env-paths@^3.0.0:
version "3.0.0" version "3.0.0"
@ -2854,13 +2852,14 @@ form-data-encoder@1.7.2:
integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A== integrity sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==
form-data@^4.0.0: form-data@^4.0.0:
version "4.0.2" version "4.0.3"
resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz" resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz"
integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== integrity sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==
dependencies: dependencies:
asynckit "^0.4.0" asynckit "^0.4.0"
combined-stream "^1.0.8" combined-stream "^1.0.8"
es-set-tostringtag "^2.1.0" es-set-tostringtag "^2.1.0"
hasown "^2.0.2"
mime-types "^2.1.12" mime-types "^2.1.12"
format@^0.2.0: format@^0.2.0:
@ -3067,6 +3066,19 @@ graphql@^16.10.0:
resolved "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz" resolved "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz"
integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw== integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==
groq-sdk@^0.19.0:
version "0.19.0"
resolved "https://registry.npmjs.org/groq-sdk/-/groq-sdk-0.19.0.tgz"
integrity sha512-vdh5h7ORvwvOvutA80dKF81b0gPWHxu6K/GOJBOM0n6p6CSqAVLhFfeS79Ef0j/yCycDR09jqY7jkYz9dLiS6w==
dependencies:
"@types/node" "^18.11.18"
"@types/node-fetch" "^2.6.4"
abort-controller "^3.0.0"
agentkeepalive "^4.2.1"
form-data-encoder "1.7.2"
formdata-node "^4.3.2"
node-fetch "^2.6.7"
guid-typescript@^1.0.9: guid-typescript@^1.0.9:
version "1.0.9" version "1.0.9"
resolved "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz" resolved "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz"
@ -3161,7 +3173,7 @@ html-to-text@^9.0.5:
htmlparser2@^10.0.0: htmlparser2@^10.0.0:
version "10.0.0" version "10.0.0"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-10.0.0.tgz#77ad249037b66bf8cc99c6e286ef73b83aeb621d" resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz"
integrity sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g== integrity sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==
dependencies: dependencies:
domelementtype "^2.3.0" domelementtype "^2.3.0"
@ -3656,10 +3668,10 @@ kuler@^2.0.0:
zod "^3.22.4" zod "^3.22.4"
zod-to-json-schema "^3.22.3" zod-to-json-schema "^3.22.3"
langsmith@^0.3.29: langsmith@^0.3.29, langsmith@^0.3.33:
version "0.3.30" version "0.3.37"
resolved "https://registry.npmjs.org/langsmith/-/langsmith-0.3.30.tgz" resolved "https://registry.npmjs.org/langsmith/-/langsmith-0.3.37.tgz"
integrity sha512-ZaiaOx9MysuSQlAkRw8mjm7iqhrlF7HI0LCTLxiNBEWBPywdkgI7UnN+s7KtlRiM0tP1cOLm+dQY++Fi33jkPQ== integrity sha512-aDFM+LbT01gP8hsJNs4QJjmbRNfoifqhpCSpk8j4k/V8wejEgvgATbgj9W9DQsfQFdtfwx+8G48sK5/0PqQisg==
dependencies: dependencies:
"@types/uuid" "^10.0.0" "@types/uuid" "^10.0.0"
chalk "^4.1.2" chalk "^4.1.2"
@ -4226,7 +4238,7 @@ parse-entities@^2.0.0:
parse5-htmlparser2-tree-adapter@^7.1.0: parse5-htmlparser2-tree-adapter@^7.1.0:
version "7.1.0" version "7.1.0"
resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz#b5a806548ed893a43e24ccb42fbb78069311e81b" resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz"
integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g== integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==
dependencies: dependencies:
domhandler "^5.0.3" domhandler "^5.0.3"
@ -5004,9 +5016,9 @@ streamsearch@^1.1.0:
integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
streamx@^2.15.0, streamx@^2.21.0: streamx@^2.15.0, streamx@^2.21.0:
version "2.22.0" version "2.22.1"
resolved "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz" resolved "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz"
integrity sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw== integrity sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==
dependencies: dependencies:
fast-fifo "^1.3.2" fast-fifo "^1.3.2"
text-decoder "^1.1.0" text-decoder "^1.1.0"
@ -5468,40 +5480,40 @@ undici-types@~5.26.4:
resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz"
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
undici-types@~6.19.2: undici-types@~6.21.0:
version "6.19.8" version "6.21.0"
resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz" resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz"
integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
undici@^7.10.0: undici@^7.10.0:
version "7.10.0" version "7.10.0"
resolved "https://registry.yarnpkg.com/undici/-/undici-7.10.0.tgz#8ae17a976acc6593b13c9ff3342840bea9b24670" resolved "https://registry.npmjs.org/undici/-/undici-7.10.0.tgz"
integrity sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw== integrity sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==
unrs-resolver@^1.6.2: unrs-resolver@^1.6.2:
version "1.7.8" version "1.7.12"
resolved "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.7.8.tgz" resolved "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.7.12.tgz"
integrity sha512-2zsXwyOXmCX9nGz4vhtZRYhe30V78heAv+KDc21A/KMdovGHbZcixeD5JHEF0DrFXzdytwuzYclcPbvp8A3Jlw== integrity sha512-pfcdDxrVoUc5ZB3VCVJNSWbs63lgQVYLVw4k/rCr8Smi/V2Sxi1odEckVq6Zf803OtbYia1+YpiGCZoODfWLsQ==
dependencies: dependencies:
napi-postinstall "^0.2.2" napi-postinstall "^0.2.2"
optionalDependencies: optionalDependencies:
"@unrs/resolver-binding-darwin-arm64" "1.7.8" "@unrs/resolver-binding-darwin-arm64" "1.7.12"
"@unrs/resolver-binding-darwin-x64" "1.7.8" "@unrs/resolver-binding-darwin-x64" "1.7.12"
"@unrs/resolver-binding-freebsd-x64" "1.7.8" "@unrs/resolver-binding-freebsd-x64" "1.7.12"
"@unrs/resolver-binding-linux-arm-gnueabihf" "1.7.8" "@unrs/resolver-binding-linux-arm-gnueabihf" "1.7.12"
"@unrs/resolver-binding-linux-arm-musleabihf" "1.7.8" "@unrs/resolver-binding-linux-arm-musleabihf" "1.7.12"
"@unrs/resolver-binding-linux-arm64-gnu" "1.7.8" "@unrs/resolver-binding-linux-arm64-gnu" "1.7.12"
"@unrs/resolver-binding-linux-arm64-musl" "1.7.8" "@unrs/resolver-binding-linux-arm64-musl" "1.7.12"
"@unrs/resolver-binding-linux-ppc64-gnu" "1.7.8" "@unrs/resolver-binding-linux-ppc64-gnu" "1.7.12"
"@unrs/resolver-binding-linux-riscv64-gnu" "1.7.8" "@unrs/resolver-binding-linux-riscv64-gnu" "1.7.12"
"@unrs/resolver-binding-linux-riscv64-musl" "1.7.8" "@unrs/resolver-binding-linux-riscv64-musl" "1.7.12"
"@unrs/resolver-binding-linux-s390x-gnu" "1.7.8" "@unrs/resolver-binding-linux-s390x-gnu" "1.7.12"
"@unrs/resolver-binding-linux-x64-gnu" "1.7.8" "@unrs/resolver-binding-linux-x64-gnu" "1.7.12"
"@unrs/resolver-binding-linux-x64-musl" "1.7.8" "@unrs/resolver-binding-linux-x64-musl" "1.7.12"
"@unrs/resolver-binding-wasm32-wasi" "1.7.8" "@unrs/resolver-binding-wasm32-wasi" "1.7.12"
"@unrs/resolver-binding-win32-arm64-msvc" "1.7.8" "@unrs/resolver-binding-win32-arm64-msvc" "1.7.12"
"@unrs/resolver-binding-win32-ia32-msvc" "1.7.8" "@unrs/resolver-binding-win32-ia32-msvc" "1.7.12"
"@unrs/resolver-binding-win32-x64-msvc" "1.7.8" "@unrs/resolver-binding-win32-x64-msvc" "1.7.12"
update-browserslist-db@^1.1.3: update-browserslist-db@^1.1.3:
version "1.1.3" version "1.1.3"
@ -5832,7 +5844,7 @@ zod-to-json-schema@^3.22.3, zod-to-json-schema@^3.22.4, zod-to-json-schema@^3.22
resolved "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz" resolved "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz"
integrity sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g== integrity sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==
zod@^3.22.3, zod@^3.22.4, zod@^3.23.8, zod@^3.24.1: zod@^3.22.3, zod@^3.22.4, zod@^3.23.8, zod@^3.24.1, zod@^3.25.32:
version "3.25.49" version "3.25.57"
resolved "https://registry.npmjs.org/zod/-/zod-3.25.49.tgz" resolved "https://registry.npmjs.org/zod/-/zod-3.25.57.tgz"
integrity sha512-JMMPMy9ZBk3XFEdbM3iL1brx4NUSejd6xr3ELrrGEfGb355gjhiAWtG3K5o+AViV/3ZfkIrCzXsZn6SbLwTR8Q== integrity sha512-6tgzLuwVST5oLUxXTmBqoinKMd3JeesgbgseXeFasKKj8Q1FCZrHnbqJOyiEvr4cVAlbug+CgIsmJ8cl/pU5FA==