🎨 feat: Adds Image Gen Docs, fix broken links, usage stats, missing .env vars, formatting issues, bump Next.js (#288)

* docs: enhance API key setup instructions for clarity

* docs: update section title for API key setup clarity

* docs: add comprehensive guide for OpenAI image generation and editing tools

* docs: clarify Stable Diffusion section and update link in Image Generation overview

* docs: add Flux cloud generator configuration details and environment variables

* fix: Firebase CDN configuration link

* docs: enhance fileStrategy section with CDN options and notes

* docs: enhance Image Generation section with improved structure and pricing details

* docs: add Code Interpreter section with environment variable details and enterprise plan notes

* fix: formatting

* chore: bump next

* fix: correct markdown formatting for artifact example in agents documentation

* docs: add deprecation notices for tools, plugins, presets, and enhance image generation section

* feat: implement GitHub stats API and update Usage component to fetch stars dynamically

* fix: update Docker pulls value in Usage component
This commit is contained in:
Danny Avila
2025-04-25 12:21:27 -04:00
committed by GitHub
parent 4d2deca3f5
commit 54f77a1719
16 changed files with 906 additions and 162 deletions

View File

@@ -1,4 +1,6 @@
// import Image, { type StaticImageData } from 'next/image'
import axios from 'axios'
import { useEffect, useState } from 'react'
import { HomeSection } from './components/HomeSection'
// import Link from 'next/link'
import NumberTicker from '@/components/ui/number-ticker'
@@ -21,20 +23,42 @@ import DateTicker from '@/components/ui/date-ticker'
// },
// ]
const stats = [
{ name: 'GitHub stars', value: 19500 },
{ name: 'Docker pulls', value: 2810000 },
const initialStats = [
{ name: 'GitHub stars', value: 24900 },
{ name: 'Docker pulls', value: 3732800 },
{ name: 'Project started', value: new Date('2023-01-11') },
]
export const Usage = () => (
<HomeSection className="pt-2 sm:pt-2 lg:pt-2 xl:pt-2">
<div className="py-14">
<h2 className="text-center text-lg font-semibold leading-8 mb-8">Usage statistics</h2>
<div className="flex flex-col gap-8">
<div className="relative">
<div className="flex flex-wrap xl:flex-nowrap justify-between">
{/* {users.map((user) => (
export const Usage = () => {
const [stats, setStats] = useState(initialStats)
useEffect(() => {
const fetchGitHubStats = async () => {
try {
const response = await axios.get('/api/github-stats')
if (response.data?.stars) {
setStats((prevStats) =>
prevStats.map((stat) =>
stat.name === 'GitHub stars' ? { ...stat, value: response.data.stars } : stat,
),
)
}
} catch (error) {
console.error('Failed to fetch GitHub stats:', error)
}
}
fetchGitHubStats()
}, [])
return (
<HomeSection className="pt-2 sm:pt-2 lg:pt-2 xl:pt-2">
<div className="py-14">
<h2 className="text-center text-lg font-semibold leading-8 mb-8">Usage statistics</h2>
<div className="flex flex-col gap-8">
<div className="relative">
<div className="flex flex-wrap xl:flex-nowrap justify-between">
{/* {users.map((user) => (
<a
key={user.name}
href={user.href}
@@ -56,26 +80,27 @@ export const Usage = () => (
/>
</a>
))} */}
</div>
</div>
<div className="flex flex-col sm:flex-row justify-around sm:justify-center gap-4 sm:gap-10">
{stats.map((item) => (
<div key={item.name} className="text-center">
<p className="text-xl sm:text-2xl font-bold text-primary/80 font-mono">
{item.name === 'Project started' && item.value instanceof Date ? (
<DateTicker targetDate={item.value} />
) : typeof item.value === 'number' ? (
<NumberTicker value={item.value} />
) : (
item.value.toString()
)}
<span className="ml-1 hidden sm:inline">{'+'}</span>
</p>
<p className="mt-2 text-xs sm:text-sm text-primary/70">{item.name}</p>
</div>
))}
</div>
</div>
<div className="flex flex-col sm:flex-row justify-around sm:justify-center gap-4 sm:gap-10">
{stats.map((item) => (
<div key={item.name} className="text-center">
<p className="text-xl sm:text-2xl font-bold text-primary/80 font-mono">
{item.name === 'Project started' && item.value instanceof Date ? (
<DateTicker targetDate={item.value} />
) : typeof item.value === 'number' ? (
<NumberTicker value={item.value} />
) : (
item.value.toString()
)}
<span className="ml-1 hidden sm:inline">{'+'}</span>
</p>
<p className="mt-2 text-xs sm:text-sm text-primary/70">{item.name}</p>
</div>
))}
</div>
</div>
</div>
</HomeSection>
)
</HomeSection>
)
}

2
next-env.d.ts vendored
View File

@@ -2,4 +2,4 @@
/// <reference types="next/image-types/global" />
// NOTE: This file should not be edited
// see https://nextjs.org/docs/basic-features/typescript for more information.
// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information.

View File

