diff --git a/docs/docs/guide/assistants.md b/docs/docs/docs/assistants.md similarity index 100% rename from docs/docs/guide/assistants.md rename to docs/docs/docs/assistants.md diff --git a/docs/docs/docs/extensions.md b/docs/docs/docs/extensions.md new file mode 100644 index 000000000..c04f60a68 --- /dev/null +++ b/docs/docs/docs/extensions.md @@ -0,0 +1,3 @@ +--- +title: Extending Jan +--- \ No newline at end of file diff --git a/docs/docs/guide/models.md b/docs/docs/docs/models.md similarity index 100% rename from docs/docs/guide/models.md rename to docs/docs/docs/models.md diff --git a/docs/docs/guide/modules.md b/docs/docs/docs/modules.md similarity index 100% rename from docs/docs/guide/modules.md rename to docs/docs/docs/modules.md diff --git a/docs/docs/guide/server.md b/docs/docs/docs/server.md similarity index 100% rename from docs/docs/guide/server.md rename to docs/docs/docs/server.md diff --git a/docs/docs/guide/themes.md b/docs/docs/docs/themes.md similarity index 100% rename from docs/docs/guide/themes.md rename to docs/docs/docs/themes.md diff --git a/docs/docs/guide/tools.md b/docs/docs/docs/tools.md similarity index 100% rename from docs/docs/guide/tools.md rename to docs/docs/docs/tools.md diff --git a/docs/docs/intro/how-jan-works.md b/docs/docs/intro/how-jan-works.md index 86fe39b32..fdfd12a10 100644 --- a/docs/docs/intro/how-jan-works.md +++ b/docs/docs/intro/how-jan-works.md @@ -1,3 +1,11 @@ --- title: How Jan Works ---- \ No newline at end of file +--- + +- Local Filesystem + - Follow-on from Quickstart to show how things actually worked + - Write in a conversational style, show how things work under the hood + - Check how filesystem changed after each request +- Model loading into RAM/VRAM + - Explain how the .bin file is loaded via Llama.cpp + - Explain how it consumes RAM and VRAM, and refer to system monitor diff --git a/docs/docs/intro/introduction.md b/docs/docs/intro/introduction.md index 00d490619..6c320af4d 100644 --- a/docs/docs/intro/introduction.md +++ b/docs/docs/intro/introduction.md @@ -1,104 +1,34 @@ --- title: Introduction -slug: /docs +slug: /intro --- -Jan can be used to build a variety of AI use cases, at every level of the stack: +Jan is a ChatGPT-alternative that runs on your own computer. -- An OpenAI compatible API, with feature parity for `models`, `assistants`, `files` and more -- A standard data format on top of the user's local filesystem, allowing for transparency and composability -- Automatically package and distribute to Mac, Windows and Linux. Cloud coming soon -- An UI kit to customize user interactions with `assistants` and more -- A standalone inference engine for low level use cases +Jan uses [open-source AI models](/guide/models), stores data in [open file formats](/specs/data-structures) and is is highly customizable via [extensions](/guide/extensions). -## Resources +Jan ships with an [OpenAI-compatible API](/api) and a powerful [Assistant framework](/guide/assistants) to create custom AIs. - +## Why Jan? -- Create an AI assistant -- Run an OpenAI compatible API endpoint -- Build a VSCode plugin with a local model -- Build a Jan platform module +#### 💻 Own your AI +Jan runs 100% on your own machine, [predictably](https://www.reddit.com/r/LocalLLaMA/comments/17mghqr/comment/k7ksti6/?utm_source=share&utm_medium=web2x&context=3), privately and even offline. No one else can see your conversations, not even us. -## Key Concepts +#### 🏗️ Extensions +Jan ships with a powerful [extension framework](/guide/extensions), which allows developers to extend and customize Jan's functionality. In fact, most core modules of Jan are [built as extensions](/specs/architecture) and use the same extensions API. -### Modules +#### 🗂️ Open File Formats +Jan stores data in a [local folder of non-proprietary files](/specs/data-structures). You're never locked-in and can do what you want with your data with extensions, or even a different app. -Jan is comprised of system-level modules that mirror OpenAI’s, exposing similar APIs and objects +#### 🌍 Open Source +Both Jan and [Nitro](https://nitro.jan.ai), our lightweight inference engine, are licensed via the open source [AGPLv3 license](https://github.com/janhq/jan/blob/main/LICENSE). -- Modules are modular, atomic implementations of a single OpenAI-compatible endpoint -- Modules can be swapped out for alternate implementations - - The default `messages` module persists messages in thread-specific `.json` - - `messages-postgresql` uses Postgres for production-grade cloud-native environments + -| Jan Module | Description | API Docs | -| ---------- | ------------- | ---------------------------- | -| Chat | Inference | [/chat](/api/chat) | -| Models | Models | [/model](/api/model) | -| Assistants | Apps | [/assistant](/api/assistant) | -| Threads | Conversations | [/thread](/api/thread) | -| Messages | Messages | [/message](/api/message) | + diff --git a/docs/docs/intro/quickstart.md b/docs/docs/intro/quickstart.md index 18f6fc0aa..e417838ea 100644 --- a/docs/docs/intro/quickstart.md +++ b/docs/docs/intro/quickstart.md @@ -1,3 +1,7 @@ --- title: Quickstart --- + +- Write in the style of comics, explanation +- Similar to why's (poignant) Guide to Ruby +- https://en.wikipedia.org/wiki/Why%27s_(poignant)_Guide_to_Ruby \ No newline at end of file diff --git a/docs/docs/specs/architecture.md b/docs/docs/specs/architecture.md index 079d40033..962b928aa 100644 --- a/docs/docs/specs/architecture.md +++ b/docs/docs/specs/architecture.md @@ -2,6 +2,24 @@ title: Architecture --- +- Jan is built using modules +- Plugin architecture (on Pluggable-Electron) + +Jan is comprised of system-level modules that mirror OpenAI’s, exposing similar APIs and objects + +- Modules are modular, atomic implementations of a single OpenAI-compatible endpoint +- Modules can be swapped out for alternate implementations + - The default `messages` module persists messages in thread-specific `.json` + - `messages-postgresql` uses Postgres for production-grade cloud-native environments + +| Jan Module | Description | API Docs | +| ---------- | ------------- | ---------------------------- | +| Chat | Inference | [/chat](/api/chat) | +| Models | Models | [/model](/api/model) | +| Assistants | Apps | [/assistant](/api/assistant) | +| Threads | Conversations | [/thread](/api/thread) | +| Messages | Messages | [/message](/api/message) | + ## Concepts ```mermaid @@ -23,19 +41,3 @@ graph LR - Model object - Thread object - Built-in tool object - -## File system -```sh -janroot/ - assistants/ - assistant-a/ - assistant.json - src/ - index.ts - threads/ - thread-a/ - thread-b - models/ - model-a/ - model.json -``` \ No newline at end of file diff --git a/docs/docs/specs/data-structures.md b/docs/docs/specs/data-structures.md index 063f9a0b4..d3f8507f4 100644 --- a/docs/docs/specs/data-structures.md +++ b/docs/docs/specs/data-structures.md @@ -1,3 +1,69 @@ --- title: Data Structures ---- \ No newline at end of file +--- + + +```sh +janroot/ + assistants/ + assistant-a/ + assistant.json + src/ + index.ts + threads/ + thread-a/ + thread-b + models/ + model-a/ + model.json +``` + + + +Jan use the local filesystem for data persistence, similar to VSCode. This allows for composability and tinkerability. + +```sh= +/janroot # Jan's root folder (e.g. ~/jan) + /models # For raw AI models + /threads # For conversation history + /assistants # For AI assistants' configs, knowledge, etc. +``` + +```sh= +/models + /modelA + model.json # Default model settings + llama-7b-q4.gguf # Model binaries + llama-7b-q5.gguf # Include different quantizations +/threads + /jan-unixstamp-salt + model.json # Overrides assistant/model-level model settings + thread.json # thread metadata (e.g. subject) + messages.json # messages + content.json # What is this? + files/ # Future for RAG +/assistants + /jan + assistant.json # Assistant configs (see below) + + # For any custom code + package.json # Import npm modules + # e.g. Langchain, Llamaindex + /src # Supporting files (needs better name) + index.js # Entrypoint + process.js # For electron IPC processes (needs better name) + + # `/threads` at root level + # `/models` at root level + /shakespeare + assistant.json + model.json # Creator chooses model and settings + package.json + /src + index.js + process.js + + /threads # Assistants remember conversations in the future + /models # Users can upload custom models + /finetuned-model +``` diff --git a/docs/docs/specs/fine-tuning.md b/docs/docs/specs/fine-tuning.md index df6723ff1..281a065b2 100644 --- a/docs/docs/specs/fine-tuning.md +++ b/docs/docs/specs/fine-tuning.md @@ -1,4 +1,4 @@ --- -title: "Fine tuning" +title: "Fine-tuning" --- Todo: @hiro \ No newline at end of file diff --git a/docs/docs/specs/jan.md b/docs/docs/specs/jan.md index 77d63eddc..9a97c29c2 100644 --- a/docs/docs/specs/jan.md +++ b/docs/docs/specs/jan.md @@ -1,3 +1,17 @@ --- -title: Jan ---- \ No newline at end of file +title: Jan (Assistant) +--- + +## Jan: a "global" assistant + +Jan ships with a default assistant "Jan" that lets users chat with any open source model out-of-the-box. + +This assistant is defined in `/jan`. It is a generic assistant to illustrate power of Jan. In the future, it will support additional features e.g. multi-assistant conversations + +- Your Assistant "Jan" lets you pick any model that is in the root /models folder +- Right panel: pick LLM model and set model parameters +- Jan’s threads will be at root level +- `model.json` will reflect model chosen for that session +- Be able to “add” other assistants in the future +- Jan’s files will be at thread level +- Jan is not a persistent memory assistant diff --git a/docs/docs/specs/models.md b/docs/docs/specs/models.md index d7e19be0a..f5fd26e3f 100644 --- a/docs/docs/specs/models.md +++ b/docs/docs/specs/models.md @@ -10,56 +10,103 @@ Feedback: [HackMD: Models Spec](https://hackmd.io/ulO3uB1AQCqLa5SAAMFOQw) ::: -Models are AI models like Llama and Mistral +## Overview -> OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models +Jan's Model API aims to be as similar as possible to [OpenAI's Models API](https://platform.openai.com/docs/api-reference/models), with additional methods for managing and running models locally. -## User Stories +### User Objectives -_Users can download a model via a web URL_ +- Users can start/stop models and use them in a thread (or via Chat Completions API) +- Users can download, import and delete models +- User can configure model settings at the model level or override it at thread-level +- Users can use remote models (e.g. OpenAI, OpenRouter) -- Wireframes here +## Models Folder -_Users can import a model from local directory_ +Models in Jan are stored in the `/models` folder. -- Wireframes here + `.json` files. -_Users can configure model settings, like run parameters_ +- Everything needed to represent a `model` is packaged into an `Model folder`. +- The `folder` is standalone and can be easily zipped, imported, and exported, e.g. to Github. +- The `folder` always contains at least one `Model Object`, declared in a `json` format. +- The `folder` and `file` do not have to share the same name +- The model `id` is made up of `folder_name/filename` and is thus always unique. -- Wireframes here +```sh +/janroot + /models + azure-openai/ # Folder name + azure-openai-gpt3-5.json # File name -_Users can override run settings at runtime_ + llama2-70b/ + model.json + .gguf +``` -- See Assistant Spec and Thread +## Model Object -## Jan Model Object +Models in Jan are represented as `json` objects, and are colloquially known as `model.jsons`. -- A `Jan Model Object` is a “representation" of a model -- Objects are defined by `model-name.json` files in `json` format -- Objects are identified by `folder-name/model-name`, where its `id` is indicative of its file location. -- Objects are designed to be compatible with `OpenAI Model Objects`, with additional properties needed to run on our infrastructure. -- ALL object properties are optional, i.e. users should be able to run a model declared by an empty `json` file. +Jan's models follow a `.json` naming convention. + +Jan's `model.json` aims for rough equivalence with [OpenAI's Model Object](https://platform.openai.com/docs/api-reference/models/object), and add additional properties to support local models. + +Jan's `model.json` object properties are optional, i.e. users should be able to run a model declared by an empty `json` file. + +```json +// ./models/zephr/zephyr-7b-beta-Q4_K_M.json +{ + "source_url": "https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/blob/main/zephyr-7b-beta.Q4_K_M.gguf", + "parameters": { + "init": { + "ctx_len": "2048", + "ngl": "100", + "embedding": "true", + "n_parallel": "4", + "pre_prompt": "A chat between a curious user and an artificial intelligence", + "user_prompt": "USER: ", + "ai_prompt": "ASSISTANT: " + }, + "runtime": { + "temperature": "0.7", + "token_limit": "2048", + "top_k": "0", + "top_p": "1", + "stream": "true" + } + }, + "metadata": { + "engine": "llamacpp", + "quantization": "Q4_K_M", + "size": "7B", + } +} +``` | Property | Type | Description | Validation | | ----------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------ | -| `source_url` | string | The model download source. It can be an external url or a local filepath. | Defaults to `pwd`. See [Source_url](#Source_url) | | `object` | enum: `model`, `assistant`, `thread`, `message` | Type of the Jan Object. Always `model` | Defaults to "model" | -| `name` | string | A vanity name | Defaults to filename | -| `description` | string | A vanity description of the model | Defaults to "" | -| `state` | enum[`to_download` , `downloading`, `ready` , `running`] | Needs more thought | Defaults to `to_download` | +| `source_url` | string | The model download source. It can be an external url or a local filepath. | Defaults to `pwd`. See [Source_url](#Source_url) | | `parameters` | map | Defines default model run parameters used by any assistant. | Defaults to `{}` | +| `description` | string | A vanity description of the model | Defaults to "" | | `metadata` | map | Stores additional structured information about the model. | Defaults to `{}` | | `metadata.engine` | enum: `llamacpp`, `api`, `tensorrt` | The model backend used to run model. | Defaults to "llamacpp" | | `metadata.quantization` | string | Supported formats only | See [Custom importers](#Custom-importers) | | `metadata.binaries` | array | Supported formats only. | See [Custom importers](#Custom-importers) | +| `state` | enum[`to_download` , `downloading`, `ready` , `running`] | Needs more thought | Defaults to `to_download` | +| `name` | string | A vanity name | Defaults to filename | -### Source_url +### Model Source + +There are 3 types of model sources + +- Local model +- Remote source +- Cloud API - Users can download models from a `remote` source or reference an existing `local` model. - If this property is not specified in the Model Object file, then the default behavior is to look in the current directory. - -#### Local source_url - - Users can import a local model by providing the filepath to the model ```json @@ -70,14 +117,36 @@ _Users can override run settings at runtime_ "source_url": "./", ``` -#### Remote source_url - - Users can download a model by remote URL. - Supported url formats: - `https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/blob/main/llama-2-7b-chat.Q3_K_L.gguf` - `https://any-source.com/.../model-binary.bin` -#### Custom importers +- Using a remote API to access model `model-azure-openai-gpt4-turbo.json` +- See [source](https://learn.microsoft.com/en-us/azure/ai-services/openai/quickstart?tabs=command-line%2Cpython&pivots=rest-api) + +```json +"source_url": "https://docs-test-001.openai.azure.com/openai.azure.com/docs-test-001/gpt4-turbo", +"parameters": { + "init" { + "API-KEY": "", + "DEPLOYMENT-NAME": "", + "api-version": "2023-05-15" + }, + "runtime": { + "temperature": "0.7", + "max_tokens": "2048", + "presence_penalty": "0", + "top_p": "1", + "stream": "true" + } +} +"metadata": { + "engine": "api", +} +``` + +### Model Formats Additionally, Jan supports importing popular formats. For example, if you provide a HuggingFace URL for a `TheBloke` model, Jan automatically downloads and catalogs all quantizations. Custom importers autofills properties like `metadata.quantization` and `metadata.size`. @@ -89,7 +158,8 @@ Supported URL formats with custom importers: - `azure_openai`: `https://docs-test-001.openai.azure.com/openai.azure.com/docs-test-001/gpt4-turbo` - `openai`: `api.openai.com` -### Generic Example +
+ Example: Zephyr 7B - Model has 1 binary `model-zephyr-7B.json` - See [source](https://huggingface.co/TheBloke/zephyr-7B-beta-GGUF/) @@ -122,8 +192,9 @@ Supported URL formats with custom importers: "size": "7B", } ``` +
-### Example: multiple binaries +### Multiple binaries - Model has multiple binaries `model-llava-1.5-ggml.json` - See [source](https://huggingface.co/mys/ggml_llava-v1.5-13b) @@ -139,112 +210,24 @@ Supported URL formats with custom importers: } ``` -### Example: Azure API +## Models API -- Using a remote API to access model `model-azure-openai-gpt4-turbo.json` -- See [source](https://learn.microsoft.com/en-us/azure/ai-services/openai/quickstart?tabs=command-line%2Cpython&pivots=rest-api) +### Get Model -```json -"source_url": "https://docs-test-001.openai.azure.com/openai.azure.com/docs-test-001/gpt4-turbo", -"parameters": { - "init" { - "API-KEY": "", - "DEPLOYMENT-NAME": "", - "api-version": "2023-05-15" - }, - "runtime": { - "temperature": "0.7", - "max_tokens": "2048", - "presence_penalty": "0", - "top_p": "1", - "stream": "true" - } -} -"metadata": { - "engine": "api", -} -``` - -## Filesystem - -- Everything needed to represent a `model` is packaged into an `Model folder`. -- The `folder` is standalone and can be easily zipped, imported, and exported, e.g. to Github. -- The `folder` always contains at least one `Model Object`, declared in a `json` format. -- The `folder` and `file` do not have to share the same name -- The model `id` is made up of `folder_name/filename` and is thus always unique. - -```sh -/janroot - /models - azure-openai/ # Folder name - azure-openai-gpt3-5.json # File name - - llama2-70b/ - model.json - .gguf -``` - -### Default ./model folder -- Jan ships with a default model folders containing recommended models -- Only the Model Object `json` files are included -- Users must later explicitly download the model binaries -```sh -models/ - mistral-7b/ - mistral-7b.json - hermes-7b/ - hermes-7b.json -``` -### Multiple quantizations - -- Each quantization has its own `Jan Model Object` file - -```sh -llama2-7b-gguf/ - llama2-7b-gguf-Q2.json - llama2-7b-gguf-Q3_K_L.json - .bin -``` -### Multiple model partitions - -- A Model that is partitioned into several binaries use just 1 file - -```sh -llava-ggml/ - llava-ggml-Q5.json - .proj - ggml -``` -### Your locally fine-tuned model - -- ?? - -```sh -llama-70b-finetune/ - llama-70b-finetune-q5.json - .bin -``` -## Jan API -### Model API Object +- OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models/retrieve +- OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models/object - The `Jan Model Object` maps into the `OpenAI Model Object`. - Properties marked with `*` are compatible with the [OpenAI `model` object](https://platform.openai.com/docs/api-reference/models) - Note: The `Jan Model Object` has additional properties when retrieved via its API endpoint. -> OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models/object -### Model lifecycle -Model has 4 states (enum) -- `to_download` -- `downloading` -- `ready` -- `running` +#### Request -### Get Model -> OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models/retrieve -- Example request ```shell curl {JAN_URL}/v1/models/{model_id} ``` -- Example response + +#### Response + ```json { "id": "model-zephyr-7B", @@ -273,14 +256,19 @@ curl {JAN_URL}/v1/models/{model_id} } } ``` + ### List models Lists the currently available models, and provides basic information about each one such as the owner and availability. > OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models/list -- Example request + +#### Request + ```shell= curl {JAN_URL}/v1/models ``` -- Example response + +#### Response + ```json { "object": "list", @@ -310,13 +298,18 @@ curl {JAN_URL}/v1/models "object": "list" } ``` + ### Delete Model > OpenAI Equivalent: https://platform.openai.com/docs/api-reference/models/delete -`- Example request + +#### Request + ```shell curl -X DELETE {JAN_URL}/v1/models/{model_id} ``` -- Example response + +#### Response + ```json { "id": "model-zephyr-7B", @@ -325,14 +318,19 @@ curl -X DELETE {JAN_URL}/v1/models/{model_id} "state": "to_download" } ``` + ### Start Model > Jan-only endpoint The request to start `model` by changing model state from `ready` to `running` -- Example request + +#### Request + ```shell curl -X PUT {JAN_URL}/v1/models{model_id}/start ``` -- Example response + +#### Response + ```json { "id": "model-zephyr-7B", @@ -340,14 +338,19 @@ curl -X PUT {JAN_URL}/v1/models{model_id}/start "state": "running" } ``` + ### Stop Model > Jan-only endpoint The request to start `model` by changing model state from `running` to `ready` -- Example request + +#### Request + ```shell curl -X PUT {JAN_URL}/v1/models/{model_id}/stop ``` -- Example response + +#### Response + ```json { "id": "model-zephyr-7B", @@ -355,18 +358,95 @@ curl -X PUT {JAN_URL}/v1/models/{model_id}/stop "state": "ready" } ``` + ### Download Model > Jan-only endpoint The request to download `model` by changing model state from `to_download` to `downloading` then `ready`once it's done. -- Example request + +#### Request ```shell curl -X POST {JAN_URL}/v1/models/ ``` -- Example response + +#### Response ```json { "id": "model-zephyr-7B", "object": "model", "state": "downloading" } +``` + +## Examples + +### Pre-loaded Models + +- Jan ships with a default model folders containing recommended models +- Only the Model Object `json` files are included +- Users must later explicitly download the model binaries +- +```sh +models/ + mistral-7b/ + mistral-7b.json + hermes-7b/ + hermes-7b.json +``` + +### Azure OpenAI + +- Using a remote API to access model `model-azure-openai-gpt4-turbo.json` +- See [source](https://learn.microsoft.com/en-us/azure/ai-services/openai/quickstart?tabs=command-line%2Cpython&pivots=rest-api) + +```json +"source_url": "https://docs-test-001.openai.azure.com/openai.azure.com/docs-test-001/gpt4-turbo", +"parameters": { + "init" { + "API-KEY": "", + "DEPLOYMENT-NAME": "", + "api-version": "2023-05-15" + }, + "runtime": { + "temperature": "0.7", + "max_tokens": "2048", + "presence_penalty": "0", + "top_p": "1", + "stream": "true" + } +} +"metadata": { + "engine": "api", +} +``` + +### Multiple quantizations + +- Each quantization has its own `Jan Model Object` file + +```sh +llama2-7b-gguf/ + llama2-7b-gguf-Q2.json + llama2-7b-gguf-Q3_K_L.json + .bin +``` + +### Multiple model partitions + +- A Model that is partitioned into several binaries use just 1 file + +```sh +llava-ggml/ + llava-ggml-Q5.json + .proj + ggml +``` + +### Your locally fine-tuned model + +- ?? + +```sh +llama-70b-finetune/ + llama-70b-finetune-q5.json + .bin ``` \ No newline at end of file diff --git a/docs/docs/specs/prompts.md b/docs/docs/specs/prompts.md new file mode 100644 index 000000000..2ec008d8a --- /dev/null +++ b/docs/docs/specs/prompts.md @@ -0,0 +1,7 @@ +--- +title: Prompts +--- + +- [ ] /prompts folder +- [ ] How to add to prompts +- [ ] Assistants can have suggested Prompts \ No newline at end of file diff --git a/docs/docs/specs/settings.md b/docs/docs/specs/settings.md new file mode 100644 index 000000000..a8cf8809c --- /dev/null +++ b/docs/docs/specs/settings.md @@ -0,0 +1,5 @@ +--- +title: Settings +--- + +- [ ] .jan folder in jan root \ No newline at end of file diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 15a2a43af..09757c67a 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -103,7 +103,7 @@ const config = { { specs: [ { - spec: "openapi/OpenAIAPI.yaml", // can be local file, url, or parsed json object + spec: "openapi/jan.yaml", // can be local file, url, or parsed json object route: "/api-reference", // path where to render docs }, ], @@ -144,9 +144,8 @@ const config = { label: "Documentation", }, { - type: "docSidebar", - sidebarId: "apiSidebar", position: "left", + to: "/api-reference", label: "API Reference", }, // Navbar right diff --git a/docs/openapi/OpenAIAPI.yaml b/docs/openapi/jan.yaml similarity index 100% rename from docs/openapi/OpenAIAPI.yaml rename to docs/openapi/jan.yaml diff --git a/docs/sidebars.js b/docs/sidebars.js index 38b93e5ba..fe04d330a 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -19,7 +19,7 @@ const sidebars = { label: "Introduction", link: { type: "doc", id: "intro/introduction" }, collapsible: true, - collapsed: false, + collapsed: true, items: ["intro/quickstart", "intro/how-jan-works"], }, { @@ -34,19 +34,15 @@ const sidebars = { label: "Using Jan", collapsible: true, collapsed: true, - items: ["guide/models", "guide/server"], + items: ["docs/models", "docs/server"], }, { type: "category", label: "Extending Jan", + link: { type: "doc", id: "docs/extensions" }, collapsible: true, collapsed: true, - items: [ - "guide/assistants", - "guide/themes", - "guide/tools", - "guide/modules", - ], + items: ["docs/assistants", "docs/themes", "docs/tools", "docs/modules"], }, { type: "category", @@ -71,6 +67,8 @@ const sidebars = { "specs/files", "specs/jan", "specs/fine-tuning", + "specs/settings", + "specs/prompts", ], }, ], diff --git a/docs/yarn.lock b/docs/yarn.lock index a7eb7a59c..45d9b6a07 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -304,7 +304,7 @@ dependencies: "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": +"@babel/helper-module-imports@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== @@ -1208,7 +1208,7 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.23.2", "@babel/traverse@^7.23.3", "@babel/traverse@^7.4.5": +"@babel/traverse@^7.12.9", "@babel/traverse@^7.18.8", "@babel/traverse@^7.23.2", "@babel/traverse@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.3.tgz#26ee5f252e725aa7aca3474aa5b324eaf7908b5b" integrity sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ== @@ -1731,7 +1731,7 @@ url-loader "^4.1.1" webpack "^5.73.0" -"@emotion/is-prop-valid@^1.1.0": +"@emotion/is-prop-valid@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== @@ -1743,15 +1743,10 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== -"@emotion/stylis@^0.8.4": - version "0.8.5" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" - integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== - -"@emotion/unitless@^0.7.4": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== +"@emotion/unitless@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== "@exodus/schemasafe@^1.0.0-rc.2": version "1.3.0" @@ -1932,10 +1927,10 @@ require-from-string "^2.0.2" uri-js "^4.2.2" -"@redocly/openapi-core@1.0.0-beta.123": - version "1.0.0-beta.123" - resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.0.0-beta.123.tgz#0c29ae9fabe5f143f571caf608a7d025f41125db" - integrity sha512-W6MbUWpb/VaV+Kf0c3jmMIJw3WwwF7iK5nAfcOS+ZwrlbxtIl37+1hEydFlJ209vCR9HL12PaMwdh2Vpihj6Jw== +"@redocly/openapi-core@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.4.0.tgz#d1ce8e391b32452082f754315c8eb265690b784f" + integrity sha512-M4f0H3XExPvJ0dwbEou7YKLzkpz2ZMS9JoNvrbEECO7WCwjGZ4AjbiUjp2p0ZzFMNIiNgTVUJJmkxGxsXW471Q== dependencies: "@redocly/ajv" "^8.11.0" "@types/node" "^14.11.8" @@ -1948,7 +1943,7 @@ pluralize "^8.0.0" yaml-ast-parser "0.0.43" -"@redocly/openapi-core@^1.0.0-beta.104": +"@redocly/openapi-core@^1.0.0-rc.2": version "1.4.1" resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.4.1.tgz#0620a5e204159626a1d99b88f758e23ef0cb5740" integrity sha512-oAhnG8MKocM9LuP++NGFxdniNKWSLA7hzHPQoOK92LIP/DdvXx8pEeZ68UTNxIXhKonoUcO6s86I3L0zj143zg== @@ -2267,9 +2262,9 @@ "@types/node" "*" "@types/node@*": - version "20.9.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.1.tgz#9d578c610ce1e984adda087f685ace940954fe19" - integrity sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA== + version "20.9.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.2.tgz#002815c8e87fe0c9369121c78b52e800fadc0ac6" + integrity sha512-WHZXKFCEyIUJzAwh3NyyTHYSR35SevJ6mZ1nWwJafKtiQbqRTIKSRcw3Ma3acqgsent3RRDqeVwpHntMk+9irg== dependencies: undici-types "~5.26.4" @@ -2391,6 +2386,11 @@ dependencies: "@types/node" "*" +"@types/stylis@^4.0.2": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.3.tgz#0dff504fc23487a02a29209b162249070e83a0da" + integrity sha512-86XLCVEmWagiUEbr2AjSbeY4qHN9jMm3pgM3PuBYfLIbT0MpDSnA3GA/4W7KoH/C/eeK77kNaeIxZzjhKYIBgw== + "@types/unist@^2", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": version "2.0.10" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" @@ -2853,17 +2853,6 @@ babel-plugin-polyfill-regenerator@^0.5.3: dependencies: "@babel/helper-define-polyfill-provider" "^0.4.3" -"babel-plugin-styled-components@>= 1.12.0": - version "2.1.4" - resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz#9a1f37c7f32ef927b4b008b529feb4a2c82b1092" - integrity sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.22.5" - lodash "^4.17.21" - picomatch "^2.3.1" - bail@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" @@ -3623,7 +3612,7 @@ css-select@^5.1.0: domutils "^3.0.1" nth-check "^2.0.1" -css-to-react-native@^3.0.0: +css-to-react-native@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== @@ -3718,7 +3707,7 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" -csstype@^3.0.2: +csstype@^3.0.2, csstype@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== @@ -4176,13 +4165,13 @@ dns-packet@^5.2.2: dependencies: "@leichtgewicht/ip-codec" "^2.0.1" -docusaurus-plugin-redoc@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/docusaurus-plugin-redoc/-/docusaurus-plugin-redoc-1.6.0.tgz#a3d07bb10a99e9195aab3e2ae4296f49a1530e4a" - integrity sha512-bvOmVcJ9Lo6ymyaHCoXTjN6Ck7/Dog1KRsJgZilB6ukHQ7d6nJrAwAEoDF1rXto8tOvIUqVb6Zzy7qDPvBQA1Q== +docusaurus-plugin-redoc@2.0.0, docusaurus-plugin-redoc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/docusaurus-plugin-redoc/-/docusaurus-plugin-redoc-2.0.0.tgz#2f7b2ee9fd4beb86cdc2d88efd9ba87b76752484" + integrity sha512-+cUy/wnQVQmuygMxP0gAWODzo502QruhyUTHShxMEBhkL57dOx0COMgd8Iu4BlqiW9RGzN3hEZEpLzGTaGFOtQ== dependencies: - "@redocly/openapi-core" "1.0.0-beta.123" - redoc "2.0.0" + "@redocly/openapi-core" "1.4.0" + redoc "2.1.3" docusaurus-plugin-sass@^0.2.5: version "0.2.5" @@ -4191,18 +4180,18 @@ docusaurus-plugin-sass@^0.2.5: dependencies: sass-loader "^10.1.1" -docusaurus-theme-redoc@1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/docusaurus-theme-redoc/-/docusaurus-theme-redoc-1.6.4.tgz#29736f5590c0b04f3538087ab6e17d3d06d7e099" - integrity sha512-dEKh/HYWGqGG2Qoy2CgXon28Z32Z/LdNzZvreAQqeYtiXb7Ey9gZFwSstpU4jEcoUa347NCYseLPn8bkxlemCw== +docusaurus-theme-redoc@2.0.0, docusaurus-theme-redoc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/docusaurus-theme-redoc/-/docusaurus-theme-redoc-2.0.0.tgz#2cbae0f51f1c1f9527069e54173cfdb184d4a995" + integrity sha512-BOew0bVJvc8LV+zMMURx/2pWkk8VQNY2Wow2AFVSCGCkHi4UMwpq50VFL42t0MF6EnoSY9hqArqNfofpUFiiOw== dependencies: - "@redocly/openapi-core" "1.0.0-beta.123" + "@redocly/openapi-core" "1.4.0" clsx "^1.2.1" copyfiles "^2.4.1" lodash "^4.17.21" - mobx "^6.8.0" - redoc "2.0.0" - styled-components "^5.3.6" + mobx "^6.10.2" + redoc "2.1.3" + styled-components "^6.1.0" dom-converter@^0.2.0: version "0.2.0" @@ -5125,7 +5114,7 @@ history@^4.9.0: tiny-warning "^1.0.0" value-equal "^1.0.1" -hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.1.0: +hoist-non-react-statics@^3.1.0: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -6139,7 +6128,7 @@ mobx-react@^7.2.0: dependencies: mobx-react-lite "^3.4.0" -mobx@^6.8.0: +mobx@^6.10.2: version "6.11.0" resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.11.0.tgz#8a748b18c140892d1d0f28b71315f1f639180006" integrity sha512-qngYCmr0WJiFRSAtYe82DB7SbzvbhehkJjONs8ydynUwoazzUQHZdAlaJqUfks5j4HarhWsZrMRhV7HtSO9HOQ== @@ -6410,7 +6399,7 @@ open@^8.0.9, open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" -openapi-sampler@^1.3.0: +openapi-sampler@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.3.1.tgz#eebb2a1048f830cc277398bc8022b415f887e859" integrity sha512-Ert9mvc2tLPmmInwSyGZS+v4Ogu9/YoZuq9oP3EdUklg2cad6+IGndP9yqJJwbgdXwZibiq5fpv6vYujchdJFg== @@ -6993,7 +6982,7 @@ postcss-zindex@^5.1.0: resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff" integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A== -postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.30: +postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.30, postcss@^8.4.31: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -7325,10 +7314,10 @@ react-simple-code-editor@^0.10.0: resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.10.0.tgz#73e7ac550a928069715482aeb33ccba36efe2373" integrity sha512-bL5W5mAxSW6+cLwqqVWY47Silqgy2DKDTR4hDBrLrUqC5BXc29YVx17l2IZk5v36VcDEq1Bszu2oHm1qBwKqBA== -react-tabs@^3.2.2: - version "3.2.3" - resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-3.2.3.tgz#ccbb3e1241ad3f601047305c75db661239977f2f" - integrity sha512-jx325RhRVnS9DdFbeF511z0T0WEqEoMl1uCE3LoZ6VaZZm7ytatxbum0B8bCTmaiV0KsU+4TtLGTGevCic7SWg== +react-tabs@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-4.3.0.tgz#9f4db0fd209ba4ab2c1e78993ff964435f84af62" + integrity sha512-2GfoG+f41kiBIIyd3gF+/GRCCYtamC8/2zlAcD8cqQmqI9Q+YVz7fJLHMmU9pXDVYYHpJeCgUSBJju85vu5q8Q== dependencies: clsx "^1.1.0" prop-types "^15.5.0" @@ -7415,12 +7404,12 @@ recursive-readdir@^2.2.2: dependencies: minimatch "^3.0.5" -redoc@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.0.0.tgz#8b3047ca75b84d31558c6c92da7f84affef35c3e" - integrity sha512-rU8iLdAkT89ywOkYk66Mr+IofqaMASlRvTew0dJvopCORMIPUcPMxjlJbJNC6wsn2vvMnpUFLQ/0ISDWn9BWag== +redoc@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.1.3.tgz#612c9fed744993d5fc99cbf39fe9056bd1034fa5" + integrity sha512-d7F9qLLxaiFW4GC03VkwlX9wuRIpx9aiIIf3o6mzMnqPfhxrn2IRKGndrkJeVdItgCfmg9jXZiFEowm60f1meQ== dependencies: - "@redocly/openapi-core" "^1.0.0-beta.104" + "@redocly/openapi-core" "^1.0.0-rc.2" classnames "^2.3.1" decko "^1.2.0" dompurify "^2.2.8" @@ -7430,26 +7419,25 @@ redoc@2.0.0: mark.js "^8.11.1" marked "^4.0.15" mobx-react "^7.2.0" - openapi-sampler "^1.3.0" + openapi-sampler "^1.3.1" path-browserify "^1.0.1" perfect-scrollbar "^1.5.5" polished "^4.1.3" prismjs "^1.27.0" prop-types "^15.7.2" - react-tabs "^3.2.2" + react-tabs "^4.3.0" slugify "~1.4.7" stickyfill "^1.1.1" - style-loader "^3.3.1" swagger2openapi "^7.0.6" url-template "^2.0.8" -redocusaurus@^1.6.3: - version "1.6.4" - resolved "https://registry.yarnpkg.com/redocusaurus/-/redocusaurus-1.6.4.tgz#0aaa49cf68056a958b4fac5f93259c85b4ae0f75" - integrity sha512-0o7bDrs5eLOiMR7BLjdZ6nYEQBNvle/MrUJsvfaKShkZHvbelAJPmH7muoiL+JWcxGCiI8vuh9EKTDDqqRkE9A== +redocusaurus@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redocusaurus/-/redocusaurus-2.0.0.tgz#83481ff4f5c6f2a00df901e359850bef3a7c43c6" + integrity sha512-wRSpkY+PwkqAj98RD+1ec6U8KDKySH6GT0jahWY+dPlpckyHj7D5i3ipXdTiJ6jXXCyM2qUwimX5PZJEdooDhA== dependencies: - docusaurus-plugin-redoc "1.6.0" - docusaurus-theme-redoc "1.6.4" + docusaurus-plugin-redoc "2.0.0" + docusaurus-theme-redoc "2.0.0" reftools@^1.1.9: version "1.1.9" @@ -8262,11 +8250,6 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== -style-loader@^3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" - integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== - style-to-object@0.3.0, style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -8274,21 +8257,20 @@ style-to-object@0.3.0, style-to-object@^0.3.0: dependencies: inline-style-parser "0.1.1" -styled-components@^5.3.6: - version "5.3.11" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.11.tgz#9fda7bf1108e39bf3f3e612fcc18170dedcd57a8" - integrity sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw== +styled-components@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.1.tgz#a5414ada07fb1c17b96a26a05369daa4e2ad55e5" + integrity sha512-cpZZP5RrKRIClBW5Eby4JM1wElLVP4NQrJbJ0h10TidTyJf4SIIwa3zLXOoPb4gJi8MsJ8mjq5mu2IrEhZIAcQ== dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/traverse" "^7.4.5" - "@emotion/is-prop-valid" "^1.1.0" - "@emotion/stylis" "^0.8.4" - "@emotion/unitless" "^0.7.4" - babel-plugin-styled-components ">= 1.12.0" - css-to-react-native "^3.0.0" - hoist-non-react-statics "^3.0.0" + "@emotion/is-prop-valid" "^1.2.1" + "@emotion/unitless" "^0.8.0" + "@types/stylis" "^4.0.2" + css-to-react-native "^3.2.0" + csstype "^3.1.2" + postcss "^8.4.31" shallowequal "^1.1.0" - supports-color "^5.5.0" + stylis "^4.3.0" + tslib "^2.5.0" stylehacks@^5.1.1: version "5.1.1" @@ -8298,7 +8280,7 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" -stylis@^4.1.2: +stylis@^4.1.2, stylis@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.0.tgz#abe305a669fc3d8777e10eefcfc73ad861c5588c" integrity sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ== @@ -8316,7 +8298,7 @@ sucrase@^3.32.0: pirates "^4.0.1" ts-interface-checker "^0.1.9" -supports-color@^5.3.0, supports-color@^5.5.0: +supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== @@ -8540,7 +8522,7 @@ ts-interface-checker@^0.1.9: resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==