From 54f77a17192b1f4841be387e4371e56cbbb1a465 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Fri, 25 Apr 2025 12:21:27 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20feat:=20Adds=20Image=20Gen=20Doc?= =?UTF-8?q?s,=20fix=20broken=20links,=20usage=20stats,=20missing=20.env=20?= =?UTF-8?q?vars,=20formatting=20issues,=20bump=20Next.js=20(#288)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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 --- components/home/Usage.tsx | 87 ++-- next-env.d.ts | 2 +- next.config.mjs | 2 +- package.json | 6 +- pages/api/github-stats.ts | 38 ++ pages/docs/configuration/dotenv.mdx | 97 +++- .../object_structure/config.mdx | 6 + pages/docs/development/tools_and_plugins.mdx | 6 + pages/docs/features/_meta.ts | 1 + pages/docs/features/agents.mdx | 8 +- pages/docs/features/code_interpreter.mdx | 10 +- pages/docs/features/image_gen.mdx | 318 ++++++++++++ pages/docs/features/index.mdx | 20 +- pages/docs/features/plugins.mdx | 8 +- pages/docs/user_guides/presets.mdx | 4 + pnpm-lock.yaml | 455 +++++++++++++----- 16 files changed, 906 insertions(+), 162 deletions(-) create mode 100644 pages/api/github-stats.ts create mode 100644 pages/docs/features/image_gen.mdx diff --git a/components/home/Usage.tsx b/components/home/Usage.tsx index 74b6af4..839b85f 100644 --- a/components/home/Usage.tsx +++ b/components/home/Usage.tsx @@ -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 = () => ( - -
-

Usage statistics

-
-
-
- {/* {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 ( + +
+

Usage statistics

+
+
+
+ {/* {users.map((user) => ( ( /> ))} */} +
+
+
+ {stats.map((item) => ( +
+

+ {item.name === 'Project started' && item.value instanceof Date ? ( + + ) : typeof item.value === 'number' ? ( + + ) : ( + item.value.toString() + )} + {'+'} +

+

{item.name}

+
+ ))}
-
- {stats.map((item) => ( -
-

- {item.name === 'Project started' && item.value instanceof Date ? ( - - ) : typeof item.value === 'number' ? ( - - ) : ( - item.value.toString() - )} - {'+'} -

-

{item.name}

-
- ))} -
-
- -) + + ) +} diff --git a/next-env.d.ts b/next-env.d.ts index 4f11a03..52e831b 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -2,4 +2,4 @@ /// // 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. diff --git a/next.config.mjs b/next.config.mjs index 7f524f0..073c7de 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -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: [ diff --git a/package.json b/package.json index c6d357b..fac7243 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/pages/api/github-stats.ts b/pages/api/github-stats.ts new file mode 100644 index 0000000..3ced6a7 --- /dev/null +++ b/pages/api/github-stats.ts @@ -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) { + try { + // GitHub API endpoint for the LibreChat repository + const response = await axios.get( + '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' }) + } +} diff --git a/pages/docs/configuration/dotenv.mdx b/pages/docs/configuration/dotenv.mdx index 417a74f..9c8c6e3 100644 --- a/pages/docs/configuration/dotenv.mdx +++ b/pages/docs/configuration/dotenv.mdx @@ -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:** + 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:** + +#### Flux + +**Description:** Cloud generator with an emphasis on speed and optional fine-tuned models. + +**Environment Variables:** + + + ### 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) + + + ## 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)** - 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) diff --git a/pages/docs/configuration/librechat_yaml/object_structure/config.mdx b/pages/docs/configuration/librechat_yaml/object_structure/config.mdx index 8d73d6f..4037030 100644 --- a/pages/docs/configuration/librechat_yaml/object_structure/config.mdx +++ b/pages/docs/configuration/librechat_yaml/object_structure/config.mdx @@ -21,12 +21,18 @@ ## fileStrategy +- **Options**: "local" | "firebase" | "s3" | "azure" + +- **Notes**: + - You can choose from several different CDNs to store files. + - Please refer to the [CDN documentation](/docs/configuration/cdn) for more details + ## filteredTools diff --git a/pages/docs/features/_meta.ts b/pages/docs/features/_meta.ts index 9c164eb..ff78799 100644 --- a/pages/docs/features/_meta.ts +++ b/pages/docs/features/_meta.ts @@ -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', diff --git a/pages/docs/features/agents.mdx b/pages/docs/features/agents.mdx index 9695603..ce43ffc 100644 --- a/pages/docs/features/agents.mdx +++ b/pages/docs/features/agents.mdx @@ -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 diff --git a/pages/docs/features/code_interpreter.mdx b/pages/docs/features/code_interpreter.mdx index c3b8534..9e9b48f 100644 --- a/pages/docs/features/code_interpreter.mdx +++ b/pages/docs/features/code_interpreter.mdx @@ -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 diff --git a/pages/docs/features/image_gen.mdx b/pages/docs/features/image_gen.mdx new file mode 100644 index 0000000..f66f45b --- /dev/null +++ b/pages/docs/features/image_gen.mdx @@ -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).
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 user’s 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. + diff --git a/pages/docs/features/index.mdx b/pages/docs/features/index.mdx index 87d955e..45a7625 100644 --- a/pages/docs/features/index.mdx +++ b/pages/docs/features/index.mdx @@ -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** diff --git a/pages/docs/features/plugins.mdx b/pages/docs/features/plugins.mdx index c082d88..b15abfe 100644 --- a/pages/docs/features/plugins.mdx +++ b/pages/docs/features/plugins.mdx @@ -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) diff --git a/pages/docs/user_guides/presets.mdx b/pages/docs/user_guides/presets.mdx index df2ceab..73af79b 100644 --- a/pages/docs/user_guides/presets.mdx +++ b/pages/docs/user_guides/presets.mdx @@ -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) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 04abd50..b771de0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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):