@@ -74,9 +74,9 @@ const withNextra = nextra({
const nextraConfig = withNextra({
experimental: {
esmExternals: 'loose',
serverComponentsExternalPackages: ['mongoose'],
scrollRestoration: true,
},
serverExternalPackages: ['mongoose'],
transpilePackages: ['react-tweet', 'react-syntax-highlighter', 'geist'],
images: {
remotePatterns: [

View File

@@ -49,7 +49,7 @@
"eslint-config-next": "14.2.3",
"eslint-plugin-unicorn": "^53.0.0",
"framer-motion": "^11.1.9",
"geist": "^1.3.0",
"geist": "^1.3.1",
"gpt3-tokenizer": "^1.1.5",
"install": "^0.13.0",
"js-yaml": "^4.1.0",
@@ -57,8 +57,8 @@
"lucide-react": "^0.378.0",
"mongodb": "^6.6.1",
"mongoose": "^8.3.4",
"next": "^14.2.3",
"next-auth": "^4.24.7",
"next": "^15.3.1",
"next-auth": "^4.24.11",
"next-sitemap": "^4.2.3",
"nextra": "3.0.0-alpha.22",
"nextra-theme-docs": "3.0.0-alpha.22",

38
pages/api/github-stats.ts Normal file
View File

@@ -0,0 +1,38 @@
import type { NextApiRequest, NextApiResponse } from 'next'
import axios from 'axios'
type GitHubResponse = {
stargazers_count: number
}
type ResponseData = {
stars: number
error?: string
}
export default async function handler(req: NextApiRequest, res: NextApiResponse<ResponseData>) {
try {
// GitHub API endpoint for the LibreChat repository
const response = await axios.get<GitHubResponse>(
'https://api.github.com/repos/danny-avila/LibreChat',
{
headers: {
Accept: 'application/vnd.github.v3+json',
// Use GitHub token if available in environment variables
...(process.env.GITHUB_TOKEN && {
Authorization: `token ${process.env.GITHUB_TOKEN}`,
}),
},
},
)
// Cache the response for 1 hour (3600 seconds)
res.setHeader('Cache-Control', 's-maxage=3600, stale-while-revalidate')
// Return the star count
return res.status(200).json({ stars: response.data.stargazers_count })
} catch (error) {
console.error('Error fetching GitHub stats:', error)
return res.status(500).json({ stars: 0, error: 'Failed to fetch GitHub stats' })
}
}

View File

@@ -444,6 +444,41 @@ Remember to replace placeholder text with actual prompts or instructions and pro
> Note: if you have PROXY set, it will be used for DALL-E calls also, which is universal for the app.
#### OpenAI Image Tools:
**API Keys:**
<OptionTable
options={[
['IMAGE_GEN_OAI_API_KEY', 'string', 'The OpenAI API key for image generation and editing. Required for these tools to work.','# IMAGE_GEN_OAI_API_KEY='],
]}
/>
**Base URL and Azure Integration:**
<OptionTable
options={[
['IMAGE_GEN_OAI_BASEURL', 'string', 'Custom base URL for OpenAI image API requests.','# IMAGE_GEN_OAI_BASEURL='],
['IMAGE_GEN_OAI_AZURE_API_VERSION', 'string', 'API version for Azure OpenAI image services.','# IMAGE_GEN_OAI_AZURE_API_VERSION='],
]}
/>
**Tool Descriptions:**
<OptionTable
options={[
['IMAGE_GEN_OAI_DESCRIPTION_WITH_FILES', 'string', 'Custom description for the image generation tool when files are present.','# IMAGE_GEN_OAI_DESCRIPTION_WITH_FILES='],
['IMAGE_GEN_OAI_DESCRIPTION_NO_FILES', 'string', 'Custom description for the image generation tool when no files are present.','# IMAGE_GEN_OAI_DESCRIPTION_NO_FILES='],
['IMAGE_EDIT_OAI_DESCRIPTION', 'string', 'Custom description for the image editing tool.','# IMAGE_EDIT_OAI_DESCRIPTION='],
]}
/>
**Prompt Descriptions:**
<OptionTable
options={[
['IMAGE_GEN_OAI_PROMPT_DESCRIPTION', 'string', 'Custom description for the image generation prompt parameter.','# IMAGE_GEN_OAI_PROMPT_DESCRIPTION='],
['IMAGE_EDIT_OAI_PROMPT_DESCRIPTION', 'string', 'Custom description for the image editing prompt parameter.','# IMAGE_EDIT_OAI_PROMPT_DESCRIPTION='],
]}
/>
> Note: These tools provide image generation and editing capabilities using OpenAI's latest models. The image generation tool creates new images from text descriptions, while the image editing tool modifies existing images based on uploaded reference images and text instructions.
#### DALL-E (Azure)
@@ -499,6 +534,42 @@ Remember to replace placeholder text with actual prompts or instructions and pro
> Note: if you have PROXY set, it will be used for DALL-E calls also, which is universal for the app.
#### OpenAI Image Tools
**API Keys:**
<OptionTable
options={[
['IMAGE_GEN_OAI_API_KEY', 'string', 'The OpenAI API key for image generation and editing. Required for these tools to work.','# IMAGE_GEN_OAI_API_KEY='],
]}
/>
**Base URL and Azure Integration:**
<OptionTable
options={[
['IMAGE_GEN_OAI_BASEURL', 'string', 'Custom base URL for OpenAI image API requests.','# IMAGE_GEN_OAI_BASEURL='],
['IMAGE_GEN_OAI_AZURE_API_VERSION', 'string', 'API version for Azure OpenAI image services.','# IMAGE_GEN_OAI_AZURE_API_VERSION='],
]}
/>
**Tool Descriptions:**
<OptionTable
options={[
['IMAGE_GEN_OAI_DESCRIPTION_WITH_FILES', 'string', 'Custom description for the image generation tool when files are present.','# IMAGE_GEN_OAI_DESCRIPTION_WITH_FILES='],
['IMAGE_GEN_OAI_DESCRIPTION_NO_FILES', 'string', 'Custom description for the image generation tool when no files are present.','# IMAGE_GEN_OAI_DESCRIPTION_NO_FILES='],
['IMAGE_EDIT_OAI_DESCRIPTION', 'string', 'Custom description for the image editing tool.','# IMAGE_EDIT_OAI_DESCRIPTION='],
]}
/>
**Prompt Descriptions:**
<OptionTable
options={[
['IMAGE_GEN_OAI_PROMPT_DESCRIPTION', 'string', 'Custom description for the image generation prompt parameter.','# IMAGE_GEN_OAI_PROMPT_DESCRIPTION='],
['IMAGE_EDIT_OAI_PROMPT_DESCRIPTION', 'string', 'Custom description for the image editing prompt parameter.','# IMAGE_EDIT_OAI_PROMPT_DESCRIPTION='],
]}
/>
> Note: These tools provide image generation and editing capabilities using OpenAI's latest models. The image generation tool creates new images from text descriptions, while the image editing tool modifies existing images based on uploaded reference images and text instructions.
#### Google Search
See detailed instructions here: **[Google Search](/docs/configuration/tools/google_search)**
@@ -538,6 +609,19 @@ See detailed instructions here: **[Stable Diffusion](/docs/configuration/tools/s
]}
/>
#### Flux
**Description:** Cloud generator with an emphasis on speed and optional fine-tuned models.
**Environment Variables:**
<OptionTable
options={[
['FLUX_API_KEY', 'string', 'Flux API key.','# FLUX_API_KEY=flux_live_...'],
['FLUX_API_BASE_URL', 'string', 'Flux API base URL.','# FLUX_API_BASE_URL=https://api.us1.bfl.ai'],
]}
/>
### Tavily
Get your API key here: **[https://tavily.com/#api](https://tavily.com/#api)**
@@ -590,6 +674,17 @@ See detailed instructions here: **[Wolfram Alpha](/docs/configuration/tools/wolf
]}
/>
## Code Interpreter
The Code Interpreter API provides a secure environment for executing code and managing files. See: [Code Interpreter API](/docs/features/code_interpreter)
<OptionTable
options={[
['LIBRECHAT_CODE_API_KEY', 'string', 'API key for the Code Interpreter service. When set globally, provides access to all users.', 'LIBRECHAT_CODE_API_KEY=your-api-key'],
['LIBRECHAT_CODE_BASEURL', 'string', 'Custom base URL for the Code Interpreter API (Enterprise plans only).', '# LIBRECHAT_CODE_BASEURL=https://your-custom-domain.com'],
]}
/>
## Artifacts
Artifacts leverage the CodeSandbox library for secure rendering of HTML/JS code. By default, the public CDN hosted by CodeSandbox is used.
@@ -962,7 +1057,7 @@ See: **[nodemailer well-known-services](https://community.nodemailer.com/2-0-0-b
### Firebase CDN
See: **[Firebase CDN Configuration](/docs/configuration/firebase)**
See: **[Firebase CDN Configuration](/docs/configuration/cdn/firebase)**
<Callout type="warning" title="Important">
- If you are using Firebase as your file storage strategy, make sure to set the `file_strategy` option to `firebase` in your `librechat.yaml` configuration file. - For more information on configuring the `librechat.yaml` file, please refer to the YAML Configuration Guide: [Custom Endpoints & Configuration](/docs/configuration/librechat_yaml)

View File

@@ -21,12 +21,18 @@
## fileStrategy
- **Options**: "local" | "firebase" | "s3" | "azure"
<OptionTable
options={[
['fileStrategy', 'String', 'Determines where to save user uploaded/generated files. Defaults to `"local"` if omitted.', 'fileStrategy: "firebase"' ],
]}
/>
- **Notes**:
- You can choose from several different CDNs to store files.
- Please refer to the [CDN documentation](/docs/configuration/cdn) for more details
## filteredTools
<OptionTable

View File

@@ -3,6 +3,12 @@ title: Tools and Plugins
description: This doc shows you how to create custom plugins for LibreChat by extending the LangChain `Tool` class. You will learn how to use different APIs and functions with your plugins, and how to integrate them with the LangChain framework.
---
# Deprecation Notice
**This page is deprecated. Please refer to the [Agents Guide](/docs/features/agents) for the most up-to-date information on using tools.**
**It is highly recommend to use the [Model Context Protocol](/docs/features/agents#model-context-protocol-mcp) or [OpenAPI Actions](/docs/features/agents#actions) for integrating custom tools**
# Making your own Tools/Plugins
<Callout type="warning" title="Warning">

View File

@@ -3,6 +3,7 @@ export default {
agents: 'Agents',
code_interpreter: 'Code Interpreter API',
artifacts: 'Artifacts - Generative UI',
image_gen: 'Image Generation',
// local_setup: 'Local Setup',
// custom_endpoints: 'Custom Endpoints',
url_query: 'URL Query Parameters',

View File

@@ -87,9 +87,11 @@ When enabled, additional instructions specific to the use of artifacts are added
Configuring artifacts at the agent level is the preferred approach, as it allows for more granular control compared to the legacy app-wide configuration.
If you enable Custom Prompt Mode, you should include at minimum the basic artifact format in your instructions. Here's a simple example of the minimum instructions needed:
If you enable Custom Prompt Mode, you should include at minimum the basic artifact format in your instructions.
```
Here's a simple example of the minimum instructions needed:
````md
When creating content that should be displayed as an artifact, use the following format:
:::artifact{identifier="unique-identifier" type="mime-type" title="Artifact Title"}
@@ -103,7 +105,7 @@ For the type attribute, use one of:
- "application/vnd.mermaid" for Mermaid diagrams
- "application/vnd.react" for React components
- "image/svg+xml" for SVG images
```
````
### Tools

View File

@@ -60,10 +60,10 @@ The API has first-class support in LibreChat through two main methods:
![Code Interpreter in LibreChat](/images/agents/run_code.png)
To set up your API key:
### Set up API key
a. Per-user setup: input your API key in LibreChat when prompted (using the above methods)
b. Global setup: use `LIBRECHAT_CODE_API_KEY` environment variable in the .env file of your project (provides access to all users)
- **Per-user setup:** input your API key in LibreChat when prompted (using the above methods)
- **Global setup:** use `LIBRECHAT_CODE_API_KEY` environment variable in the .env file of your project (provides access to all users)
### Direct API Integration
@@ -72,6 +72,10 @@ The Code Interpreter API can be integrated into any application using a simple A
1. Get your API key from [code.librechat.ai](https://code.librechat.ai/pricing)
2. Include the API key in your requests using the `x-api-key` header
### Enterprise
The enterprise plan requires use of the `LIBRECHAT_CODE_BASEURL` environment variable to correspond with the self-hosted instance of the API, along with any generated API keys from the dashboard, used the same way as mentioned above.
## Core Functionality
### Code Execution

View File

@@ -0,0 +1,318 @@
---
title: Image Generation & Editing
description: Comprehensive guide to LibreChat's built-in image generation and editing tools
---
## 🎨 Image Generation & Editing
LibreChat comes with **built-in image tools** that you can add to an **[Agent](/docs/features/agents).**
Each has its own look, price-point, and setup step (usually just an API key or URL).
| Tool | Best for | Needs |
|------|----------|-------|
| **OpenAI Image Tools** | Cutting-edge results (GPT-Image-1).<br/>Can also ***edit*** the images you upload. | OpenAI API |
| **DALL·E (3 / 2)** | Legacy OpenAI Image models. | OpenAI API |
| **Stable Diffusion** | Local or self-hosted generation, endless community models. | Automatic1111 API |
| **Flux** | Fast cloud renders, optional fine-tunes. | Flux API |
| **MCP** | Bring-your-own-Image-Generators | MCP server with image output support |
**Notes:**
- API keys can be omitted in favor of allowing the user to enter their own key from the UI.
- Azure OpenAI does not yet support the latest OpenAI GPT-Image-1.
- MCP Server tool image outputs are supported, which may output images similarly to LC's built-in tools.
- Note: MCP servers may or may not use the correct response format when outputting images. See details in the [MCP section below](#5--model-context-protocol-mcp).
---
## 1 · OpenAI Image Tools (recommended)
### Features
"OpenAI Image Tools" are an agent toolkit made up of 2 separate tools.
- **Image Generation**:
- **Create** brand-new images from text prompts (no upload required).
- **Image Editing**:
- **Edit** or **remix** the images you just uploaded—change colours, add objects, extend the canvas, etc.
- Both use OpenAI's latest image generation model, **GPT-Image-1**, for superior instruction following, text rendering, detailed editing, real-world knowledge
- See OpenAI's [Image Generation documentation](https://platform.openai.com/docs/guides/image-generation?image-generation-model=gpt-image-1) for more details.
#### Generation vs. Editing
| Use-case | Invokes |
|----------|---------------|
| "Start from scratch" | **Image Generation** |
| "Use my uploaded photo(s)" | **Image Editing** |
The agent decides automatically, but the distinction is simple:
- If the users last message includes image(s), the LLM can choose the "edit" tool.
- "Editing" uses all uploaded images as direct references for image generation
- Otherwise, only image generation is possible
- Image generation is always an option in either scenario.
⚠️ **Important**
- Only the images attached to **the current user message** are sent to OpenAI for editing.
- if the "Resend files" model parameter is toggled, previously uploaded images will stay in scope as part of the regular chat request
- However, the "Resend files" model parameter does not affect files for "image editing."
- Motivation: this is to prevent the model from trying to edit images that are no longer relevant to the current context, which could lead to unexpected results.
- You can easily attach previously uploaded images from the side panel without needing to upload them again.
### Parameters
#### Image Generation
• **prompt** your description (required)
• **size** `auto` (default), `1024x1024` (square), `1536x1024` (landscape), or `1024x1536` (portrait)
• **quality** `auto` (default), `high`, `medium`, or `low`
• **background** `auto` (default), `transparent`, or `opaque` (transparent requires PNG or WebP format)
#### Image Editing
Note: The image editing tool is only available if the user has uploaded images in the current message.
• **prompt** your description of the changes (required)
• **size** `auto` (default), `1024x1024`, `1536x1024`, `1024x1536`, `256x256`, or `512x512`
• **quality** `auto` (default), `high`, `medium`, or `low`
### Setup
Create or reuse an OpenAI key and add to `.env`:
```bash
IMAGE_GEN_OAI_API_KEY=sk-...
# optional extras
IMAGE_GEN_OAI_BASEURL=https://...
IMAGE_GEN_OAI_AZURE_API_VERSION=2023-10-01-preview
```
Then add "OpenAI Image Tools" to your Agent's *Tools* list.
### Advanced Configuration
You can customize the tool descriptions and prompt guidance by setting these environment variables:
```bash
# Image Generation Tool Descriptions
IMAGE_GEN_OAI_DESCRIPTION_WITH_FILES=...
IMAGE_GEN_OAI_DESCRIPTION_NO_FILES=...
IMAGE_GEN_OAI_PROMPT_DESCRIPTION=...
# Image Editing Tool Descriptions
IMAGE_EDIT_OAI_DESCRIPTION=...
IMAGE_EDIT_OAI_PROMPT_DESCRIPTION=...
```
### Pricing
See the [GPT-Image-1 pricing page](https://platform.openai.com/docs/models/gpt-image-1) and [Image Generation Documentation](https://platform.openai.com/docs/guides/image-generation?image-generation-model=gpt-image-1#cost-and-latency) for details on costs associated with image generation.
---
## 2 · DALL·E (legacy)
DALL·E provides high-quality image generation using OpenAI's legacy image models.
### Parameters
• **prompt** Text description of the desired image (required, up to 4000 characters)
• **style** `vivid` (hyper-real, dramatic - default) or `natural` (less hyper-real)
• **quality** `standard` (default) or `hd`
• **size** `1024x1024` (default/square), `1792x1024` (wide), or `1024x1792` (tall)
### Setup
```bash
# Required
DALLE_API_KEY=sk-... # or DALLE3_API_KEY=sk-...
# Optional
DALLE_REVERSE_PROXY=https://... # Alternative endpoint
DALLE3_BASEURL=https://... # For Azure or custom endpoints
DALLE3_AZURE_API_VERSION=2023-12-01-preview # For Azure deployments
DALLE3_SYSTEM_PROMPT=... # Custom system prompt for DALL·E
```
### Advanced Configuration
For Azure OpenAI deployments, configure both the base URL and API version:
```bash
DALLE3_BASEURL=https://your-resource-name.openai.azure.com/openai/deployments/your-deployment-name
DALLE3_AZURE_API_VERSION=2023-12-01-preview
DALLE3_API_KEY=your-azure-api-key
```
Enable the **DALL·E** tool for the Agent and start prompting.
### Pricing
See the [DALL-E pricing page](https://platform.openai.com/docs/models/dall-e-3) and [Image Generation Documentation](https://platform.openai.com/docs/guides/image-generation?image-generation-model=dall-e-3) for details on costs associated with image generation.
---
## 3 · Stable Diffusion (local)
Run images entirely on your own machine or server.
Point LibreChat at any Automatic1111 (or compatible) endpoint and you're set.
### Parameters
• **prompt** Detailed keywords describing what you want in the image (required)
• **negative_prompt** Keywords describing what you want to exclude from the image (required)
The Stable Diffusion implementation uses these default parameters:
- cfg_scale: 4.5
- steps: 22
- width: 1024
- height: 1024
These values are currently fixed but provide good results for most use cases.
### Setup
```bash
SD_WEBUI_URL=http://127.0.0.1:7860 # URL to your Automatic1111 WebUI
```
No API key required—just the reachable URL.
---
## 4 · Flux
Cloud generator with an emphasis on speed and optional fine-tuned models.
### Features
- Fast cloud-based image generation
- Support for fine-tuned models
- Multiple quality levels and aspect ratios
- Raw mode for less processed, more natural-looking images
### Parameters
The Flux tool supports three main actions:
1. **generate** - Create a new image from a text prompt
2. **generate_finetuned** - Create an image using a fine-tuned model
3. **list_finetunes** - List available custom models for the user
For `generate` action:
• **prompt** Text description for the image (required)
• **width** Width in pixels (multiple of 32)
• **height** Height in pixels (multiple of 32)
• **prompt_upsampling** Whether to perform upsampling on the prompt (default: false)
• **steps** Number of diffusion steps (1-50, default: 40)
• **seed** Optional seed for reproducibility
• **safety_tolerance** Tolerance level for moderation (0-6, default: 6)
• **endpoint** Model endpoint to use:
- `/v1/flux-pro-1.1` (default)
- `/v1/flux-pro`
- `/v1/flux-dev`
- `/v1/flux-pro-1.1-ultra`
• **raw** Generate less processed images (only for ultra endpoint, default: false)
For `generate_finetuned` action:
• All parameters from `generate` plus:
• **finetune_id** ID of the fine-tuned model (required)
• **finetune_strength** Strength of the fine-tuning effect (0.1-1.2, default: 1.1)
• **guidance** Guidance scale (default: 2.5)
• **aspect_ratio** Aspect ratio for ultra models (default: "16:9")
• **endpoint** Must be one of:
- `/v1/flux-pro-finetuned` (default)
- `/v1/flux-pro-1.1-ultra-finetuned`
### Setup
```bash
FLUX_API_KEY=flux_live_...
FLUX_API_BASE_URL=https://api.us1.bfl.ai # default is fine for most users
```
Choose the **Flux** tool inside the Agent. Prompts are plain text; one call produces one image.
### Pricing
See the [Flux pricing page](https://docs.bfl.ml/pricing/) for details on costs associated with image generation.
---
## 5 · Model Context Protocol (MCP)
Image outputs are supported from MCP servers.
For example, the [Puppeteer MCP Server](https://github.com/modelcontextprotocol/servers/tree/main/src/puppeteer) can be used to generate screenshots of web pages, which correctly output the image in the expected format and is treated the same as LC's built-in image tools.
> The examples below assume LibreChat is running outside of Docker, directly using Node.js. The Model Context Protocol is a relatively new framework, and many developers are still learning how to properly serve their systems with uv/node for scalable distribution.
> As this technology is still emerging, there are currently few image-generating servers available, and many existing ones have yet to adopt the correct response format for images.
> While many MCP servers do function well within Docker, the following examples do not, or not without more advanced configurations, showcasing some of the current inconsistency between MCP servers.
```yaml
mcpServers:
puppeteer:
command: npx
args:
- -y
- "@modelcontextprotocol/server-puppeteer"
```
The following is an example of an [Image Generation server](https://github.com/GongRzhe/Image-Generation-MCP-Server) that outputs images using [Replicate API](https://replicate.com/account/api-tokens), but returns URLs of the images, which doesn't conform to MCP's image response standard.
> Note: for this particular server, you need to install the `@gongrzhe/image-gen-server` package globally using npm, i.e. `npm install -g @gongrzhe/image-gen-server`, then point to the package's compiled files as shown below.
```yaml
mcpServers:
image-gen:
command: "node"
# First, install the package globally using npm:
# `npm install -g @gongrzhe/image-gen-server`
# Then, point to the location of the installed package,
# which you can find by running `npm root -g`
args:
- "{REPLACE_WITH_NODE_MODULES_LOCATION}/@gongrzhe/image-gen-server/build/index.js"
# Example with output from `npm root -g`:
# - "/home/danny/.nvm/versions/node/v20.19.0/lib/node_modules/@gongrzhe/image-gen-server/build/index.js"
env:
# Do not hardcode the API token here, use the environment variable instead
# The following will pick up the token from your .env file or environment
REPLICATE_API_TOKEN: "${REPLICATE_API_TOKEN}"
MODEL: "google/imagen-3"
```
---
## Image Storage and Handling
All generated images are:
1. Saved according to the configured [**`fileStrategy`**](/docs/configuration/librechat_yaml/object_structure/config#filestrategy)
2. Displayed directly in the chat interface
---
## Proxy Support
All image generation tools support proxy configuration through the `PROXY` environment variable:
```bash
PROXY=http://your-proxy-url:port
```
## Error Handling
If any of the tools encounter an error, they will return an error message explaining what went wrong. Common issues include:
- Invalid API key
- API unavailability
- Content policy violations
- Proxy/network issues
- Invalid parameters
---
## Prompting
Though you can customize the prompts for [OpenAI Image Tools](#advanced-configuration) and [DALL·E](#advanced-configuration-1), the following tips inform the default prompts supplied by the tools, which is helpful to know for your own writing/prompting.
1. Start with the **subject** and **style** (photo, oil painting, etc.).
2. Add **composition** and **camera / medium** ("wide-angle shot of…", "watercolour…").
3. Mention **lighting & mood** ("golden hour", "dramatic shadows").
4. Finish with **detail keywords** (textures, colours, expressions).
5. Keep negatives positive—describe what you *want*, not what to avoid.
Example:
> A cinematic photo of an antique library bathed in warm afternoon sunlight. Tall wooden shelves overflow with leather-bound books, and dust particles shimmer in the light. A single green-shaded banker's lamp illuminates an open atlas on a polished mahogany desk in the foreground. 85 mm lens, shallow depth of field, rich amber tones, ultra-high detail.

View File

@@ -35,6 +35,17 @@ import Image from 'next/image'
- **Generative UI:** React, HTML, Mermaid diagrams
- Use any model you have setup, and iterate on created outputs
### 🎨 **[Image Generation & Editing](/docs/features/image_gen)**
- **Multiple Providers**: Generate images with:
- [**GPT-Image-1**](/docs/features/image_gen#1--openai-image-tools-recommended)
- [**DALL-E**](/docs/features/image_gen#2--dalle-legacy)
- [**Stable Diffusion**](/docs/features/image_gen#3--stable-diffusion-local)
- [**Flux**](/docs/features/image_gen#4--flux)
- [**MCP Servers**](/docs/features/image_gen#5--model-context-protocol-mcp)
- **Image Creation**: Create high-quality, original images from detailed text descriptions
- **Image Editing**: Modify existing images based on text instructions and image references with GPT-Image-1.
### 🖥️ **Intuitive UI**
- **Seamless User Experience**: Our platform mirrors the intuitive interface of ChatGPT, ensuring that users feel comfortable and familiar while navigating.
@@ -172,13 +183,6 @@ import Image from 'next/image'
- **Efficient Navigation**: Quickly find specific messages or entire conversations with advanced search features using **Meilisearch**.
### 🔌 **[Plugins and Extensions](/docs/configuration/tools)**
- **Enhanced Functionality**:
- Web access
- Image generation with **DALL-E-3**, **DALL-E-2**, and **Stable Diffusion**
- And more
### 👥 **[Multi-User Secure Authentication](/docs/configuration/authentication)**
- **User Management**: Secure and manage multiple users with authentication controls and token spend tools.
@@ -191,7 +195,7 @@ import Image from 'next/image'
- **[Cloud Deployment](/docs/remote)**: Utilize the cloud for broader access and scalability.
- **[Proxy & Reverse Proxy Configuration](/docs/remote/nginx)**: Optimize routing and security.
- **[Docker Support](/docs/local/docker)**: Quick and consistent deployment with Docker.
- **[Firebase CDN](/docs/configuration/firebase)**: Fast and reliable content delivery via Firebase CDN.
- **[Firebase CDN](/docs/configuration/cdn/firebase)**: Fast and reliable content delivery via Firebase CDN.
- **[Logging System](/docs/configuration/logging)**: Integrated logging to monitor system performance and activity.
### 🔒 **Authentication and Security**

View File

@@ -2,9 +2,13 @@
title: Plugins
description: This doc introduces the plugins endpoint, which enables you to use different LLMs and tools with more flexibility and control. You can change your settings and plugins on the fly, and use plugins to access various sources of information and assistance.
---
# Plugins (Deprecated)
# Plugins
**Note: This feature is deprecated in favor of [Agents](/docs/features/agents) and will be removed in the future.**
# Deprecation Notice
**This page is deprecated. Please refer to the [Agents Guide](/docs/features/agents) for the most up-to-date information on using tools.**
**It is highly recommend to use the [Model Context Protocol](/docs/features/agents#model-context-protocol-mcp) or [OpenAPI Actions](/docs/features/agents#actions) for integrating custom tools**
![intro-1](https://github.com/danny-avila/LibreChat/assets/32828263/7db788a5-2173-4115-b34b-43ea132dae69)

View File

@@ -4,6 +4,10 @@ description: The "presets" feature in LibreChat is a powerful tool that allows u
---
# Guide to Using the "Presets" Feature
# Deprecation Notice
**This feature is deprecated. Please refer to the [Agents Guide](/docs/features/agents), which acts as a successor to Presets**
The "presets" feature in our app is a powerful tool that allows users to save and load predefined settings for their conversations. Users can import and export these presets as JSON files, set a default preset, and share them with others on Discord.
![image](https://github.com/danny-avila/LibreChat/assets/32828263/8c39ad89-71ae-42c6-a792-3db52d539fcd)

455
pnpm-lock.yaml generated
View File

@@ -70,13 +70,13 @@ importers:
version: 3.7.1
'@vercel/analytics':
specifier: ^1.2.2
version: 1.2.2(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
version: 1.2.2(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
'@vercel/og':
specifier: ^0.6.2
version: 0.6.2
'@vercel/speed-insights':
specifier: ^1.0.10
version: 1.0.10(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.16)(vue@3.4.27(typescript@5.4.5))
version: 1.0.10(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.16)(vue@3.4.27(typescript@5.4.5))
'@vidstack/react':
specifier: ^0.6.15
version: 0.6.15(@types/react@18.3.12)(maverick.js@0.37.0)(react@18.3.1)(vidstack@0.6.15)
@@ -108,8 +108,8 @@ importers:
specifier: ^11.1.9
version: 11.1.9(@emotion/is-prop-valid@1.2.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
geist:
specifier: ^1.3.0
version: 1.3.0(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
specifier: ^1.3.1
version: 1.3.1(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
gpt3-tokenizer:
specifier: ^1.1.5
version: 1.1.5
@@ -132,20 +132,20 @@ importers:
specifier: ^8.3.4
version: 8.3.4
next:
specifier: ^14.2.3
version: 14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
specifier: ^15.3.1
version: 15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next-auth:
specifier: ^4.24.7
version: 4.24.7(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
specifier: ^4.24.11
version: 4.24.11(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next-sitemap:
specifier: ^4.2.3
version: 4.2.3(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
version: 4.2.3(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
nextra:
specifier: 3.0.0-alpha.22
version: 3.0.0-alpha.22(@types/react@18.3.12)(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)
version: 3.0.0-alpha.22(@types/react@18.3.12)(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)
nextra-theme-docs:
specifier: 3.0.0-alpha.22
version: 3.0.0-alpha.22(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.0.0-alpha.22(@types/react@18.3.12)(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 3.0.0-alpha.22(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.0.0-alpha.22(@types/react@18.3.12)(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
openai-edge:
specifier: ^1.2.2
version: 1.2.2
@@ -365,6 +365,9 @@ packages:
'@emnapi/runtime@1.1.1':
resolution: {integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==}
'@emnapi/runtime@1.4.3':
resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==}
'@emotion/babel-plugin@11.11.0':
resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==}
@@ -491,113 +494,223 @@ packages:
cpu: [arm64]
os: [darwin]
'@img/sharp-darwin-arm64@0.34.1':
resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [darwin]
'@img/sharp-darwin-x64@0.33.3':
resolution: {integrity: sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==}
engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [darwin]
'@img/sharp-darwin-x64@0.34.1':
resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [darwin]
'@img/sharp-libvips-darwin-arm64@1.0.2':
resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==}
engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm64]
os: [darwin]
'@img/sharp-libvips-darwin-arm64@1.1.0':
resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==}
cpu: [arm64]
os: [darwin]
'@img/sharp-libvips-darwin-x64@1.0.2':
resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==}
engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [darwin]
'@img/sharp-libvips-darwin-x64@1.1.0':
resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==}
cpu: [x64]
os: [darwin]
'@img/sharp-libvips-linux-arm64@1.0.2':
resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==}
engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm64]
os: [linux]
'@img/sharp-libvips-linux-arm64@1.1.0':
resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==}
cpu: [arm64]
os: [linux]
'@img/sharp-libvips-linux-arm@1.0.2':
resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==}
engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm]
os: [linux]
'@img/sharp-libvips-linux-arm@1.1.0':
resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==}
cpu: [arm]
os: [linux]
'@img/sharp-libvips-linux-ppc64@1.1.0':
resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==}
cpu: [ppc64]
os: [linux]
'@img/sharp-libvips-linux-s390x@1.0.2':
resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==}
engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [s390x]
os: [linux]
'@img/sharp-libvips-linux-s390x@1.1.0':
resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==}
cpu: [s390x]
os: [linux]
'@img/sharp-libvips-linux-x64@1.0.2':
resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==}
engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [linux]
'@img/sharp-libvips-linux-x64@1.1.0':
resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==}
cpu: [x64]
os: [linux]
'@img/sharp-libvips-linuxmusl-arm64@1.0.2':
resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==}
engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm64]
os: [linux]
'@img/sharp-libvips-linuxmusl-arm64@1.1.0':
resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==}
cpu: [arm64]
os: [linux]
'@img/sharp-libvips-linuxmusl-x64@1.0.2':
resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==}
engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [linux]
'@img/sharp-libvips-linuxmusl-x64@1.1.0':
resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==}
cpu: [x64]
os: [linux]
'@img/sharp-linux-arm64@0.33.3':
resolution: {integrity: sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==}
engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm64]
os: [linux]
'@img/sharp-linux-arm64@0.34.1':
resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
'@img/sharp-linux-arm@0.33.3':
resolution: {integrity: sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==}
engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm]
os: [linux]
'@img/sharp-linux-arm@0.34.1':
resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm]
os: [linux]
'@img/sharp-linux-s390x@0.33.3':
resolution: {integrity: sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==}
engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [s390x]
os: [linux]
'@img/sharp-linux-s390x@0.34.1':
resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [s390x]
os: [linux]
'@img/sharp-linux-x64@0.33.3':
resolution: {integrity: sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==}
engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [linux]
'@img/sharp-linux-x64@0.34.1':
resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
'@img/sharp-linuxmusl-arm64@0.33.3':
resolution: {integrity: sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==}
engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [arm64]
os: [linux]
'@img/sharp-linuxmusl-arm64@0.34.1':
resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
'@img/sharp-linuxmusl-x64@0.33.3':
resolution: {integrity: sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==}
engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [linux]
'@img/sharp-linuxmusl-x64@0.34.1':
resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
'@img/sharp-wasm32@0.33.3':
resolution: {integrity: sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [wasm32]
'@img/sharp-wasm32@0.34.1':
resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [wasm32]
'@img/sharp-win32-ia32@0.33.3':
resolution: {integrity: sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [ia32]
os: [win32]
'@img/sharp-win32-ia32@0.34.1':
resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [ia32]
os: [win32]
'@img/sharp-win32-x64@0.33.3':
resolution: {integrity: sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'}
cpu: [x64]
os: [win32]
'@img/sharp-win32-x64@0.34.1':
resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [win32]
'@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
@@ -717,62 +830,56 @@ packages:
'@next/env@13.5.6':
resolution: {integrity: sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==}
'@next/env@14.2.3':
resolution: {integrity: sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==}
'@next/env@15.3.1':
resolution: {integrity: sha512-cwK27QdzrMblHSn9DZRV+DQscHXRuJv6MydlJRpFSqJWZrTYMLzKDeyueJNN9MGd8NNiUKzDQADAf+dMLXX7YQ==}
'@next/eslint-plugin-next@14.2.3':
resolution: {integrity: sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==}
'@next/swc-darwin-arm64@14.2.3':
resolution: {integrity: sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==}
'@next/swc-darwin-arm64@15.3.1':
resolution: {integrity: sha512-hjDw4f4/nla+6wysBL07z52Gs55Gttp5Bsk5/8AncQLJoisvTBP0pRIBK/B16/KqQyH+uN4Ww8KkcAqJODYH3w==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@next/swc-darwin-x64@14.2.3':
resolution: {integrity: sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==}
'@next/swc-darwin-x64@15.3.1':
resolution: {integrity: sha512-q+aw+cJ2ooVYdCEqZVk+T4Ni10jF6Fo5DfpEV51OupMaV5XL6pf3GCzrk6kSSZBsMKZtVC1Zm/xaNBFpA6bJ2g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@next/swc-linux-arm64-gnu@14.2.3':
resolution: {integrity: sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==}
'@next/swc-linux-arm64-gnu@15.3.1':
resolution: {integrity: sha512-wBQ+jGUI3N0QZyWmmvRHjXjTWFy8o+zPFLSOyAyGFI94oJi+kK/LIZFJXeykvgXUk1NLDAEFDZw/NVINhdk9FQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@next/swc-linux-arm64-musl@14.2.3':
resolution: {integrity: sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==}
'@next/swc-linux-arm64-musl@15.3.1':
resolution: {integrity: sha512-IIxXEXRti/AulO9lWRHiCpUUR8AR/ZYLPALgiIg/9ENzMzLn3l0NSxVdva7R/VDcuSEBo0eGVCe3evSIHNz0Hg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@next/swc-linux-x64-gnu@14.2.3':
resolution: {integrity: sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==}
'@next/swc-linux-x64-gnu@15.3.1':
resolution: {integrity: sha512-bfI4AMhySJbyXQIKH5rmLJ5/BP7bPwuxauTvVEiJ/ADoddaA9fgyNNCcsbu9SlqfHDoZmfI6g2EjzLwbsVTr5A==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@next/swc-linux-x64-musl@14.2.3':
resolution: {integrity: sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==}
'@next/swc-linux-x64-musl@15.3.1':
resolution: {integrity: sha512-FeAbR7FYMWR+Z+M5iSGytVryKHiAsc0x3Nc3J+FD5NVbD5Mqz7fTSy8CYliXinn7T26nDMbpExRUI/4ekTvoiA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@next/swc-win32-arm64-msvc@14.2.3':
resolution: {integrity: sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==}
'@next/swc-win32-arm64-msvc@15.3.1':
resolution: {integrity: sha512-yP7FueWjphQEPpJQ2oKmshk/ppOt+0/bB8JC8svPUZNy0Pi3KbPx2Llkzv1p8CoQa+D2wknINlJpHf3vtChVBw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@next/swc-win32-ia32-msvc@14.2.3':
resolution: {integrity: sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
'@next/swc-win32-x64-msvc@14.2.3':
resolution: {integrity: sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==}
'@next/swc-win32-x64-msvc@15.3.1':
resolution: {integrity: sha512-3PMvF2zRJAifcRNni9uMk/gulWfWS+qVI/pagd+4yLF5bcXPZPPH2xlYRYOsUjmCJOXSTAC2PjRzbhsRzR2fDQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -1286,8 +1393,8 @@ packages:
'@swc/helpers@0.5.11':
resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==}
'@swc/helpers@0.5.5':
resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==}
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
'@tabler/icons-react@3.21.0':
resolution: {integrity: sha512-Qq0GnZzzccbv/zuMyXAUUPlogNAqx9KsF8cr/ev3bxs+GMObqNEjXv1eZl9GFzxyQTS435siJNU8A1BaIYhX8g==}
@@ -2209,8 +2316,8 @@ packages:
convert-source-map@1.9.0:
resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
cookie@0.5.0:
resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
cookie@0.7.2:
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
engines: {node: '>= 0.6'}
core-js-compat@3.37.0:
@@ -2961,10 +3068,10 @@ packages:
functions-have-names@1.2.3:
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
geist@1.3.0:
resolution: {integrity: sha512-IoGBfcqVEYB4bEwsfHd35jF4+X9LHRPYZymHL4YOltHSs9LJa24DYs1Z7rEMQ/lsEvaAIc61Y9aUxgcJaQ8lrg==}
geist@1.3.1:
resolution: {integrity: sha512-Q4gC1pBVPN+D579pBaz0TRRnGA4p9UK6elDY/xizXdFk/g4EKR5g0I+4p/Kj6gM0SajDBZ/0FvDV9ey9ud7BWw==}
peerDependencies:
next: '>=13.2.0 <15.0.0-0'
next: '>=13.2.0'
get-east-asian-width@1.2.0:
resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
@@ -4076,14 +4183,17 @@ packages:
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
next-auth@4.24.7:
resolution: {integrity: sha512-iChjE8ov/1K/z98gdKbn2Jw+2vLgJtVV39X+rCP5SGnVQuco7QOr19FRNGMIrD8d3LYhHWV9j9sKLzq1aDWWQQ==}
next-auth@4.24.11:
resolution: {integrity: sha512-pCFXzIDQX7xmHFs4KVH4luCjaCbuPRtZ9oBUjUhOk84mZ9WVPf94n87TxYI4rSRf9HmfHEF8Yep3JrYDVOo3Cw==}
peerDependencies:
next: ^12.2.5 || ^13 || ^14
'@auth/core': 0.34.2
next: ^12.2.5 || ^13 || ^14 || ^15
nodemailer: ^6.6.5
react: ^17.0.2 || ^18
react-dom: ^17.0.2 || ^18
react: ^17.0.2 || ^18 || ^19
react-dom: ^17.0.2 || ^18 || ^19
peerDependenciesMeta:
'@auth/core':
optional: true
nodemailer:
optional: true
@@ -4101,21 +4211,24 @@ packages:
react: '*'
react-dom: '*'
next@14.2.3:
resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==}
engines: {node: '>=18.17.0'}
next@15.3.1:
resolution: {integrity: sha512-8+dDV0xNLOgHlyBxP1GwHGVaNXsmp+2NhZEYrXr24GWLHtt27YrBPbPuHvzlhi7kZNYjeJNR93IF5zfFu5UL0g==}
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.1.0
'@playwright/test': ^1.41.2
react: ^18.2.0
react-dom: ^18.2.0
babel-plugin-react-compiler: '*'
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
sass: ^1.3.0
peerDependenciesMeta:
'@opentelemetry/api':
optional: true
'@playwright/test':
optional: true
babel-plugin-react-compiler:
optional: true
sass:
optional: true
@@ -4801,6 +4914,11 @@ packages:
engines: {node: '>=10'}
hasBin: true
semver@7.7.1:
resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
engines: {node: '>=10'}
hasBin: true
serialize-javascript@6.0.2:
resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
@@ -4835,6 +4953,10 @@ packages:
resolution: {integrity: sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==}
engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0}
sharp@0.34.1:
resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
shebang-command@1.2.0:
resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
engines: {node: '>=0.10.0'}
@@ -5050,13 +5172,13 @@ packages:
react: '>= 16.8.0'
react-dom: '>= 16.8.0'
styled-jsx@5.1.1:
resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
styled-jsx@5.1.6:
resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
engines: {node: '>= 12.0.0'}
peerDependencies:
'@babel/core': '*'
babel-plugin-macros: '*'
react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
peerDependenciesMeta:
'@babel/core':
optional: true
@@ -5238,6 +5360,9 @@ packages:
tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
twoslash-protocol@0.2.5:
resolution: {integrity: sha512-oUr5ZAn37CgNa6p1mrCuuR/pINffsnGCee2aS170Uj1IObxCjsHzu6sgdPUdxGLLn6++gd/qjNH1/iR6RrfLeg==}
@@ -5730,6 +5855,11 @@ snapshots:
tslib: 2.6.2
optional: true
'@emnapi/runtime@1.4.3':
dependencies:
tslib: 2.6.2
optional: true
'@emotion/babel-plugin@11.11.0':
dependencies:
'@babel/helper-module-imports': 7.24.3
@@ -5895,76 +6025,154 @@ snapshots:
'@img/sharp-libvips-darwin-arm64': 1.0.2
optional: true
'@img/sharp-darwin-arm64@0.34.1':
optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.1.0
optional: true
'@img/sharp-darwin-x64@0.33.3':
optionalDependencies:
'@img/sharp-libvips-darwin-x64': 1.0.2
optional: true
'@img/sharp-darwin-x64@0.34.1':
optionalDependencies:
'@img/sharp-libvips-darwin-x64': 1.1.0
optional: true
'@img/sharp-libvips-darwin-arm64@1.0.2':
optional: true
'@img/sharp-libvips-darwin-arm64@1.1.0':
optional: true
'@img/sharp-libvips-darwin-x64@1.0.2':
optional: true
'@img/sharp-libvips-darwin-x64@1.1.0':
optional: true
'@img/sharp-libvips-linux-arm64@1.0.2':
optional: true
'@img/sharp-libvips-linux-arm64@1.1.0':
optional: true
'@img/sharp-libvips-linux-arm@1.0.2':
optional: true
'@img/sharp-libvips-linux-arm@1.1.0':
optional: true
'@img/sharp-libvips-linux-ppc64@1.1.0':
optional: true
'@img/sharp-libvips-linux-s390x@1.0.2':
optional: true
'@img/sharp-libvips-linux-s390x@1.1.0':
optional: true
'@img/sharp-libvips-linux-x64@1.0.2':
optional: true
'@img/sharp-libvips-linux-x64@1.1.0':
optional: true
'@img/sharp-libvips-linuxmusl-arm64@1.0.2':
optional: true
'@img/sharp-libvips-linuxmusl-arm64@1.1.0':
optional: true
'@img/sharp-libvips-linuxmusl-x64@1.0.2':
optional: true
'@img/sharp-libvips-linuxmusl-x64@1.1.0':
optional: true
'@img/sharp-linux-arm64@0.33.3':
optionalDependencies:
'@img/sharp-libvips-linux-arm64': 1.0.2
optional: true
'@img/sharp-linux-arm64@0.34.1':
optionalDependencies:
'@img/sharp-libvips-linux-arm64': 1.1.0
optional: true
'@img/sharp-linux-arm@0.33.3':
optionalDependencies:
'@img/sharp-libvips-linux-arm': 1.0.2
optional: true
'@img/sharp-linux-arm@0.34.1':
optionalDependencies:
'@img/sharp-libvips-linux-arm': 1.1.0
optional: true
'@img/sharp-linux-s390x@0.33.3':
optionalDependencies:
'@img/sharp-libvips-linux-s390x': 1.0.2
optional: true
'@img/sharp-linux-s390x@0.34.1':
optionalDependencies:
'@img/sharp-libvips-linux-s390x': 1.1.0
optional: true
'@img/sharp-linux-x64@0.33.3':
optionalDependencies:
'@img/sharp-libvips-linux-x64': 1.0.2
optional: true
'@img/sharp-linux-x64@0.34.1':
optionalDependencies:
'@img/sharp-libvips-linux-x64': 1.1.0
optional: true
'@img/sharp-linuxmusl-arm64@0.33.3':
optionalDependencies:
'@img/sharp-libvips-linuxmusl-arm64': 1.0.2
optional: true
'@img/sharp-linuxmusl-arm64@0.34.1':
optionalDependencies:
'@img/sharp-libvips-linuxmusl-arm64': 1.1.0
optional: true
'@img/sharp-linuxmusl-x64@0.33.3':
optionalDependencies:
'@img/sharp-libvips-linuxmusl-x64': 1.0.2
optional: true
'@img/sharp-linuxmusl-x64@0.34.1':
optionalDependencies:
'@img/sharp-libvips-linuxmusl-x64': 1.1.0
optional: true
'@img/sharp-wasm32@0.33.3':
dependencies:
'@emnapi/runtime': 1.1.1
optional: true
'@img/sharp-wasm32@0.34.1':
dependencies:
'@emnapi/runtime': 1.4.3
optional: true
'@img/sharp-win32-ia32@0.33.3':
optional: true
'@img/sharp-win32-ia32@0.34.1':
optional: true
'@img/sharp-win32-x64@0.33.3':
optional: true
'@img/sharp-win32-x64@0.34.1':
optional: true
'@isaacs/cliui@8.0.2':
dependencies:
string-width: 5.1.2
@@ -6094,37 +6302,34 @@ snapshots:
'@next/env@13.5.6': {}
'@next/env@14.2.3': {}
'@next/env@15.3.1': {}
'@next/eslint-plugin-next@14.2.3':
dependencies:
glob: 10.3.10
'@next/swc-darwin-arm64@14.2.3':
'@next/swc-darwin-arm64@15.3.1':
optional: true
'@next/swc-darwin-x64@14.2.3':
'@next/swc-darwin-x64@15.3.1':
optional: true
'@next/swc-linux-arm64-gnu@14.2.3':
'@next/swc-linux-arm64-gnu@15.3.1':
optional: true
'@next/swc-linux-arm64-musl@14.2.3':
'@next/swc-linux-arm64-musl@15.3.1':
optional: true
'@next/swc-linux-x64-gnu@14.2.3':
'@next/swc-linux-x64-gnu@15.3.1':
optional: true
'@next/swc-linux-x64-musl@14.2.3':
'@next/swc-linux-x64-musl@15.3.1':
optional: true
'@next/swc-win32-arm64-msvc@14.2.3':
'@next/swc-win32-arm64-msvc@15.3.1':
optional: true
'@next/swc-win32-ia32-msvc@14.2.3':
optional: true
'@next/swc-win32-x64-msvc@14.2.3':
'@next/swc-win32-x64-msvc@15.3.1':
optional: true
'@nodelib/fs.scandir@2.1.5':
@@ -6678,10 +6883,9 @@ snapshots:
dependencies:
tslib: 2.6.2
'@swc/helpers@0.5.5':
'@swc/helpers@0.5.15':
dependencies:
'@swc/counter': 0.1.3
tslib: 2.6.2
tslib: 2.8.1
'@tabler/icons-react@3.21.0(react@18.3.1)':
dependencies:
@@ -7150,11 +7354,11 @@ snapshots:
'@ungap/structured-clone@1.2.0': {}
'@vercel/analytics@1.2.2(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
'@vercel/analytics@1.2.2(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
dependencies:
server-only: 0.0.1
optionalDependencies:
next: 14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next: 15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
'@vercel/og@0.6.2':
@@ -7163,9 +7367,9 @@ snapshots:
satori: 0.10.9
yoga-wasm-web: 0.3.3
'@vercel/speed-insights@1.0.10(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.16)(vue@3.4.27(typescript@5.4.5))':
'@vercel/speed-insights@1.0.10(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(svelte@4.2.16)(vue@3.4.27(typescript@5.4.5))':
optionalDependencies:
next: 14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next: 15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
svelte: 4.2.16
vue: 3.4.27(typescript@5.4.5)
@@ -7738,7 +7942,7 @@ snapshots:
convert-source-map@1.9.0: {}
cookie@0.5.0: {}
cookie@0.7.2: {}
core-js-compat@3.37.0:
dependencies:
@@ -8234,7 +8438,7 @@ snapshots:
debug: 4.3.4
enhanced-resolve: 5.16.0
eslint: 8.57.0
eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)
fast-glob: 3.3.2
get-tsconfig: 4.7.3
@@ -8266,7 +8470,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0):
dependencies:
debug: 3.2.7
optionalDependencies:
@@ -8690,9 +8894,9 @@ snapshots:
functions-have-names@1.2.3: {}
geist@1.3.0(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
geist@1.3.1(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
dependencies:
next: 14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next: 15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
get-east-asian-width@1.2.0: {}
@@ -10208,13 +10412,13 @@ snapshots:
neo-async@2.6.2: {}
next-auth@4.24.7(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
next-auth@4.24.11(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@babel/runtime': 7.24.5
'@panva/hkdf': 1.1.1
cookie: 0.5.0
cookie: 0.7.2
jose: 4.15.5
next: 14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next: 15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
oauth: 0.9.15
openid-client: 5.6.5
preact: 10.21.0
@@ -10223,46 +10427,46 @@ snapshots:
react-dom: 18.3.1(react@18.3.1)
uuid: 8.3.2
next-sitemap@4.2.3(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
next-sitemap@4.2.3(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)):
dependencies:
'@corex/deepmerge': 4.0.43
'@next/env': 13.5.6
fast-glob: 3.3.2
minimist: 1.2.8
next: 14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next: 15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next-themes@0.2.1(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
next-themes@0.2.1(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
next: 14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next: 15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@next/env': 14.2.3
'@swc/helpers': 0.5.5
'@next/env': 15.3.1
'@swc/counter': 0.1.3
'@swc/helpers': 0.5.15
busboy: 1.6.0
caniuse-lite: 1.0.30001673
graceful-fs: 4.2.11
postcss: 8.4.31
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
styled-jsx: 5.1.1(react@18.3.1)
styled-jsx: 5.1.6(react@18.3.1)
optionalDependencies:
'@next/swc-darwin-arm64': 14.2.3
'@next/swc-darwin-x64': 14.2.3
'@next/swc-linux-arm64-gnu': 14.2.3
'@next/swc-linux-arm64-musl': 14.2.3
'@next/swc-linux-x64-gnu': 14.2.3
'@next/swc-linux-x64-musl': 14.2.3
'@next/swc-win32-arm64-msvc': 14.2.3
'@next/swc-win32-ia32-msvc': 14.2.3
'@next/swc-win32-x64-msvc': 14.2.3
'@next/swc-darwin-arm64': 15.3.1
'@next/swc-darwin-x64': 15.3.1
'@next/swc-linux-arm64-gnu': 15.3.1
'@next/swc-linux-arm64-musl': 15.3.1
'@next/swc-linux-x64-gnu': 15.3.1
'@next/swc-linux-x64-musl': 15.3.1
'@next/swc-win32-arm64-msvc': 15.3.1
'@next/swc-win32-x64-msvc': 15.3.1
sharp: 0.34.1
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
nextra-theme-docs@3.0.0-alpha.22(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.0.0-alpha.22(@types/react@18.3.12)(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
nextra-theme-docs@3.0.0-alpha.22(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.0.0-alpha.22(@types/react@18.3.12)(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@headlessui/react': 1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@popperjs/core': 2.11.8
@@ -10271,15 +10475,15 @@ snapshots:
flexsearch: 0.7.43
focus-visible: 5.2.0
intersection-observer: 0.12.2
next: 14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next-themes: 0.2.1(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
nextra: 3.0.0-alpha.22(@types/react@18.3.12)(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)
next: 15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next-themes: 0.2.1(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
nextra: 3.0.0-alpha.22(@types/react@18.3.12)(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
scroll-into-view-if-needed: 3.1.0
zod: 3.23.8
nextra@3.0.0-alpha.22(@types/react@18.3.12)(next@14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5):
nextra@3.0.0-alpha.22(@types/react@18.3.12)(next@15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.4.5):
dependencies:
'@headlessui/react': 1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mdx-js/mdx': 3.0.1
@@ -10297,7 +10501,7 @@ snapshots:
gray-matter: 4.0.3
hast-util-to-estree: 3.1.0
katex: 0.16.10
next: 14.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next: 15.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
p-limit: 4.0.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -10598,8 +10802,8 @@ snapshots:
postcss@8.4.31:
dependencies:
nanoid: 3.3.7
picocolors: 1.0.0
source-map-js: 1.2.0
picocolors: 1.1.1
source-map-js: 1.2.1
postcss@8.4.38:
dependencies:
@@ -11104,6 +11308,9 @@ snapshots:
semver@7.6.2: {}
semver@7.7.1:
optional: true
serialize-javascript@6.0.2:
dependencies:
randombytes: 2.1.0
@@ -11162,6 +11369,34 @@ snapshots:
'@img/sharp-win32-ia32': 0.33.3
'@img/sharp-win32-x64': 0.33.3
sharp@0.34.1:
dependencies:
color: 4.2.3
detect-libc: 2.0.3
semver: 7.7.1
optionalDependencies:
'@img/sharp-darwin-arm64': 0.34.1
'@img/sharp-darwin-x64': 0.34.1
'@img/sharp-libvips-darwin-arm64': 1.1.0
'@img/sharp-libvips-darwin-x64': 1.1.0
'@img/sharp-libvips-linux-arm': 1.1.0
'@img/sharp-libvips-linux-arm64': 1.1.0
'@img/sharp-libvips-linux-ppc64': 1.1.0
'@img/sharp-libvips-linux-s390x': 1.1.0
'@img/sharp-libvips-linux-x64': 1.1.0
'@img/sharp-libvips-linuxmusl-arm64': 1.1.0
'@img/sharp-libvips-linuxmusl-x64': 1.1.0
'@img/sharp-linux-arm': 0.34.1
'@img/sharp-linux-arm64': 0.34.1
'@img/sharp-linux-s390x': 0.34.1
'@img/sharp-linux-x64': 0.34.1
'@img/sharp-linuxmusl-arm64': 0.34.1
'@img/sharp-linuxmusl-x64': 0.34.1
'@img/sharp-wasm32': 0.34.1
'@img/sharp-win32-ia32': 0.34.1
'@img/sharp-win32-x64': 0.34.1
optional: true
shebang-command@1.2.0:
dependencies:
shebang-regex: 1.0.0
@@ -11393,7 +11628,7 @@ snapshots:
stylis: 4.3.2
tslib: 2.6.2
styled-jsx@5.1.1(react@18.3.1):
styled-jsx@5.1.6(react@18.3.1):
dependencies:
client-only: 0.0.1
react: 18.3.1
@@ -11591,6 +11826,8 @@ snapshots:
tslib@2.6.2: {}
tslib@2.8.1: {}
twoslash-protocol@0.2.5: {}
twoslash@0.2.5(typescript@5.4.5):