diff --git a/365085a8-a90a-43f9-a779-f8769ec7eca1.html b/365085a8-a90a-43f9-a779-f8769ec7eca1.html index 76320b13a0..2c6c3b7565 100644 --- a/365085a8-a90a-43f9-a779-f8769ec7eca1.html +++ b/365085a8-a90a-43f9-a779-f8769ec7eca1.html @@ -10,7 +10,7 @@ - + diff --git a/404.html b/404.html index 8021cc65f5..13389ce574 100644 --- a/404.html +++ b/404.html @@ -10,7 +10,7 @@ - + diff --git a/Components/components-agents.html b/Components/components-agents.html index c4aafa6d19..eb72392174 100644 --- a/Components/components-agents.html +++ b/Components/components-agents.html @@ -10,7 +10,7 @@ - + diff --git a/Components/components-memories.html b/Components/components-memories.html index a494f3e76e..b81a0e9062 100644 --- a/Components/components-memories.html +++ b/Components/components-memories.html @@ -10,7 +10,7 @@ - + diff --git a/Components/components-tools.html b/Components/components-tools.html index 58860777af..bf9a8461f3 100644 --- a/Components/components-tools.html +++ b/Components/components-tools.html @@ -10,7 +10,7 @@ - + diff --git a/Starter-Projects/starter-projects-dynamic-agent.html b/Starter-Projects/starter-projects-dynamic-agent.html index 6bfcc9c5e1..f15385f74a 100644 --- a/Starter-Projects/starter-projects-dynamic-agent.html +++ b/Starter-Projects/starter-projects-dynamic-agent.html @@ -10,7 +10,7 @@ - + diff --git a/Starter-Projects/starter-projects-simple-agent.html b/Starter-Projects/starter-projects-simple-agent.html index 631da9cb2d..b2e2581946 100644 --- a/Starter-Projects/starter-projects-simple-agent.html +++ b/Starter-Projects/starter-projects-simple-agent.html @@ -10,7 +10,7 @@ - + diff --git a/Starter-Projects/starter-projects-travel-planning-agent.html b/Starter-Projects/starter-projects-travel-planning-agent.html index 3159ef8133..e276dade92 100644 --- a/Starter-Projects/starter-projects-travel-planning-agent.html +++ b/Starter-Projects/starter-projects-travel-planning-agent.html @@ -10,7 +10,7 @@ - + diff --git a/assets/images/1009571828-8840dd6a62739230e43b0a557518b5ff.png b/assets/images/1009571828-8840dd6a62739230e43b0a557518b5ff.png deleted file mode 100644 index 3ffdd17936..0000000000 Binary files a/assets/images/1009571828-8840dd6a62739230e43b0a557518b5ff.png and /dev/null differ diff --git a/assets/images/1813063533-a712786cbca2cf05bc6778154e53ffad.png b/assets/images/1813063533-a712786cbca2cf05bc6778154e53ffad.png deleted file mode 100644 index 77077d463c..0000000000 Binary files a/assets/images/1813063533-a712786cbca2cf05bc6778154e53ffad.png and /dev/null differ diff --git a/assets/images/383358552-b5376c867c0f56e5572991427f902303.png b/assets/images/383358552-b5376c867c0f56e5572991427f902303.png deleted file mode 100644 index aa23164dea..0000000000 Binary files a/assets/images/383358552-b5376c867c0f56e5572991427f902303.png and /dev/null differ diff --git a/assets/images/563306242-e3f3830c789f4c5c23e6794c29c0d71d.png b/assets/images/563306242-e3f3830c789f4c5c23e6794c29c0d71d.png deleted file mode 100644 index c8b887ca1b..0000000000 Binary files a/assets/images/563306242-e3f3830c789f4c5c23e6794c29c0d71d.png and /dev/null differ diff --git a/assets/js/22dd74f7.e0cf8331.js b/assets/js/22dd74f7.f0c578de.js similarity index 54% rename from assets/js/22dd74f7.e0cf8331.js rename to assets/js/22dd74f7.f0c578de.js index 565d79c450..ab97e41969 100644 --- a/assets/js/22dd74f7.e0cf8331.js +++ b/assets/js/22dd74f7.f0c578de.js @@ -1 +1 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1567],{5226:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"defaultSidebar":[{"type":"category","label":"What\u2019s New?","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"1.0 - A new chapter for Langflow","href":"/whats-new-a-new-chapter-langflow","docId":"What\u2019s-New/whats-new-a-new-chapter-langflow","unlisted":false}]},{"type":"category","label":"Getting Started","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"\ud83d\udc4b\xa0Welcome to Langflow","href":"/","docId":"Getting-Started/\ud83d\udc4b\xa0Welcome-to-Langflow","unlisted":false},{"type":"link","label":"\ud83d\udce6\xa0Installation","href":"/getting-started-installation","docId":"Getting-Started/getting-started-installation","unlisted":false},{"type":"link","label":"\u26a1\ufe0f Quickstart","href":"/getting-started-quickstart","docId":"Getting-Started/getting-started-quickstart","unlisted":false},{"type":"link","label":"\u2757\ufe0f Common Installation Issues","href":"/getting-started-common-installation-issues","docId":"Getting-Started/getting-started-common-installation-issues","unlisted":false}]},{"type":"category","label":"Starter Projects","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Basic Prompting","href":"/starter-projects-basic-prompting","docId":"Starter-Projects/starter-projects-basic-prompting","unlisted":false},{"type":"link","label":"Blog Writer","href":"/starter-projects-blog-writer","docId":"Starter-Projects/starter-projects-blog-writer","unlisted":false},{"type":"link","label":"Document QA","href":"/starter-projects-document-qa","docId":"Starter-Projects/starter-projects-document-qa","unlisted":false},{"type":"link","label":"Memory Chatbot","href":"/starter-projects-memory-chatbot","docId":"Starter-Projects/starter-projects-memory-chatbot","unlisted":false},{"type":"link","label":"Vector Store RAG","href":"/starter-projects-vector-store-rag","docId":"Starter-Projects/starter-projects-vector-store-rag","unlisted":false},{"type":"link","label":"Dynamic Agent","href":"/Starter-Projects/starter-projects-dynamic-agent","docId":"Starter-Projects/starter-projects-dynamic-agent","unlisted":false},{"type":"link","label":"Simple Agent","href":"/Starter-Projects/starter-projects-simple-agent","docId":"Starter-Projects/starter-projects-simple-agent","unlisted":false},{"type":"link","label":"Travel Planning Agent","href":"/Starter-Projects/starter-projects-travel-planning-agent","docId":"Starter-Projects/starter-projects-travel-planning-agent","unlisted":false}]},{"type":"category","label":"Guides","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"\ud83d\udcda New to LLMs?","href":"/guides-new-to-llms","docId":"Guides/guides-new-to-llms","unlisted":false},{"type":"link","label":"Chat Memory","href":"/guides-chat-memory","docId":"Guides/guides-chat-memory","unlisted":false},{"type":"link","label":"Data & Message","href":"/guides-data-message","docId":"Guides/guides-data-message","unlisted":false}]},{"type":"category","label":"Workspace","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Playground","href":"/workspace-playground","docId":"Workspace/workspace-playground","unlisted":false},{"type":"link","label":"API","href":"/workspace-api","docId":"Workspace/workspace-api","unlisted":false},{"type":"link","label":"Logs","href":"/workspace-logs","docId":"Workspace/workspace-logs","unlisted":false}],"href":"/workspace"},{"type":"category","label":"Components","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Inputs & Outputs","href":"/components-io","docId":"Components/components-io","unlisted":false},{"type":"link","label":"Prompts","href":"/components-prompts","docId":"Components/components-prompts","unlisted":false},{"type":"link","label":"Data","href":"/components-data","docId":"Components/components-data","unlisted":false},{"type":"link","label":"Helpers","href":"/components-helpers","docId":"Components/components-helpers","unlisted":false},{"type":"link","label":"Models","href":"/components-models","docId":"Components/components-models","unlisted":false},{"type":"link","label":"Embedding Models","href":"/components-embedding-models","docId":"Components/components-embedding-models","unlisted":false},{"type":"link","label":"Vector Stores","href":"/components-vector-stores","docId":"Components/components-vector-stores","unlisted":false},{"type":"link","label":"Custom Components","href":"/components-custom-components","docId":"Components/components-custom-components","unlisted":false},{"type":"link","label":"RAG","href":"/components-rag","docId":"Components/components-rag","unlisted":false},{"type":"link","label":"Loaders","href":"/components-loaders","docId":"Components/components-loaders","unlisted":false},{"type":"link","label":"Agents","href":"/Components/components-agents","docId":"Components/components-agents","unlisted":false},{"type":"link","label":"Memories","href":"/Components/components-memories","docId":"Components/components-memories","unlisted":false},{"type":"link","label":"Tools","href":"/Components/components-tools","docId":"Components/components-tools","unlisted":false}],"href":"/components"},{"type":"category","label":"Deployment","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"\ud83e\udd17\xa0Spaces","href":"/deployment-hugging-face-spaces","docId":"Deployment/deployment-hugging-face-spaces","unlisted":false},{"type":"link","label":"Kubernetes","href":"/deployment-kubernetes","docId":"Deployment/deployment-kubernetes","unlisted":false},{"type":"link","label":"Docker","href":"/deployment-docker","docId":"Deployment/deployment-docker","unlisted":false},{"type":"link","label":"GCP","href":"/deployment-gcp","docId":"Deployment/deployment-gcp","unlisted":false},{"type":"link","label":"Render","href":"/deployment-render","docId":"Deployment/deployment-render","unlisted":false},{"type":"link","label":"Railway","href":"/deployment-railway","docId":"Deployment/deployment-railway","unlisted":false}]},{"type":"category","label":"Settings","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Global Variables","href":"/settings-global-variables","docId":"Settings/settings-global-variables","unlisted":false},{"type":"link","label":"Project & General Settings","href":"/settings-project-general-settings","docId":"Settings/settings-project-general-settings","unlisted":false}]},{"type":"category","label":"Configuration","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Authentication","href":"/configuration-authentication","docId":"Configuration/configuration-authentication","unlisted":false},{"type":"link","label":"API Keys","href":"/configuration-api-keys","docId":"Configuration/configuration-api-keys","unlisted":false},{"type":"link","label":"Langflow CLI","href":"/configuration-cli","docId":"Configuration/configuration-cli","unlisted":false},{"type":"link","label":"My Collection","href":"/365085a8-a90a-43f9-a779-f8769ec7eca1","docId":"Configuration/My-Collection","unlisted":false},{"type":"link","label":"Run Langflow in backend-only mode","href":"/configuration-backend-only","docId":"Configuration/configuration-backend-only","unlisted":false},{"type":"link","label":"Auto-saving","href":"/configuration-auto-save","docId":"Configuration/configuration-auto-saving","unlisted":false},{"type":"link","label":"Environment Variables","href":"/environment-variables","docId":"Configuration/environment-variables","unlisted":false}]},{"type":"category","label":"Integrations","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"AssemblyAI","href":"/integrations-assemblyai","docId":"Integrations/integrations-assemblyai","unlisted":false},{"type":"link","label":"Langfuse","href":"/integrations-langfuse","docId":"Integrations/integrations-langfuse","unlisted":false},{"type":"link","label":"LangSmith","href":"/integrations-langsmith","docId":"Integrations/integrations-langsmith","unlisted":false},{"type":"link","label":"LangWatch","href":"/integrations-langwatch","docId":"Integrations/integrations-langwatch","unlisted":false},{"type":"category","label":"Notion","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Setup","href":"/integrations/notion/setup","docId":"Integrations/Notion/integrations-notion","unlisted":false},{"type":"link","label":"Notion Meeting Notes Agent","href":"/integrations/notion/notion-agent-meeting-notes","docId":"Integrations/Notion/notion-agent-meeting-notes","unlisted":false},{"type":"link","label":"Notion Conversational Agent","href":"/integrations/notion/notion-agent-conversational","docId":"Integrations/Notion/notion-agent-conversational","unlisted":false}]}]},{"type":"category","label":"Contributing","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Telemetry","href":"/contributing-telemetry","docId":"Contributing/contributing-telemetry","unlisted":false},{"type":"link","label":"How to contribute?","href":"/contributing-how-to-contribute","docId":"Contributing/contributing-how-to-contribute","unlisted":false},{"type":"link","label":"GitHub Issues","href":"/contributing-github-issues","docId":"Contributing/contributing-github-issues","unlisted":false},{"type":"link","label":"Community","href":"/contributing-community","docId":"Contributing/contributing-community","unlisted":false}]}]},"docs":{"Components/components":{"id":"Components/components","title":"Intro to Components","description":"Component","sidebar":"defaultSidebar"},"Components/components-agents":{"id":"Components/components-agents","title":"Agents","description":"Agent components are used to define the behavior and capabilities of AI agents in your flow. Agents can interact with APIs, databases, and other services, but can also use LLMs as a reasoning engine to decide which course to take in your flow.","sidebar":"defaultSidebar"},"Components/components-custom-components":{"id":"Components/components-custom-components","title":"Custom Components","description":"Custom components are created within Langflow and extend the platform\'s functionality with custom, resusable Python code.","sidebar":"defaultSidebar"},"Components/components-data":{"id":"Components/components-data","title":"Data","description":"API Request","sidebar":"defaultSidebar"},"Components/components-embedding-models":{"id":"Components/components-embedding-models","title":"Embedding Models","description":"Embeddings models are used to convert text into numerical vectors. These vectors can be used for various tasks such as similarity search, clustering, and classification.","sidebar":"defaultSidebar"},"Components/components-helpers":{"id":"Components/components-helpers","title":"Helpers","description":"Helper components provide utility functions to help manage data, tasks, and other components in your flow.","sidebar":"defaultSidebar"},"Components/components-io":{"id":"Components/components-io","title":"Inputs & Outputs","description":"This category of components defines where data enters and exits your flow. They dynamically alter the Playground and can be renamed to facilitate building and maintaining your flows.","sidebar":"defaultSidebar"},"Components/components-loaders":{"id":"Components/components-loaders","title":"Loaders","description":"Loaders are components used to load documents from various sources, such as databases, websites, and local files. They can be used to fetch data from external sources and convert it into a format that can be processed by other components.","sidebar":"defaultSidebar"},"Components/components-memories":{"id":"Components/components-memories","title":"Memories","description":"Chat memory components store and retrieve chat messages by session_id.","sidebar":"defaultSidebar"},"Components/components-models":{"id":"Components/components-models","title":"Models","description":"Model components are used to generate text using language models. These components can be used to generate text for various tasks such as chatbots, content generation, and more.","sidebar":"defaultSidebar"},"Components/components-prompts":{"id":"Components/components-prompts","title":"Prompts","description":"A prompt serves as the input to a language model, comprising multiple components that can be parameterized using prompt templates.","sidebar":"defaultSidebar"},"Components/components-rag":{"id":"Components/components-rag","title":"RAG","description":"RAG (Retrieval-Augmented Generation) components process a user query by retrieving relevant documents and generating a concise summary that addresses the user\'s question.","sidebar":"defaultSidebar"},"Components/components-tools":{"id":"Components/components-tools","title":"Tools","description":"Tool components are used to interact with external services, APIs, and tools. They can be used to search the web, query databases, and perform other tasks.","sidebar":"defaultSidebar"},"Components/components-vector-stores":{"id":"Components/components-vector-stores","title":"Vector Stores","description":"Vector databases are used to store and search for vectors. They can be used to store embeddings, search for similar vectors, and perform other vector operations.","sidebar":"defaultSidebar"},"Configuration/configuration-api-keys":{"id":"Configuration/configuration-api-keys","title":"API Keys","description":"Langflow provides an API key functionality that allows users to access their individual components and flows without traditional login authentication. The API key is a user-specific token that can be included in the request header, query parameter, or as a command line argument to authenticate API calls. This documentation outlines how to generate, use, and manage API keys in Langflow.","sidebar":"defaultSidebar"},"Configuration/configuration-authentication":{"id":"Configuration/configuration-authentication","title":"Authentication","description":"This page may contain outdated information. It will be updated as soon as possible.","sidebar":"defaultSidebar"},"Configuration/configuration-auto-saving":{"id":"Configuration/configuration-auto-saving","title":"Auto-saving","description":"Langflow currently supports both manual and auto-saving functionality.","sidebar":"defaultSidebar"},"Configuration/configuration-backend-only":{"id":"Configuration/configuration-backend-only","title":"Run Langflow in backend-only mode","description":"Langflow can run in --backend-only mode to expose a Langflow app as an API endpoint, without running the frontend UI.","sidebar":"defaultSidebar"},"Configuration/configuration-cli":{"id":"Configuration/configuration-cli","title":"Langflow CLI","description":"The Langflow command line interface (Langflow CLI) is the main interface for managing and running the Langflow server.","sidebar":"defaultSidebar"},"Configuration/environment-variables":{"id":"Configuration/environment-variables","title":"Environment Variables","description":"Langflow lets you configure a number of settings using environment variables.","sidebar":"defaultSidebar"},"Configuration/My-Collection":{"id":"Configuration/My-Collection","title":"My Collection","description":"This page may contain outdated information. It will be updated as soon as possible.","sidebar":"defaultSidebar"},"Contributing/contributing-community":{"id":"Contributing/contributing-community","title":"Community","description":"\ud83e\udd16 Join\xa0Langflow\xa0Discord server","sidebar":"defaultSidebar"},"Contributing/contributing-github-issues":{"id":"Contributing/contributing-github-issues","title":"GitHub Issues","description":"Our\xa0issues\xa0page is kept up to date with bugs, improvements, and feature requests. There is a taxonomy of labels to help with sorting and discovery of issues of interest.","sidebar":"defaultSidebar"},"Contributing/contributing-how-to-contribute":{"id":"Contributing/contributing-how-to-contribute","title":"How to contribute?","description":"This page may contain outdated information. It will be updated as soon as possible.","sidebar":"defaultSidebar"},"Contributing/contributing-telemetry":{"id":"Contributing/contributing-telemetry","title":"Telemetry","description":"This page may contain outdated information. It will be updated as soon as possible.","sidebar":"defaultSidebar"},"Deployment/deployment-docker":{"id":"Deployment/deployment-docker","title":"Docker","description":"This guide will help you get LangFlow up and running using Docker and Docker Compose.","sidebar":"defaultSidebar"},"Deployment/deployment-gcp":{"id":"Deployment/deployment-gcp","title":"GCP","description":"To deploy Langflow on Google Cloud Platform using Cloud Shell, use the below script.","sidebar":"defaultSidebar"},"Deployment/deployment-hugging-face-spaces":{"id":"Deployment/deployment-hugging-face-spaces","title":"\ud83e\udd17\xa0Spaces","description":"HuggingFace Spaces","sidebar":"defaultSidebar"},"Deployment/deployment-kubernetes":{"id":"Deployment/deployment-kubernetes","title":"Kubernetes","description":"This guide will help you get LangFlow up and running in Kubernetes cluster, including the following steps:","sidebar":"defaultSidebar"},"Deployment/deployment-railway":{"id":"Deployment/deployment-railway","title":"Railway","description":"Deploy on Railway","sidebar":"defaultSidebar"},"Deployment/deployment-render":{"id":"Deployment/deployment-render","title":"Render","description":"Deploy on Render","sidebar":"defaultSidebar"},"Getting-Started/\ud83d\udc4b\xa0Welcome-to-Langflow":{"id":"Getting-Started/\ud83d\udc4b\xa0Welcome-to-Langflow","title":"\ud83d\udc4b\xa0Welcome to Langflow","description":"Introduction","sidebar":"defaultSidebar"},"Getting-Started/getting-started-common-installation-issues":{"id":"Getting-Started/getting-started-common-installation-issues","title":"\u2757\ufe0f Common Installation Issues","description":"This is a list of possible issues that you may encounter when installing Langflow and how to solve them.","sidebar":"defaultSidebar"},"Getting-Started/getting-started-installation":{"id":"Getting-Started/getting-started-installation","title":"\ud83d\udce6\xa0Installation","description":"DataStax Langflow","sidebar":"defaultSidebar"},"Getting-Started/getting-started-quickstart":{"id":"Getting-Started/getting-started-quickstart","title":"\u26a1\ufe0f Quickstart","description":"Prerequisites","sidebar":"defaultSidebar"},"Guides/guides-chat-memory":{"id":"Guides/guides-chat-memory","title":"Chat Memory","description":"Langflow allows every chat message to be stored, and a single flow can have multiple memory sessions. This enables you to create separate memories for agents to store and recall information as needed.","sidebar":"defaultSidebar"},"Guides/guides-data-message":{"id":"Guides/guides-data-message","title":"Data & Message","description":"In Langflow, the\xa0Data\xa0and\xa0Message\xa0objects serve as structured, functional representations of data that enhance the capabilities and reliability of the platform.","sidebar":"defaultSidebar"},"Guides/guides-new-to-llms":{"id":"Guides/guides-new-to-llms","title":"\ud83d\udcda New to LLMs?","description":"Large Language Models, or LLMs, are part of an exciting new world in computing.","sidebar":"defaultSidebar"},"Integrations/integrations-assemblyai":{"id":"Integrations/integrations-assemblyai","title":"AssemblyAI","description":"The AssemblyAI components allow you to apply powerful Speech AI models to your app for tasks like:","sidebar":"defaultSidebar"},"Integrations/integrations-langfuse":{"id":"Integrations/integrations-langfuse","title":"Langfuse","description":"Langfuse is an observability and analytics platform specifically designed for language models and AI applications.","sidebar":"defaultSidebar"},"Integrations/integrations-langsmith":{"id":"Integrations/integrations-langsmith","title":"LangSmith","description":"LangSmith is a full-lifecycle DevOps service from LangChain that provides monitoring and observability. To integrate with Langflow, just add your LangChain API key as a Langflow environment variable and you are good to go!","sidebar":"defaultSidebar"},"Integrations/integrations-langwatch":{"id":"Integrations/integrations-langwatch","title":"LangWatch","description":"938674091aac4d9d9aa4aa6eb5c215b4}","sidebar":"defaultSidebar"},"Integrations/Notion/integrations-notion":{"id":"Integrations/Notion/integrations-notion","title":"Setup","description":"To use Notion components in Langflow, you first need to create a Notion integration and configure it with the necessary capabilities. This guide will walk you through the process of setting up a Notion integration and granting it access to your Notion databases.","sidebar":"defaultSidebar"},"Integrations/Notion/notion-agent-conversational":{"id":"Integrations/Notion/notion-agent-conversational","title":"Notion Conversational Agent","description":"The Notion Conversational Agent is an AI-powered assistant that interacts with your Notion workspace through natural language conversations. This flow performs Notion-related tasks like creating pages, searching for information, and managing content, all through a chat interface.","sidebar":"defaultSidebar"},"Integrations/Notion/notion-agent-meeting-notes":{"id":"Integrations/Notion/notion-agent-meeting-notes","title":"Notion Meeting Notes Agent","description":"The Notion Agent for Meeting Notes is an AI-powered tool that automatically processes meeting transcripts and updates your Notion workspace. It identifies tasks, action items, and key points from your meetings, then creates new tasks or updates existing ones in Notion without manual input.","sidebar":"defaultSidebar"},"Settings/settings-global-variables":{"id":"Settings/settings-global-variables","title":"Global Variables","description":"Global variables let you store and reuse generic input values and credentials across your projects.","sidebar":"defaultSidebar"},"Settings/settings-project-general-settings":{"id":"Settings/settings-project-general-settings","title":"Project & General Settings","description":"This page may contain outdated information. It will be updated as soon as possible.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-basic-prompting":{"id":"Starter-Projects/starter-projects-basic-prompting","title":"Basic Prompting","description":"Prompts serve as the inputs to a large language model (LLM), acting as the interface between human instructions and computational tasks.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-blog-writer":{"id":"Starter-Projects/starter-projects-blog-writer","title":"Blog Writer","description":"Build a blog writer with OpenAI that uses URLs for reference content.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-document-qa":{"id":"Starter-Projects/starter-projects-document-qa","title":"Document QA","description":"Build a question-and-answer chatbot with a document loaded from local memory.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-dynamic-agent":{"id":"Starter-Projects/starter-projects-dynamic-agent","title":"Dynamic Agent","description":"Build a Dynamic Agent flow for an agentic application using the CrewAI.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-memory-chatbot":{"id":"Starter-Projects/starter-projects-memory-chatbot","title":"Memory Chatbot","description":"This flow extends the\xa0Basic Prompting\xa0flow to include a chat memory. This makes the AI remember previous user inputs.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-simple-agent":{"id":"Starter-Projects/starter-projects-simple-agent","title":"Simple Agent","description":"Build a Simple Agent flow for an agentic application using the Tool-calling agent.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-travel-planning-agent":{"id":"Starter-Projects/starter-projects-travel-planning-agent","title":"Travel Planning Agent","description":"Build a Travel Planning Agent flow for an agentic application using the multiple Tool-calling agents.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-vector-store-rag":{"id":"Starter-Projects/starter-projects-vector-store-rag","title":"Vector Store RAG","description":"Retrieval Augmented Generation, or RAG, is a pattern for training LLMs on your data and querying it.","sidebar":"defaultSidebar"},"What\u2019s-New/whats-new-a-new-chapter-langflow":{"id":"What\u2019s-New/whats-new-a-new-chapter-langflow","title":"1.0 - A new chapter for Langflow","description":"First things first","sidebar":"defaultSidebar"},"Workspace/workspace":{"id":"Workspace/workspace","title":"Workspace Overview","description":"The Langflow Workspace","sidebar":"defaultSidebar"},"Workspace/workspace-api":{"id":"Workspace/workspace-api","title":"API","description":"The\xa0API\xa0section presents code templates for integrating your flow into external applications.","sidebar":"defaultSidebar"},"Workspace/workspace-logs":{"id":"Workspace/workspace-logs","title":"Logs","description":"The\xa0Logs\xa0page provides a detailed record of all component executions within a workspace. It is designed to help you track actions, debug issues, and understand the flow of data through various components.","sidebar":"defaultSidebar"},"Workspace/workspace-playground":{"id":"Workspace/workspace-playground","title":"Playground","description":"The\xa0Playground\xa0is a dynamic interface designed for real-time interaction with AIs, allowing users to chat, access memories and monitor inputs and outputs. Here, users can directly prototype and their models, making adjustments and observing different outcomes.","sidebar":"defaultSidebar"}}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[1567],{5226:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"defaultSidebar":[{"type":"category","label":"What\u2019s New?","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"1.0 - A new chapter for Langflow","href":"/whats-new-a-new-chapter-langflow","docId":"What\u2019s-New/whats-new-a-new-chapter-langflow","unlisted":false}]},{"type":"category","label":"Getting Started","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"\ud83d\udc4b\xa0Welcome to Langflow","href":"/","docId":"Getting-Started/\ud83d\udc4b\xa0Welcome-to-Langflow","unlisted":false},{"type":"link","label":"\ud83d\udce6\xa0Installation","href":"/getting-started-installation","docId":"Getting-Started/getting-started-installation","unlisted":false},{"type":"link","label":"\u26a1\ufe0f Quickstart","href":"/getting-started-quickstart","docId":"Getting-Started/getting-started-quickstart","unlisted":false},{"type":"link","label":"\u2757\ufe0f Common Installation Issues","href":"/getting-started-common-installation-issues","docId":"Getting-Started/getting-started-common-installation-issues","unlisted":false}]},{"type":"category","label":"Starter Projects","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Basic Prompting","href":"/starter-projects-basic-prompting","docId":"Starter-Projects/starter-projects-basic-prompting","unlisted":false},{"type":"link","label":"Blog Writer","href":"/starter-projects-blog-writer","docId":"Starter-Projects/starter-projects-blog-writer","unlisted":false},{"type":"link","label":"Document QA","href":"/starter-projects-document-qa","docId":"Starter-Projects/starter-projects-document-qa","unlisted":false},{"type":"link","label":"Memory Chatbot","href":"/starter-projects-memory-chatbot","docId":"Starter-Projects/starter-projects-memory-chatbot","unlisted":false},{"type":"link","label":"Vector Store RAG","href":"/starter-projects-vector-store-rag","docId":"Starter-Projects/starter-projects-vector-store-rag","unlisted":false},{"type":"link","label":"Dynamic Agent","href":"/Starter-Projects/starter-projects-dynamic-agent","docId":"Starter-Projects/starter-projects-dynamic-agent","unlisted":false},{"type":"link","label":"Simple Agent","href":"/Starter-Projects/starter-projects-simple-agent","docId":"Starter-Projects/starter-projects-simple-agent","unlisted":false},{"type":"link","label":"Travel Planning Agent","href":"/Starter-Projects/starter-projects-travel-planning-agent","docId":"Starter-Projects/starter-projects-travel-planning-agent","unlisted":false}]},{"type":"category","label":"Guides","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"\ud83d\udcda New to LLMs?","href":"/guides-new-to-llms","docId":"Guides/guides-new-to-llms","unlisted":false},{"type":"link","label":"Chat Memory","href":"/guides-chat-memory","docId":"Guides/guides-chat-memory","unlisted":false},{"type":"link","label":"Data & Message","href":"/guides-data-message","docId":"Guides/guides-data-message","unlisted":false}]},{"type":"category","label":"Workspace","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Playground","href":"/workspace-playground","docId":"Workspace/workspace-playground","unlisted":false},{"type":"link","label":"API","href":"/workspace-api","docId":"Workspace/workspace-api","unlisted":false},{"type":"link","label":"Logs","href":"/workspace-logs","docId":"Workspace/workspace-logs","unlisted":false}],"href":"/workspace"},{"type":"category","label":"Components","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Inputs & Outputs","href":"/components-io","docId":"Components/components-io","unlisted":false},{"type":"link","label":"Prompts","href":"/components-prompts","docId":"Components/components-prompts","unlisted":false},{"type":"link","label":"Data","href":"/components-data","docId":"Components/components-data","unlisted":false},{"type":"link","label":"Helpers","href":"/components-helpers","docId":"Components/components-helpers","unlisted":false},{"type":"link","label":"Models","href":"/components-models","docId":"Components/components-models","unlisted":false},{"type":"link","label":"Embedding Models","href":"/components-embedding-models","docId":"Components/components-embedding-models","unlisted":false},{"type":"link","label":"Vector Stores","href":"/components-vector-stores","docId":"Components/components-vector-stores","unlisted":false},{"type":"link","label":"Custom Components","href":"/components-custom-components","docId":"Components/components-custom-components","unlisted":false},{"type":"link","label":"RAG","href":"/components-rag","docId":"Components/components-rag","unlisted":false},{"type":"link","label":"Loaders","href":"/components-loaders","docId":"Components/components-loaders","unlisted":false},{"type":"link","label":"Agents","href":"/Components/components-agents","docId":"Components/components-agents","unlisted":false},{"type":"link","label":"Memories","href":"/Components/components-memories","docId":"Components/components-memories","unlisted":false},{"type":"link","label":"Tools","href":"/Components/components-tools","docId":"Components/components-tools","unlisted":false}],"href":"/components"},{"type":"category","label":"Deployment","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"\ud83e\udd17\xa0Spaces","href":"/deployment-hugging-face-spaces","docId":"Deployment/deployment-hugging-face-spaces","unlisted":false},{"type":"link","label":"Kubernetes","href":"/deployment-kubernetes","docId":"Deployment/deployment-kubernetes","unlisted":false},{"type":"link","label":"Docker","href":"/deployment-docker","docId":"Deployment/deployment-docker","unlisted":false},{"type":"link","label":"GCP","href":"/deployment-gcp","docId":"Deployment/deployment-gcp","unlisted":false},{"type":"link","label":"Render","href":"/deployment-render","docId":"Deployment/deployment-render","unlisted":false},{"type":"link","label":"Railway","href":"/deployment-railway","docId":"Deployment/deployment-railway","unlisted":false}]},{"type":"category","label":"Settings","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Global Variables","href":"/settings-global-variables","docId":"Settings/settings-global-variables","unlisted":false},{"type":"link","label":"Project & General Settings","href":"/settings-project-general-settings","docId":"Settings/settings-project-general-settings","unlisted":false}]},{"type":"category","label":"Configuration","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Authentication","href":"/configuration-authentication","docId":"Configuration/configuration-authentication","unlisted":false},{"type":"link","label":"API Keys","href":"/configuration-api-keys","docId":"Configuration/configuration-api-keys","unlisted":false},{"type":"link","label":"Langflow CLI","href":"/configuration-cli","docId":"Configuration/configuration-cli","unlisted":false},{"type":"link","label":"My Collection","href":"/365085a8-a90a-43f9-a779-f8769ec7eca1","docId":"Configuration/My-Collection","unlisted":false},{"type":"link","label":"Run Langflow in backend-only mode","href":"/configuration-backend-only","docId":"Configuration/configuration-backend-only","unlisted":false},{"type":"link","label":"Auto-saving","href":"/configuration-auto-save","docId":"Configuration/configuration-auto-saving","unlisted":false},{"type":"link","label":"Environment Variables","href":"/environment-variables","docId":"Configuration/environment-variables","unlisted":false}]},{"type":"category","label":"Integrations","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"AssemblyAI","href":"/integrations-assemblyai","docId":"Integrations/integrations-assemblyai","unlisted":false},{"type":"link","label":"Langfuse","href":"/integrations-langfuse","docId":"Integrations/integrations-langfuse","unlisted":false},{"type":"link","label":"LangSmith","href":"/integrations-langsmith","docId":"Integrations/integrations-langsmith","unlisted":false},{"type":"link","label":"LangWatch","href":"/integrations-langwatch","docId":"Integrations/integrations-langwatch","unlisted":false},{"type":"category","label":"Notion","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Setup","href":"/integrations/notion/setup","docId":"Integrations/Notion/integrations-notion","unlisted":false},{"type":"link","label":"Notion Meeting Notes Agent","href":"/integrations/notion/notion-agent-meeting-notes","docId":"Integrations/Notion/notion-agent-meeting-notes","unlisted":false},{"type":"link","label":"Notion Conversational Agent","href":"/integrations/notion/notion-agent-conversational","docId":"Integrations/Notion/notion-agent-conversational","unlisted":false}]}]},{"type":"category","label":"Contributing","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Telemetry","href":"/contributing-telemetry","docId":"Contributing/contributing-telemetry","unlisted":false},{"type":"link","label":"How to contribute?","href":"/contributing-how-to-contribute","docId":"Contributing/contributing-how-to-contribute","unlisted":false},{"type":"link","label":"GitHub Issues","href":"/contributing-github-issues","docId":"Contributing/contributing-github-issues","unlisted":false},{"type":"link","label":"Community","href":"/contributing-community","docId":"Contributing/contributing-community","unlisted":false}]}]},"docs":{"Components/components":{"id":"Components/components","title":"Intro to Components","description":"Component","sidebar":"defaultSidebar"},"Components/components-agents":{"id":"Components/components-agents","title":"Agents","description":"Agent components are used to define the behavior and capabilities of AI agents in your flow. Agents can interact with APIs, databases, and other services, but can also use LLMs as a reasoning engine to decide which course to take in your flow.","sidebar":"defaultSidebar"},"Components/components-custom-components":{"id":"Components/components-custom-components","title":"Custom Components","description":"Custom components are created within Langflow and extend the platform\'s functionality with custom, resusable Python code.","sidebar":"defaultSidebar"},"Components/components-data":{"id":"Components/components-data","title":"Data","description":"API Request","sidebar":"defaultSidebar"},"Components/components-embedding-models":{"id":"Components/components-embedding-models","title":"Embedding Models","description":"Embeddings models are used to convert text into numerical vectors. These vectors can be used for various tasks such as similarity search, clustering, and classification.","sidebar":"defaultSidebar"},"Components/components-helpers":{"id":"Components/components-helpers","title":"Helpers","description":"Helper components provide utility functions to help manage data, tasks, and other components in your flow.","sidebar":"defaultSidebar"},"Components/components-io":{"id":"Components/components-io","title":"Inputs & Outputs","description":"This category of components defines where data enters and exits your flow. They dynamically alter the Playground and can be renamed to facilitate building and maintaining your flows.","sidebar":"defaultSidebar"},"Components/components-loaders":{"id":"Components/components-loaders","title":"Loaders","description":"Loaders are components used to load documents from various sources, such as databases, websites, and local files. They can be used to fetch data from external sources and convert it into a format that can be processed by other components.","sidebar":"defaultSidebar"},"Components/components-memories":{"id":"Components/components-memories","title":"Memories","description":"Chat memory components store and retrieve chat messages by session_id.","sidebar":"defaultSidebar"},"Components/components-models":{"id":"Components/components-models","title":"Models","description":"Model components are used to generate text using language models. These components can be used to generate text for various tasks such as chatbots, content generation, and more.","sidebar":"defaultSidebar"},"Components/components-prompts":{"id":"Components/components-prompts","title":"Prompts","description":"A prompt serves as the input to a language model, comprising multiple components that can be parameterized using prompt templates.","sidebar":"defaultSidebar"},"Components/components-rag":{"id":"Components/components-rag","title":"RAG","description":"RAG (Retrieval-Augmented Generation) components process a user query by retrieving relevant documents and generating a concise summary that addresses the user\'s question.","sidebar":"defaultSidebar"},"Components/components-tools":{"id":"Components/components-tools","title":"Tools","description":"Tool components are used to interact with external services, APIs, and tools. They can be used to search the web, query databases, and perform other tasks.","sidebar":"defaultSidebar"},"Components/components-vector-stores":{"id":"Components/components-vector-stores","title":"Vector Stores","description":"Vector databases are used to store and search for vectors. They can be used to store embeddings, search for similar vectors, and perform other vector operations.","sidebar":"defaultSidebar"},"Configuration/configuration-api-keys":{"id":"Configuration/configuration-api-keys","title":"API Keys","description":"Langflow provides an API key functionality that allows users to access their individual components and flows without traditional login authentication. The API key is a user-specific token that can be included in the request header, query parameter, or as a command line argument to authenticate API calls. This documentation outlines how to generate, use, and manage API keys in Langflow.","sidebar":"defaultSidebar"},"Configuration/configuration-authentication":{"id":"Configuration/configuration-authentication","title":"Authentication","description":"The login functionality in Langflow serves to authenticate users and protect sensitive routes in the application.","sidebar":"defaultSidebar"},"Configuration/configuration-auto-saving":{"id":"Configuration/configuration-auto-saving","title":"Auto-saving","description":"Langflow currently supports both manual and auto-saving functionality.","sidebar":"defaultSidebar"},"Configuration/configuration-backend-only":{"id":"Configuration/configuration-backend-only","title":"Run Langflow in backend-only mode","description":"Langflow can run in --backend-only mode to expose a Langflow app as an API endpoint, without running the frontend UI.","sidebar":"defaultSidebar"},"Configuration/configuration-cli":{"id":"Configuration/configuration-cli","title":"Langflow CLI","description":"The Langflow command line interface (Langflow CLI) is the main interface for managing and running the Langflow server.","sidebar":"defaultSidebar"},"Configuration/environment-variables":{"id":"Configuration/environment-variables","title":"Environment Variables","description":"Langflow lets you configure a number of settings using environment variables.","sidebar":"defaultSidebar"},"Configuration/My-Collection":{"id":"Configuration/My-Collection","title":"My Collection","description":"This page may contain outdated information. It will be updated as soon as possible.","sidebar":"defaultSidebar"},"Contributing/contributing-community":{"id":"Contributing/contributing-community","title":"Community","description":"\ud83e\udd16 Join\xa0Langflow\xa0Discord server","sidebar":"defaultSidebar"},"Contributing/contributing-github-issues":{"id":"Contributing/contributing-github-issues","title":"GitHub Issues","description":"Our\xa0issues\xa0page is kept up to date with bugs, improvements, and feature requests. There is a taxonomy of labels to help with sorting and discovery of issues of interest.","sidebar":"defaultSidebar"},"Contributing/contributing-how-to-contribute":{"id":"Contributing/contributing-how-to-contribute","title":"How to contribute?","description":"This page may contain outdated information. It will be updated as soon as possible.","sidebar":"defaultSidebar"},"Contributing/contributing-telemetry":{"id":"Contributing/contributing-telemetry","title":"Telemetry","description":"This page may contain outdated information. It will be updated as soon as possible.","sidebar":"defaultSidebar"},"Deployment/deployment-docker":{"id":"Deployment/deployment-docker","title":"Docker","description":"This guide will help you get LangFlow up and running using Docker and Docker Compose.","sidebar":"defaultSidebar"},"Deployment/deployment-gcp":{"id":"Deployment/deployment-gcp","title":"GCP","description":"To deploy Langflow on Google Cloud Platform using Cloud Shell, use the below script.","sidebar":"defaultSidebar"},"Deployment/deployment-hugging-face-spaces":{"id":"Deployment/deployment-hugging-face-spaces","title":"\ud83e\udd17\xa0Spaces","description":"HuggingFace Spaces","sidebar":"defaultSidebar"},"Deployment/deployment-kubernetes":{"id":"Deployment/deployment-kubernetes","title":"Kubernetes","description":"This guide will help you get LangFlow up and running in Kubernetes cluster, including the following steps:","sidebar":"defaultSidebar"},"Deployment/deployment-railway":{"id":"Deployment/deployment-railway","title":"Railway","description":"Deploy on Railway","sidebar":"defaultSidebar"},"Deployment/deployment-render":{"id":"Deployment/deployment-render","title":"Render","description":"Deploy on Render","sidebar":"defaultSidebar"},"Getting-Started/\ud83d\udc4b\xa0Welcome-to-Langflow":{"id":"Getting-Started/\ud83d\udc4b\xa0Welcome-to-Langflow","title":"\ud83d\udc4b\xa0Welcome to Langflow","description":"Introduction","sidebar":"defaultSidebar"},"Getting-Started/getting-started-common-installation-issues":{"id":"Getting-Started/getting-started-common-installation-issues","title":"\u2757\ufe0f Common Installation Issues","description":"This is a list of possible issues that you may encounter when installing Langflow and how to solve them.","sidebar":"defaultSidebar"},"Getting-Started/getting-started-installation":{"id":"Getting-Started/getting-started-installation","title":"\ud83d\udce6\xa0Installation","description":"DataStax Langflow","sidebar":"defaultSidebar"},"Getting-Started/getting-started-quickstart":{"id":"Getting-Started/getting-started-quickstart","title":"\u26a1\ufe0f Quickstart","description":"Prerequisites","sidebar":"defaultSidebar"},"Guides/guides-chat-memory":{"id":"Guides/guides-chat-memory","title":"Chat Memory","description":"Langflow allows every chat message to be stored, and a single flow can have multiple memory sessions. This enables you to create separate memories for agents to store and recall information as needed.","sidebar":"defaultSidebar"},"Guides/guides-data-message":{"id":"Guides/guides-data-message","title":"Data & Message","description":"In Langflow, the\xa0Data\xa0and\xa0Message\xa0objects serve as structured, functional representations of data that enhance the capabilities and reliability of the platform.","sidebar":"defaultSidebar"},"Guides/guides-new-to-llms":{"id":"Guides/guides-new-to-llms","title":"\ud83d\udcda New to LLMs?","description":"Large Language Models, or LLMs, are part of an exciting new world in computing.","sidebar":"defaultSidebar"},"Integrations/integrations-assemblyai":{"id":"Integrations/integrations-assemblyai","title":"AssemblyAI","description":"The AssemblyAI components allow you to apply powerful Speech AI models to your app for tasks like:","sidebar":"defaultSidebar"},"Integrations/integrations-langfuse":{"id":"Integrations/integrations-langfuse","title":"Langfuse","description":"Langfuse is an observability and analytics platform specifically designed for language models and AI applications.","sidebar":"defaultSidebar"},"Integrations/integrations-langsmith":{"id":"Integrations/integrations-langsmith","title":"LangSmith","description":"LangSmith is a full-lifecycle DevOps service from LangChain that provides monitoring and observability. To integrate with Langflow, just add your LangChain API key as a Langflow environment variable and you are good to go!","sidebar":"defaultSidebar"},"Integrations/integrations-langwatch":{"id":"Integrations/integrations-langwatch","title":"LangWatch","description":"938674091aac4d9d9aa4aa6eb5c215b4}","sidebar":"defaultSidebar"},"Integrations/Notion/integrations-notion":{"id":"Integrations/Notion/integrations-notion","title":"Setup","description":"To use Notion components in Langflow, you first need to create a Notion integration and configure it with the necessary capabilities. This guide will walk you through the process of setting up a Notion integration and granting it access to your Notion databases.","sidebar":"defaultSidebar"},"Integrations/Notion/notion-agent-conversational":{"id":"Integrations/Notion/notion-agent-conversational","title":"Notion Conversational Agent","description":"The Notion Conversational Agent is an AI-powered assistant that interacts with your Notion workspace through natural language conversations. This flow performs Notion-related tasks like creating pages, searching for information, and managing content, all through a chat interface.","sidebar":"defaultSidebar"},"Integrations/Notion/notion-agent-meeting-notes":{"id":"Integrations/Notion/notion-agent-meeting-notes","title":"Notion Meeting Notes Agent","description":"The Notion Agent for Meeting Notes is an AI-powered tool that automatically processes meeting transcripts and updates your Notion workspace. It identifies tasks, action items, and key points from your meetings, then creates new tasks or updates existing ones in Notion without manual input.","sidebar":"defaultSidebar"},"Settings/settings-global-variables":{"id":"Settings/settings-global-variables","title":"Global Variables","description":"Global variables let you store and reuse generic input values and credentials across your projects.","sidebar":"defaultSidebar"},"Settings/settings-project-general-settings":{"id":"Settings/settings-project-general-settings","title":"Project & General Settings","description":"This page may contain outdated information. It will be updated as soon as possible.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-basic-prompting":{"id":"Starter-Projects/starter-projects-basic-prompting","title":"Basic Prompting","description":"Prompts serve as the inputs to a large language model (LLM), acting as the interface between human instructions and computational tasks.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-blog-writer":{"id":"Starter-Projects/starter-projects-blog-writer","title":"Blog Writer","description":"Build a blog writer with OpenAI that uses URLs for reference content.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-document-qa":{"id":"Starter-Projects/starter-projects-document-qa","title":"Document QA","description":"Build a question-and-answer chatbot with a document loaded from local memory.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-dynamic-agent":{"id":"Starter-Projects/starter-projects-dynamic-agent","title":"Dynamic Agent","description":"Build a Dynamic Agent flow for an agentic application using the CrewAI.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-memory-chatbot":{"id":"Starter-Projects/starter-projects-memory-chatbot","title":"Memory Chatbot","description":"This flow extends the\xa0Basic Prompting\xa0flow to include a chat memory. This makes the AI remember previous user inputs.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-simple-agent":{"id":"Starter-Projects/starter-projects-simple-agent","title":"Simple Agent","description":"Build a Simple Agent flow for an agentic application using the Tool-calling agent.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-travel-planning-agent":{"id":"Starter-Projects/starter-projects-travel-planning-agent","title":"Travel Planning Agent","description":"Build a Travel Planning Agent flow for an agentic application using the multiple Tool-calling agents.","sidebar":"defaultSidebar"},"Starter-Projects/starter-projects-vector-store-rag":{"id":"Starter-Projects/starter-projects-vector-store-rag","title":"Vector Store RAG","description":"Retrieval Augmented Generation, or RAG, is a pattern for training LLMs on your data and querying it.","sidebar":"defaultSidebar"},"What\u2019s-New/whats-new-a-new-chapter-langflow":{"id":"What\u2019s-New/whats-new-a-new-chapter-langflow","title":"1.0 - A new chapter for Langflow","description":"First things first","sidebar":"defaultSidebar"},"Workspace/workspace":{"id":"Workspace/workspace","title":"Workspace Overview","description":"The Langflow Workspace","sidebar":"defaultSidebar"},"Workspace/workspace-api":{"id":"Workspace/workspace-api","title":"API","description":"The\xa0API\xa0section presents code templates for integrating your flow into external applications.","sidebar":"defaultSidebar"},"Workspace/workspace-logs":{"id":"Workspace/workspace-logs","title":"Logs","description":"The\xa0Logs\xa0page provides a detailed record of all component executions within a workspace. It is designed to help you track actions, debug issues, and understand the flow of data through various components.","sidebar":"defaultSidebar"},"Workspace/workspace-playground":{"id":"Workspace/workspace-playground","title":"Playground","description":"The\xa0Playground\xa0is a dynamic interface designed for real-time interaction with AIs, allowing users to chat, access memories and monitor inputs and outputs. Here, users can directly prototype and their models, making adjustments and observing different outcomes.","sidebar":"defaultSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/900.047951be.js b/assets/js/900.047951be.js new file mode 100644 index 0000000000..aadb4c3af2 --- /dev/null +++ b/assets/js/900.047951be.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[900],{4754:(e,t,n)=>{n.d(t,{Cy:()=>kt,hk:()=>Rt});var r=n(6540),o=n(961);n(6763);function i(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o/^#([A-Fa-f0-9]{3,4}){1,2}$/.test(e),a=(e,t)=>e.match(new RegExp(`.{${t}}`,"g")),l=e=>parseInt(e.repeat(2/e.length),16);function c(e,t){return void 0!==e?e/255:"number"!=typeof t||t<0||t>1?1:t}function u(e,t){if(!e)return e;const{r:n,g:r,b:o,a:i}=function(e){if(!e)return;if(!s(e))throw new Error("Invalid color string, must be a valid hex color");const t=Math.floor((e.length-1)/3),n=a(e.slice(1),t),[r,o,i,u]=n.map(l);return{r:r,g:o,b:i,a:c(u,1)}}(e);return function(e){if(!e)return;const{r:t,g:n,b:r,a:o}=e,i=Math.round(255*o);return`#${t.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")}${i.toString(16).padStart(2,"0")}`}({r:n,g:r,b:o,a:i*t})}function h(e,t){return{prev:t(e.prev,"prev"),next:t(e.next,"next")}}function f(e,t){return{prev:void 0===(null==e?void 0:e.prev)?t:e.prev,next:void 0===(null==e?void 0:e.next)?t:e.next}}function d(e,t,n){return h(f(e,t),n)}function m(e,t){return t(e.prev)||t(e.next)}function p(e){return e.lines.map((e=>e.tokens.map((e=>e.content)).join(""))).join("\n")}function v(e){return e.split(/,(?![^\[]*\])/g)}function g(e){return e.reduce(((e,t)=>Object.assign(e,t)),{})}function b(e){const t=e.match(/(\d+)\[(.+)\]/);if(t){const[,e,n]=t,r=n.split(",").map(y),o=Number(e);return{[o]:r}}return g(E(e).map((e=>({[e]:!0}))))}function y(e){const[t,n]=e.split(":");if(!j(t))throw new O(t);const r=Number(t);if(r<1)throw new N;if(n){if(!j(n))throw new O(n);return{start:r,end:+n}}return{start:r,end:r}}function x(e){if(!e)throw new Error("Focus cannot be empty");try{return function(e){const t={};let n=-1,r=null==e?0:e.length;for(;++ne-1))]]}return E(e).map((e=>[e-1,!0]))}function E(e){const[t,n]=e.split(":");if(!j(t))throw new O(t);const r=Number(t);if(r<1)throw new N;if(n){if(!j(n))throw new O(n);const e=[];for(let t=r;t<=+n;t++)e.push(t);return e}return[r]}function j(e){e=e.toString();var t=Math.abs(e),n=parseInt(e,10);return!isNaN(t)&&n===t&&t.toString()===e}class N extends Error{constructor(){super("Invalid line or column number in focus string"),Object.setPrototypeOf(this,new.target.prototype)}}class O extends Error{constructor(e){super(`Invalid number "${e}" in focus string`),this.number=e,Object.setPrototypeOf(this,new.target.prototype)}}const C="undefined"!=typeof window?r.useLayoutEffect:r.useEffect;const k=200;function _(e,t,n,o,i,s){const[a,l]=r.useState(null),[c,u]=r.useState(0),h=function(){const[e,t]=r.useState(void 0);return r.useEffect((()=>{function e(){t(window.innerWidth)}return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)}),[]),e}(),f=r.useRef(null),{prevLongestLine:d,nextLongestLine:m,element:p}=r.useMemo((()=>{const n=F(e.prev,t.prev),s=F(e.next,t.next),a=(e.prev||e.next).trimEnd().split(S),l=Math.max(a.length,10);if(i){const e="focus"===i?function(e,t){const[n,r]=function(e,t){if(e){const t=x(e),n=Object.keys(t).map((e=>parseInt(e,10)));return[Math.min(...n),Math.max(...n)]}return[0,t.length-1]}(e.prev,t);return r-n+1}(t,a):i;let r=a.length;for(;re;)a.pop(),r--;n&&!a.includes(n)&&(a[a.length-1]=n)}let c=!1;const u=r.createElement("code",{className:"ch-code-scroll-parent"},r.createElement("br",null),a.map(((e,t)=>{const i=c||e!==n?void 0:f;return c=c||null!=i,r.createElement("div",{ref:i,key:t},o?r.createElement("span",{className:"ch-code-line-number"},"_",l):void 0,r.createElement("div",{style:{display:"inline-block",marginLeft:16}},r.createElement("span",null,e)))})),r.createElement("br",null));return{prevLongestLine:n,nextLongestLine:s,element:u}}),[e]),v=[...s,h,d,m,n,c];return C((()=>{var e;if(f.current){const t=f.current,r=null==t?void 0:t.parentElement,o=r.parentElement,{width:i}=o.getBoundingClientRect();if(!i&&0===c){const e=new ResizeObserver((([t])=>{const{width:n}=t.contentRect;n&&(e.disconnect(),u(1))}));return e.observe(o),()=>e.disconnect()}const s=null==t?void 0:t.querySelector(":scope > div"),a=null==t?void 0:t.querySelector(":scope > span"),h=a?function(e){const t=getComputedStyle(e);return parseFloat(t.width)}(a):0,p=P(s),g=p/d.length||1,b=m.length*g,y=null!==(e=H(s))&&void 0!==e?e:20,x={containerWidth:P(o.parentElement),containerHeight:H(o.parentElement),contentWidth:P(r.parentElement),contentHeight:H(r.parentElement),lineWidths:[p||b||k,b||p||k],lineWidth:[Math.max(p||b||k,g*n),Math.max(b||p||k,g*n)],lineHeight:y,colWidth:g,lineNumberWidth:h,deps:v};l(x)}return()=>{}}),v),!a||function(e,t){for(let n=0;nparseInt(e,10)))}return[...t.keys()]}(t,n);let o="";return n.forEach(((e,t)=>{r.includes(t)&&e.length>o.length&&(o=e)})),o}function P(e){const t=getComputedStyle(e);return parseFloat(t.width)-parseFloat(t.paddingLeft)-parseFloat(t.paddingRight)}function H(e){if(!e)return null;const t=getComputedStyle(e);return parseFloat(t.height)-parseFloat(t.paddingTop)-parseFloat(t.paddingBottom)}function M(){}function T(e,t,n,r,o){for(var i=0,s=t.length,a=0,l=0;ie.length?n:e})),c.value=e.join(h)}else c.value=e.join(n.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=t[s-1];return s>1&&"string"==typeof f.value&&(f.added||f.removed)&&e.equals("",f.value)&&(t[s-2].value+=f.value,t.pop()),t}M.prototype={diff:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.callback;"function"==typeof n&&(r=n,n={}),this.options=n;var o=this;function i(e){return r?(setTimeout((function(){r(void 0,e)}),0),!0):e}e=this.castInput(e),t=this.castInput(t),e=this.removeEmpty(this.tokenize(e));var s=(t=this.removeEmpty(this.tokenize(t))).length,a=e.length,l=1,c=s+a,u=[{newPos:-1,components:[]}],h=this.extractCommon(u[0],t,e,0);if(u[0].newPos+1>=s&&h+1>=a)return i([{value:this.join(t),count:t.length}]);function f(){for(var n=-1*l;n<=l;n+=2){var r=void 0,c=u[n-1],h=u[n+1],f=(h?h.newPos:0)-n;c&&(u[n-1]=void 0);var d=c&&c.newPos+1=s&&f+1>=a)return i(T(o,r.components,t,e,o.useLongestToken));u[n]=r}else u[n]=void 0}var p;l++}if(r)!function e(){setTimeout((function(){if(l>c)return r();f()||e()}),0)}();else for(;l<=c;){var d=f();if(d)return d}},pushComponent:function(e,t,n){var r=e[e.length-1];r&&r.added===t&&r.removed===n?e[e.length-1]={count:r.count+1,added:t,removed:n}:e.push({count:1,added:t,removed:n})},extractCommon:function(e,t,n,r){for(var o=t.length,i=n.length,s=e.newPos,a=s-r,l=0;s+1{if(e.added)for(let t=0;tvoid 0===e.next?Object.assign(Object.assign({},t.prev[e.prev]),{lineNumber:{prev:e.prev+1},move:"exit",enterIndex:null,exitIndex:r++}):void 0===e.prev?Object.assign(Object.assign({},t.next[e.next]),{lineNumber:{next:e.next+1},move:"enter",enterIndex:n++,exitIndex:null}):Object.assign(Object.assign({},t.prev[e.prev]),{lineNumber:{prev:e.prev+1,next:e.next+1},move:"stay",enterIndex:null,exitIndex:null}))),enterCount:n,exitCount:r}}function U(e,t,n){const{lines:r}=e,o=i(e,["lines"]),s=h(t,((e,t)=>function(e,t){return g(e?v(e).map(b):[...t.keys()].map((e=>({[e+1]:!0}))))}(e,"prev"===t?r.filter((e=>"enter"!==e.move)):r.filter((e=>"exit"!==e.move))))),a=r.map((e=>{const{tokens:t}=e,r=i(e,["tokens"]),o={prev:!!e.lineNumber.prev&&s.prev[e.lineNumber.prev],next:!!e.lineNumber.next&&s.next[e.lineNumber.next]},a={prev:e.lineNumber.prev&&n.prev[e.lineNumber.prev]||[],next:e.lineNumber.next&&n.next[e.lineNumber.next]||[]};return Object.assign({focused:h(o,(e=>!!e)),groups:Z(t,o,a)},r)})),l=h(s,(e=>Object.keys(e).map((e=>Number(e))))),c=h(l,(e=>Math.min(...e))),u=h(l,(e=>Math.max(...e)));return Object.assign({lines:a,firstFocusedLineNumber:c,lastFocusedLineNumber:u},o)}function Z(e,t,n){const r=h(t,(e=>Array.isArray(e)?e:[])),o=h(n,(e=>e.map((({columnNumbers:e})=>e)))),i=function(e,t){const n=[...t.map((e=>e.start-1)),...t.map((e=>e.end))];let r=e;return n.forEach((e=>{const t=[];let n=0;r.forEach((r=>{const o=n,i=n+r.content.length;if(o{const r=G(s,t.prev),o=G(s,t.next),i=Y(s,n.prev),c=Y(s,n.next);a&&a.focused.prev===r&&a.focused.next===o&&a.annotation.prev===i&&a.annotation.next===c||(a={focused:{prev:r,next:o},tokens:[],annotation:{prev:i,next:c}},l.push(a)),null==a||a.tokens.push(e),s+=e.content.length})),l.map((e=>({focused:e.focused,tokens:e.tokens,element:K(e)})))}function K(e){return r.createElement(r.Fragment,null,e.tokens.map((({content:e,props:t},n)=>r.createElement("span",Object.assign({},t,{key:n+1}),e))))}function G(e,t){return Array.isArray(t)?t.some((({start:t,end:n})=>t-1<=e&&et.start-1<=e&&er)return i;const s=(t-n)/(r-n);return o+(e.ease||J.linear)(s)*(i-o)}}function D([e,t],n,r){if(r<=1)return[e,t];const o=t-e,i=o/Math.pow(r,1/8),s=e+(o-i)/(r-1)*n;return[s,s+i]}q.tokenize=function(e){return e.slice()},q.join=q.removeEmpty=function(e){return e};const J={linear:function(e){return e},easeInQuad:function(e){return e*e},easeOutQuad:function(e){return e*(2-e)},easeInOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1}};function Q(e,t,n,r){const[o,i]=t;return e.map((e=>{const t=h(e.lineNumber,(e=>e&&e-1)),{enterIndex:s,exitIndex:a}=e,l="exit"===e.move?{fixed:!0,value:t.prev}:"enter"===e.move?{fixed:!0,value:t.next}:{fixed:!1,extremes:[t.prev,t.next],interval:[o,i],ease:J.easeInOutCubic},c="exit"===e.move?{fixed:!1,extremes:[0,-1],ease:J.easeInQuad,interval:D([0,o],a,r)}:"enter"===e.move?{fixed:!1,extremes:[1,0],ease:J.easeOutQuad,interval:D([i,1],s,n)}:{fixed:!0,value:0};return Object.assign(Object.assign({},e),{tweenX:c,tweenY:l})}))}function ee(e){const t=d(e,[],(e=>e.flatMap((e=>v(e.focus).map((t=>Object.assign(Object.assign({},e),{focus:t}))))))),n=d(t,[],(e=>e.filter(te))),r=d(t,[],(e=>e.filter((e=>!te(e)))));return{inlineAnnotations:h(n,(e=>function(e){const t={};return e.forEach((e=>{const n=b(e.focus),r=+Object.keys(n)[0],o=n[r],i=t[r]||[];i.push({columnNumbers:o[0],data:e.data,Component:e.Component}),t[r]=i})),t}(e))),multilineAnnotations:h(r,(e=>function(e){return e.map((e=>({lineNumbers:y(e.focus),data:e.data,Component:e.Component})))}(e)))}}function te(e){return!!e.focus.match(/(\d+)\[(.+)\]/)}function ne(e,t,n){const r=[...t];r.sort(((e,t)=>e.lineNumbers.start-t.lineNumbers.start));let o=0;const i=[];for(;ot.lineNumbers.start)throw"Code Hike can't handle two annotations for the same line";if(t&&n(s)===t.lineNumbers.start){const a={lines:[],annotation:t};for(;s&&(!n(s)||n(s)<=t.lineNumbers.end);)a.lines.push(s),s=e[++o];i.push(a),r.shift()}else if(t){const r={lines:[]};for(;s&&(!n(s)||n(s)0||r.length>0;){const e=o[0],t=i[0],c=e&&e.columnNumbers.start===a,u=t&&t.columnNumbers.start===l;if(al)if(u){const e=t.columnNumbers.end+1;s.push({next:{annotation:t,groups:oe(r,l,e)}}),l=e,i.shift()}else{const e=Math.min(a,(null==t?void 0:t.columnNumbers.start)||a);s.push({next:{groups:oe(r,l,e)}}),l=e}else if(a==l)if(c&&u&&e.columnNumbers.end===t.columnNumbers.end){const c=t.columnNumbers.end+1;s.push({prev:{annotation:e,groups:oe(n,a,c)},next:{annotation:t,groups:oe(r,l,c)}}),a=c,l=c,o.shift(),i.shift()}else if(c){const t=e.columnNumbers.end+1;s.push({prev:{annotation:e,groups:oe(n,a,t)}}),a=t,o.shift()}else if(u){const e=t.columnNumbers.end+1;s.push({next:{annotation:t,groups:oe(r,l,e)}}),l=e,i.shift()}else if(e||t){const o=Math.min((null==e?void 0:e.columnNumbers.start)||Number.MAX_VALUE,(null==t?void 0:t.columnNumbers.start)||Number.MAX_VALUE);s.push({prev:{groups:oe(n,a,o)},next:{groups:oe(r,l,o)}}),a=o,l=o}else s.push({prev:{groups:n},next:{groups:r}}),n=[],r=[]}return s}function oe(e,t,n){const r=[];let o=t;for(;o0;){const t=e.shift();r.push(t);o+=t.tokens.reduce(((e,t)=>e+t.content.length),0)}return r}function ie(e){const{highlightedLines:t,focus:n}=e;return r.useMemo((()=>function({focus:e,annotations:t,highlightedLines:n,lang:r}){const o=function(e){return h(e,(e=>e.map((e=>e.tokens.map((e=>e.content)).join(""))).join("\n").trimEnd().concat("\n")))}(n),s=function(e,t){return X(e,t)}(o,n),{inlineAnnotations:a,multilineAnnotations:l}=function(e){return ee(e)}(t),c=function(e,t,n){return U(e,t,n)}(s,f(e,null),a),u=function(e,t,n){var{lines:r}=e,o=i(e,["lines"]);const s=function(e,t){return e.map((e=>{var{groups:n}=e,r=i(e,["groups"]);const{lineNumber:o}=r,s={prev:o.prev&&t.prev[o.prev]||[],next:o.next&&t.next[o.next]||[]};return Object.assign(Object.assign({},r),{annotatedGroups:re(n,s)})}))}(r,t),a=function(e,t){return{prev:ne(e,t.prev,(e=>e.lineNumber.prev)),next:ne(e,t.next,(e=>e.lineNumber.next))}}(s,n);return Object.assign(Object.assign({},o),{lineGroups:a,lineCount:{prev:r.filter((e=>null!=e.lineNumber.prev)).length,next:r.filter((e=>null!=e.lineNumber.next)).length}})}(c,a,l);return function(e,t,n){const r=(i=e.enterCount,s=e.exitCount,i<=0&&s<=0?[0,1]:i<=0&&s>=1?[.33,1]:i>=1&&s<=0?[0,.67]:[.25,.75]),o=h(e.lineGroups,(t=>t.map((t=>Object.assign(Object.assign({},t),{lines:Q(t.lines,r,e.enterCount,e.exitCount)})))));var i,s;return Object.assign(Object.assign({},e),{groups:o,verticalInterval:r,code:t,lang:n})}(u,o,r)}(e)),[t.prev,t.next,n.prev,n.next])}function se({dimensions:e,codeStep:t,children:n,minZoom:o=0,maxZoom:s=1.2,center:a=!1,progress:l}){const{prev:c,next:u}=function(e){var{codeStep:t}=e,n=i(e,["codeStep"]);const{lineHeight:r,lineWidth:o}=n.dimensions,s={prev:{extremes:[t.firstFocusedLineNumber.prev-1,t.lastFocusedLineNumber.prev-1],originalContentHeight:t.lineCount.prev*r,lineWidth:o[0]},next:{extremes:[t.firstFocusedLineNumber.next-1,t.lastFocusedLineNumber.next-1],originalContentHeight:t.lineCount.next*r,lineWidth:o[1]}};return h(s,(({extremes:e,originalContentHeight:t,lineWidth:r})=>function({dimensions:e,lineWidth:t,minZoom:n,maxZoom:r,extremes:o,originalContentHeight:i,horizontalCenter:s}){const{lineHeight:a}=e,l=null==e?void 0:e.contentHeight,c=null==e?void 0:e.contentWidth,u=(o[1]-o[0]+3)*a,h=(null==e?void 0:e.lineNumberWidth)||16,f=16,d=Math.max(Math.min((c-h-f)/t,l/u,r),n),m=i*d,p=(o[0]-1)*a*d,v=(o[1]+2)*a*d,g=(v+p)/2,b=v-p,y=l>m?(l-m)/2:(w=l/2-g,E=Math.max(l-m,-p),j=0,w<=E?E:w>=j?j:w),x=s?Math.max(c/2-t*d/2,0):0;var w,E,j;return{zoom:d,dx:x,dy:y,focusHeight:b,focusWidth:t*d}}(Object.assign({extremes:e,originalContentHeight:t,lineWidth:r},n))))}({codeStep:t,dimensions:e,minZoom:o,maxZoom:s,horizontalCenter:a}),f=ce(c.zoom,u.zoom,l),d=ce(c.dx,u.dx,l),m=ce(c.dy,u.dy,l,t.verticalInterval),p=ce(c.focusHeight,u.focusHeight,l),v=ce(c.focusWidth,u.focusWidth,l),g=((null==e?void 0:e.lineNumberWidth)||0)*f||16,b=Math.max(v+g,e.contentWidth),y=g/f;return r.createElement(ae,{width:e.containerWidth,height:e.containerHeight,lang:t.lang},r.createElement(le,{dx:d,dy:m,scale:f,height:Math.max(p,e.contentHeight),width:b},n(v,y)))}function ae({width:e,height:t,children:n,lang:o}){return r.createElement("code",{style:{width:e,height:t,position:"relative",overflow:"auto"},className:"ch-code-scroll-parent",children:n,"data-ch-lang":o})}function le({dx:e,dy:t,scale:n,height:o,width:i,children:s}){return r.createElement("div",{style:{position:"absolute",top:0,left:0,transformOrigin:"top left",width:i,height:o,overflow:"hidden"},className:"ch-code-scroll-content"},r.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translateX(${e}px) translateY(${t}px) scale(${n})`,transformOrigin:"left top",width:i/n,height:(o-2*t)/n},children:s}))}function ce(e,t,n,r=[0,1]){return V({fixed:!1,interval:r,extremes:[e,t],ease:J.easeInOutCubic},n)}function ue(e){return r.createElement(se,Object.assign({},e),((t,n)=>r.createElement(he,{codeStep:e.codeStep,focusWidth:t,lineHeight:e.dimensions.lineHeight,progress:e.progress,startX:n,lineNumberWidth:e.dimensions.lineNumberWidth})))}function he({codeStep:e,progress:t,focusWidth:n,lineHeight:o,startX:i,lineNumberWidth:s}){const a=t<.5?e.groups.prev:e.groups.next;return r.createElement(r.Fragment,null,a.map(((e,a)=>{if(!e.annotation)return r.createElement(fe,{lines:e.lines,t:t,focusWidth:n,lineHeight:o,startX:i,key:a,lineNumberWidth:s});const l=V(e.lines[0].tweenY,t),c=e.annotation.lineNumbers.end-e.annotation.lineNumbers.start+1,u=e.annotation.Component;return r.createElement(u,{style:{position:"absolute",height:c*o,width:"100%",transform:`translateY(${l*o}px)`},key:a,data:e.annotation.data,isInline:!1,lines:e.lines},r.createElement(fe,{lines:e.lines,t:t,focusWidth:n,lineHeight:o,startY:l,startX:i,lineNumberWidth:s}))})))}function fe({lines:e,focusWidth:t,lineHeight:n,t:o,startX:i,startY:s=0,lineNumberWidth:a}){return r.createElement(r.Fragment,null,e.map(((e,l)=>{const{tweenX:c,tweenY:u,focused:h}=e,f=V(c,o),d=V(u,o),m=ge(h,o,f);return r.createElement(r.Fragment,{key:l},a?r.createElement("span",{className:"ch-code-line-number",style:{position:"absolute",top:0,left:0,transform:`translate(${f*t}px, ${(d-s)*n}px)`,width:a,opacity:m}},o<.5?e.lineNumber.prev:e.lineNumber.next):void 0,r.createElement(pe,{dx:i+f*t,dy:(d-s)*n,width:t,opacity:m},r.createElement(de,{line:e,progress:o,dx:f})))})))}function de({line:e,progress:t,dx:n}){return r.createElement("div",{style:{display:"inline-block",width:"100%"}},e.annotatedGroups.map(((e,o)=>r.createElement(me,{annotatedGroup:e,progress:t,dx:n,key:o}))),r.createElement("br",null))}function me({annotatedGroup:e,progress:t,dx:n}){var o,i;const s=t<.5?e.prev:e.next,a=(null==s?void 0:s.groups)||[],l=null===(o=null==s?void 0:s.annotation)||void 0===o?void 0:o.Component,c=a.map(((e,o)=>{const i=ge(e.focused,t,n);return r.createElement("span",{style:{opacity:i},key:o+1},e.element)}));return l?r.createElement(l,{children:c,data:null===(i=null==s?void 0:s.annotation)||void 0===i?void 0:i.data,isInline:!0}):r.createElement(r.Fragment,null,c)}function pe({children:e,dx:t,dy:n,opacity:o,width:i}){return r.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translate(${t}px, ${n}px)`,width:i,display:o<=0?"none":void 0}},e)}const ve=.33;function ge(e,t,n){return V({fixed:!1,extremes:[e.prev?.99:ve,e.next?.99:ve],interval:[0,1]},t)-1*Math.abs(n)}function be({content:e,style:t,className:n}){const[o,i]=r.useState(!1);return r.createElement("button",{type:"button",title:"Copy code",className:n,style:t,onClick:()=>{!function(e){if(!navigator.clipboard)return void function(e){var t=document.createElement("textarea");t.value=e,t.style.top="0",t.style.left="0",t.style.position="fixed",document.body.appendChild(t),t.focus(),t.select();try{document.execCommand("copy")}catch(n){}document.body.removeChild(t)}(e);navigator.clipboard.writeText(e)}(e),i(!0),setTimeout((()=>{i(!1)}),1200)}},r.createElement("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},o?r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"}):r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.6px",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})))}const ye=10;function xe(e){var{tween:t,progress:n,config:o}=e,s=i(e,["tween","progress","config"]);const a=function({tween:e}){return ie({highlightedLines:h(e,(e=>e.code.lines)),focus:h(e,(e=>e.focus)),annotations:h(e,(e=>e.annotations)),lang:m(e,(e=>{var t;return null===(t=null==e?void 0:e.code)||void 0===t?void 0:t.lang}))})}({tween:t}),{element:l,dimensions:c}=_(a.code,h(t,(e=>e.focus)),o.minColumns||ye,o.lineNumbers||!1,o.rows,[o.parentHeight]);return!c||o.debug?r.createElement(we,{element:l,htmlProps:s,debug:o.debug}):r.createElement(Ee,{dimensions:c,stepInfo:a,config:o,progress:n,htmlProps:s})}function we({element:e,htmlProps:t,debug:n}){return r.createElement(je,{htmlProps:t,measured:!1},e)}function Ee({config:{minZoom:e=1,maxZoom:t=1,horizontalCenter:n=!1},dimensions:o,stepInfo:i,progress:s,htmlProps:a,config:l}){var c;return r.createElement(je,{htmlProps:a,measured:!0},r.createElement(ue,{codeStep:i,progress:s,dimensions:o,minZoom:e,maxZoom:t,center:n}),l.showCopyButton?r.createElement(be,{className:"ch-code-button",content:null===(c=null==i?void 0:i.code)||void 0===c?void 0:c.prev}):void 0)}function je({htmlProps:e,children:t,measured:n}){return r.createElement("div",Object.assign({},e,{className:`ch-code-wrapper ${(null==e?void 0:e.className)||""}`,"data-ch-measured":n,children:t}))}function Ne(){return"undefined"!=typeof window?performance.now():0}function Oe(e,t){var n=t.stiffness,r=t.damping,o=t.mass,i=t.decimals,s=t.teleport;return{X:e,k:null!=n?n:170,c:null!=r?r:26,m:null!=o?o:1,teleport:null!=s&&s,decimals:null!=i?i:2}}function Ce(e,t){var n=t.from,r=t.initialSpeed;return{x0:null!=n?n:e,v0:null!=r?r:0,t0:Ne(),raf:null}}var ke=Math.sqrt,_e=Math.exp,Se=Math.sin,Fe=Math.cos;function Pe(e){var t=e.x0,n=e.v0,r=e.t0,o=e.t,i=e.k,s=e.c,a=e.m,l=e.X,c=t-l,u=(o-r)/1e3,h=s*s-4*i*a;if(h>0){var f=(-s+ke(h))/(2*a),d=(-s-ke(h))/(2*a),m=(c*f-n)/(f-d),p=(n-c*d)/(f-d);return{x:l+m*_e(d*u)+p*_e(f*u),v:m*d*_e(d*u)+p*f*_e(f*u)}}if(h<0){var v=-s/(2*a),g=ke(-h)/(2*a),b=c,y=(n-v*c)/g;return{x:l+_e(v*u)*(b*Fe(g*u)+y*Se(g*u)),v:_e(v*u)*((y*g+b*v)*Fe(g*u)-(b*g-y*v)*Se(g*u))}}var x=-s/(2*a),w=c,E=n-x*c;return{x:l+(w+E*u)*_e(x*u),v:(E+w*x+E*x*u)*_e(x*u)}}var He=[],Me=null;function Te(e){var t=He.push(e);return 1===t&&(Me=requestAnimationFrame(Ae)),[Me,t-1]}function ze(e){var t=e[0],n=e[1];t===Me&&delete He[n]}function Ae(){var e=Ne(),t=He;He=[],(0,o.unstable_batchedUpdates)((function(){return t.forEach((function(t){return t&&t(e)}))}))}var Le="undefined"!=typeof window?r.useLayoutEffect:r.useEffect;function Be(e,t){void 0===t&&(t={});var n=r.useState()[1],o=Oe(e,t),i=function(e,t){var n=r.useRef(null);return null==n.current&&(n.current={config:Oe(e,t),state:Ce(e,t)}),n.current}(e,t),s=i.state,a=i.config,l=Ne(),c=s.x0,u=s.v0,h=s.t0,f=a.k,d=a.c,m=a.m,p=a.X,v=o.teleport?{x:p,v:0}:Pe({x0:c,v0:u,t0:h,t:l,k:f,c:d,m:m,X:p}),g=v.x,b=v.v,y=function(e,t,n,r){var o=r.decimals,i=r.X,s=r.k,a=r.c,l=r.m;if(We(e,o)!==We(i,o))return!0;var c=n+.016,u=Pe({x0:e,v0:t,t0:n,t:c,k:s,c:a,m:l,X:i});return We(u.x,o)!==We(i,o)}(g,b,l,o);return Le((function(){Object.assign(a,o)}),[o.X,o.k,o.c,o.m,o.teleport]),Le((function(){s.x0=g,s.v0=b,s.t0=l}),[g,b,l]),Le((function(){y&&null==s.raf?s.raf=Te((function e(t){var r=s.x0,o=s.v0,i=s.t0,l=a.k,c=a.c,u=a.m,h=a.X,f=a.decimals;We(Pe({x0:r,v0:o,t0:i,t:t,k:l,c:c,m:u,X:h}).x,f)!==We(r,f)?(s.raf=null,n(t)):s.raf=Te(e)})):y||null==s.raf||(ze(s.raf),s.raf=null)})),Le((function(){return function(){null!=s.raf&&ze(s.raf)}}),[]),[We(g,o.decimals),y]}function We(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}const Ie={stiffness:120,damping:24,mass:.2,decimals:3};function $e(e){var{step:t,config:n}=e,o=i(e,["step","config"]);const{tween:s,t:a}=function(e,t=Ie){const[{target:n,steps:o,index:i},s]=r.useState({target:2,steps:[e,e,e],index:0});r.useEffect((()=>{o[o.length-1]!=e&&s((t=>function(e,t,n){const{steps:r,target:o,index:i}=e,s=r.slice(),a=n-i;return a<1?(s[2]=t,Object.assign(Object.assign({},e),{steps:s})):(s[0]=r[1],s[1]=r[2],s[2]=t,Object.assign(Object.assign({},e),{steps:s,target:o+1,index:i+1}))}(t,e,a)))}),[e]);const[a]=Be(n,t),l=a-i;return l<=1?{tween:{prev:o[0],next:o[1]},t:l}:{tween:{prev:o[1],next:o[2]},t:l-1}}(t,n.spring);return r.createElement(xe,Object.assign({tween:s,progress:a,config:n},o))}const Re=r.forwardRef((function(e,t){var{title:n,children:o,titleBar:s,zoom:a=1,overflow:l}=e,c=i(e,["title","children","titleBar","zoom","overflow"]);const u=s||r.createElement(qe,{title:n}),h={"--ch-frame-zoom":a,overflow:l};return r.createElement("div",Object.assign({},c,{ref:t}),r.createElement("div",{className:"ch-frame"},r.createElement("div",{className:"ch-frame-title-bar"},u),r.createElement("div",{className:"ch-frame-content"},r.createElement("div",{className:"ch-frame-zoom",style:h},o))))}));function qe({title:e}){return r.createElement(r.Fragment,null,r.createElement("div",{className:"ch-frame-left-bar"},r.createElement(Xe,null)),r.createElement("div",{className:"ch-frame-middle-bar"},e),r.createElement("div",{className:"ch-frame-right-bar"}))}function Xe(){return r.createElement("div",{className:"ch-frame-buttons"},r.createElement("div",{className:"ch-frame-button ch-frame-button-left"}),r.createElement("div",{className:"ch-frame-button-space"}),r.createElement("div",{className:"ch-frame-button ch-frame-button-middle"}),r.createElement("div",{className:"ch-frame-button-space"}),r.createElement("div",{className:"ch-frame-button ch-frame-button-right"}))}r.forwardRef((function(e,t){var{title:n,children:o,titleBar:s,overflow:a}=e,l=i(e,["title","children","titleBar","overflow"]);const c=s||r.createElement(qe,{title:n});return r.createElement("div",Object.assign({},l,{ref:t}),r.createElement("div",{className:"ch-simple-frame"},r.createElement("div",{className:"ch-frame-title-bar"},c),o))}));const Ue=r.forwardRef((function(e,t){var n,{northPanel:o,southPanel:s,terminalPanel:a,style:l,height:c,northButton:u,southButton:h,className:f,onTabClick:d}=e,m=i(e,["northPanel","southPanel","terminalPanel","style","height","northButton","southButton","className","onTabClick"]);return r.createElement("div",Object.assign({ref:t},m,{className:"ch-editor-frame",style:l}),r.createElement("div",{className:"ch-frame-title-bar"},r.createElement(Ze,{tabs:o.tabs,showFrameButtons:!0,button:u,panel:"north",onTabClick:d})),r.createElement("div",{"data-ch-panel":"north",style:o.style,children:o.children}),s&&r.createElement(r.Fragment,null,r.createElement("div",{className:"ch-frame-title-bar",style:{transform:null===(n=s.style)||void 0===n?void 0:n.transform}},r.createElement(Ze,{tabs:s.tabs,showFrameButtons:!1,button:h,topBorder:!0,panel:"south",onTabClick:d})),r.createElement("div",{"data-ch-panel":"south",children:s.children,style:s.style})))}));function Ze({tabs:e,button:t,showFrameButtons:n,topBorder:o,panel:i,onTabClick:s}){return r.createElement(r.Fragment,null,o&&r.createElement("div",{className:"ch-editor-group-border"}),n?r.createElement(Xe,null):r.createElement("div",null),e.map((({title:e,active:t,style:n})=>r.createElement("div",{key:e,title:e,"data-ch-tab":i,"data-active":t,className:"ch-editor-tab",style:n,onClick:s&&(()=>s(e))},r.createElement(Ke,{title:e})))),r.createElement("div",{style:{flex:1,minWidth:"0.8em"}}),t)}function Ke({title:e}){if(!e)return r.createElement("div",null);const t=e.lastIndexOf("/")+1,n=e.substring(t),o=e.substring(0,t);return r.createElement("div",null,r.createElement("span",{style:{opacity:.5}},o),n)}const Ge=r.createElement("span",{className:"ch-terminal-prompt"},"$");function Ye({text:e,progress:t=1,style:n}){const o=function(e,t){if(!e)return[];const n=Math.round(e.length*t),{commands:r}=function(e){const[,...t]=e.split(/^\$\s*/gm),n=t.map((e=>{const[t,...n]=e.split(/\r?\n/);return{run:t,output:n.length>0?n.join("\n"):null}})),r=n[n.length-1],o=n.length>0&&null!=r.output;return{title:o?r.run.split(/(\s+)/)[0]:"bash",isRunning:o,commands:n}}(e.slice(0,n));return r}(e,t);return r.createElement("pre",{style:n,className:"ch-terminal-content"},o.map((({run:e,output:t},n)=>r.createElement(r.Fragment,{key:n},r.createElement("div",null,Ge," ",r.createElement("span",null,e)),t&&r.createElement("div",{className:"ch-terminal-output"},t)))))}function Ve({prev:e="",prevKey:t,next:n="",nextKey:o,progress:i}){return r.createElement("div",{className:"ch-terminal"},r.createElement("div",{style:{position:"relative",transform:`translateY(-${100*i}%)`}},r.createElement(Ye,{text:e,progress:1,key:t}),r.createElement(Ye,{style:{position:"absolute"},text:n,progress:i,key:o})))}function De({steps:e,progress:t}){const n=e.map((e=>e.text)),o=t%1,i=(s=Math.floor(t),a=0,l=e.length-1,Math.min(Math.max(s,a),l));var s,a,l;const c=i+1;return r.createElement(Ve,{prev:n[i],prevKey:i,next:n[c]||"",nextKey:c,progress:o})}function Je({prev:e,next:t,t:n,backward:o}){const i=function({prev:e,next:t,t:n,backward:r}){return e||t?!e&&t?Qe*Math.min(4*n,1):e&&!t?Qe*Math.max(1-4*n,0):Qe:0}({prev:e,next:t,t:n,backward:o});return i?r.createElement("div",{className:"ch-editor-terminal",style:{height:i}},r.createElement("div",{className:"ch-editor-terminal-tab"},r.createElement("span",null,"Terminal")),r.createElement("div",{className:"ch-editor-terminal-content"},r.createElement(De,{steps:[{text:e||""},{text:t||""}],progress:n}),")")):null}const Qe=150;function et(e){return Array.isArray(e.rows)?Object.assign(Object.assign({},e),{rows:e.rows[0]}):e}function tt(e){return Array.isArray(e.rows)?Object.assign(Object.assign({},e),{rows:e.rows[1]}):e}function nt(e,t,n,o,i,s){const{prevSnapshot:a,nextSnapshot:l}=function(e,t,n){const[{prevSnapshot:o,nextSnapshot:i},s]=r.useState({prevSnapshot:null,nextSnapshot:null});return ut((()=>{(o||i)&&s({prevSnapshot:null,nextSnapshot:null})}),[t,n]),ut((()=>{if(o){if(!i){const t=e.current;s((e=>Object.assign(Object.assign({},e),{nextSnapshot:Object.assign(Object.assign({},ht(t,n)),ft(t,n))})))}}else{const n=e.current;s((e=>Object.assign(Object.assign({},e),{prevSnapshot:Object.assign(Object.assign({},ht(n,t)),ft(n,t))})))}})),{prevSnapshot:o,nextSnapshot:i}}(e,t,n);if(!a)return function(e,t,n){const o=e.northPanel,i=e.southPanel,{prevNorthFile:s,prevSouthFile:a,nextNorthFile:l,nextSouthFile:c}=st(e,t,!0);return{northContent:it(s),northPanel:{tabs:o.tabs.map((e=>({title:e,active:e===o.active,style:{}}))),style:{flexGrow:1,overflow:"hidden"},children:r.createElement(ot,{codeConfig:et(n),prevFile:s,nextFile:s,t:0,parentHeight:"0"})},southContent:it(a),southPanel:i&&{tabs:i.tabs.map((e=>({title:e,active:e===i.active,style:{}}))),style:{flexGrow:1,overflow:"hidden"},children:r.createElement(ot,{codeConfig:tt(n),prevFile:a,nextFile:a,t:0,parentHeight:"0"})}}}(t,n,s);if(!l)return rt(t,n,s);if(1===o)return rt(t,n,s);const c=t.southPanel||n.southPanel,{prevNorthFile:u,prevSouthFile:h,nextNorthFile:f,nextSouthFile:d}=st(t,n,0==o||i),{northStyle:m,southStyle:p}=function(e,t,n){if(null===e.southHeight&&null===t.southHeight)return{northStyle:{minHeight:e.northHeight}};if(null!==e.southHeight&&null===t.southHeight&&t.northKey!==e.southKey)return{northStyle:{minHeight:at(e.northHeight,t.northHeight,n)},southStyle:{minHeight:e.southHeight}};if(null!==e.southHeight&&null===t.southHeight&&e.southKey===t.northKey)return{northStyle:{minHeight:e.northHeight},southStyle:{position:"relative",minHeight:at(e.southHeight,t.northHeight,n),transform:`translateY(${at(0,-(e.northHeight+e.titleBarHeight),n)}px)`}};if(null===e.southHeight&&null!==t.southHeight&&e.northKey!==t.southKey)return{northStyle:{minHeight:at(e.northHeight,t.northHeight,n)},southStyle:{position:"relative",minHeight:t.southHeight}};if(null===e.southHeight&&null!==t.southHeight&&e.northKey===t.southKey)return{northStyle:{minHeight:t.northHeight},southStyle:{position:"relative",minHeight:at(e.northHeight,t.southHeight,n),transform:`translateY(${at(-(t.northHeight+t.titleBarHeight),0,n)}px)`}};return{northStyle:{minHeight:at(e.northHeight,t.northHeight,n)},southStyle:{minHeight:at(e.southHeight,t.southHeight,n)}}}(a,l,o),{northTabs:v,southTabs:g}=function(e,t,n,r,o){if(!e.southTabs&&ct(r,e.northTabs))return{northTabs:lt(t.northTabs,t.southTabs,e.southTabs,e.northTabs,n,o),southTabs:lt(t.southTabs,t.northTabs,e.northTabs,e.southTabs,r,o)};if(!t.southTabs&&ct(r,t.northTabs))return{northTabs:lt(t.southTabs,t.northTabs,e.northTabs,e.southTabs,n,o),southTabs:lt(t.northTabs,t.southTabs,e.southTabs,e.northTabs,r,o)};return{northTabs:lt(t.northTabs,t.southTabs,e.northTabs,e.southTabs,n,o),southTabs:lt(t.southTabs,t.northTabs,e.southTabs,e.northTabs,r,o)}}(a,l,u.name,null==h?void 0:h.name,o);return{northContent:it(f),northPanel:{tabs:v,style:m,children:r.createElement(ot,{codeConfig:et(s),prevFile:u,nextFile:f,t:o,parentHeight:m.height||m.minHeight})},southContent:it(d),southPanel:c&&{tabs:g,style:p,children:r.createElement(ot,{codeConfig:tt(s),prevFile:h,nextFile:d,t:o,parentHeight:(null==p?void 0:p.height)||(null==p?void 0:p.minHeight)})}}}function rt(e,t,n){var o;const i=t.northPanel,s=t.southPanel;let{prevNorthFile:a,prevSouthFile:l,nextNorthFile:c,nextSouthFile:u}=st(e,t,!1);return!s&&i.active===(null===(o=null==e?void 0:e.southPanel)||void 0===o?void 0:o.active)&&(c=u),{northContent:it(c),northPanel:{tabs:i.tabs.map((e=>({title:e,active:e===i.active,style:{}}))),style:{flexGrow:1,overflow:"hidden"},children:r.createElement(ot,{codeConfig:et(n),prevFile:c,nextFile:c,t:1,parentHeight:"1"})},southContent:it(u),southPanel:s&&{tabs:s.tabs.map((e=>({title:e,active:e===s.active,style:{}}))),style:{flexGrow:1,overflow:"hidden"},children:r.createElement(ot,{codeConfig:tt(n),prevFile:u,nextFile:u,t:1,parentHeight:"1"})}}}function ot({prevFile:e,nextFile:t,t:n,codeConfig:o,parentHeight:i}){var s;const a=Object.assign(Object.assign({},null==o?void 0:o.htmlProps),{style:Object.assign({height:"100%"},null===(s=null==o?void 0:o.htmlProps)||void 0===s?void 0:s.style)});return r.createElement(xe,Object.assign({progress:n,tween:{prev:e,next:t},config:Object.assign(Object.assign({},o),{parentHeight:i})},a))}function it(e){return e?p(e.code):""}function st(e,t,n){var r,o;const i=e.northPanel.active,s=t.northPanel.active,a=null===(r=e.southPanel)||void 0===r?void 0:r.active,l=null===(o=t.southPanel)||void 0===o?void 0:o.active,c=e.files.find((e=>e.name===i)),u=t.files.find((e=>e.name===s)),h=a?e.files.find((e=>e.name===a)):null,f=l?t.files.find((e=>e.name===l)):null;if(!a&&i===l)return{prevNorthFile:u,nextNorthFile:u,prevSouthFile:c,nextSouthFile:f};if(!l&&s===a)return{prevNorthFile:c,nextNorthFile:c,prevSouthFile:h,nextSouthFile:u};return{prevNorthFile:i===s||n?c:u,nextNorthFile:i===s?u:n?c:u,prevSouthFile:a===l?h:n?h||f:f||h,nextSouthFile:a===l?f:n?h||f:f||h}}function at(e,t,n){return e+(t-e)*n}function lt(e,t,n,r,o,i){const s=e?Object.keys(e).filter((e=>ct(e,n)||!n)).map((t=>{const r=n&&n[t],s=e[t],a=r?r.left+(s.left-r.left)*i:s.left,l=r?r.width+(s.width-r.width)*i:s.width;return{active:t===o,title:t,style:{position:"absolute",transform:`translateX(${a}px)`,width:l}}})):[],a=e?Object.keys(e).filter((e=>n&&!ct(e,n))).map((t=>{const n=e[t];return{active:t===o,title:t,style:{position:"absolute",transform:`translateX(${n.left}px)`,opacity:i,width:n.width}}})):[];!e||Object.keys(e).filter((e=>ct(e,r))).map((t=>{const n=r[t],i=e[t].left-n.left;return{active:t===o,title:t,style:{position:"absolute",transform:`translateX(${i}px)`}}}));return[...a,...s,...n?Object.keys(n).filter((t=>!ct(t,e))).map((e=>{const t=n[e];return{active:e===o,title:e,style:{position:"absolute",opacity:1-i,transform:`translateX(${t.left}px)`,width:t.width}}})):[]]}function ct(e,t){return t&&e&&e in t}const ut="undefined"!=typeof window?r.useLayoutEffect:r.useEffect;function ht(e,t){var n;const r=e.querySelector("[data-ch-panel='north']"),o=e.querySelector("[data-ch-panel='south']");return{titleBarHeight:e.querySelector(".ch-frame-title-bar").getBoundingClientRect().height,northHeight:r.getBoundingClientRect().height,northKey:t.northPanel.active,southHeight:(null==o?void 0:o.getBoundingClientRect().height)||null,southKey:null===(n=t.southPanel)||void 0===n?void 0:n.active}}function ft(e,t){var n;const r=Array.from(e.querySelectorAll("[data-ch-tab='north']")),o=Array.from(e.querySelectorAll("[data-ch-tab='south']"));return{northTabs:dt(r,t.northPanel.active),southTabs:dt(o,null===(n=t.southPanel)||void 0===n?void 0:n.active)}}function dt(e,t){if(!e[0])return null;const n=e[0].parentElement.getBoundingClientRect().left,r={};return e.forEach((e=>{const o=e.getAttribute("title"),i=e.getBoundingClientRect();r[o]={left:i.left-n,width:i.width,active:o===t}})),r}function mt({files:e,startingFileName:t}){const[n,o]=r.useState((()=>e.find((e=>e.name===t))));return r.createElement("div",{className:"ch-code-browser"},r.createElement(pt,{files:e,activeFile:n,setActiveFile:o}),r.createElement(bt,{file:n}))}function pt({files:e,activeFile:t,setActiveFile:n}){const o=r.useMemo((()=>function(e){let t=[];for(const n of e){const e=n.name.split("/");let r=t;for(let t=0;te.name===o));if(-1===s){const e={name:o,children:[],codeFile:void 0};i&&(e.codeFile=n),r.push(e),r=e.children}else r=r[s].children}}return t=yt(t),t}(e)),[e]);return r.createElement("div",{className:"ch-code-browser-sidebar"},r.createElement(vt,{tree:o,activeFile:t,setActiveFile:n}))}function vt({tree:e,activeFile:t,setActiveFile:n,level:o=0}){return r.createElement(r.Fragment,null,e.map((e=>r.createElement(gt,{key:e.name,node:e,activeFile:t,setActiveFile:n,level:o}))))}function gt({node:e,activeFile:t,setActiveFile:n,level:o}){const i=e.children&&e.children.length>0,s=e.codeFile===t;return i?r.createElement("div",null,r.createElement("div",{className:"ch-code-browser-sidebar-folder"},r.createElement("div",{style:{paddingLeft:1.5*o+"ch"}},e.name)),r.createElement(vt,{tree:e.children,activeFile:t,setActiveFile:n,level:o+1})):r.createElement("div",null,r.createElement("div",{className:"ch-code-browser-sidebar-file","data-selected":s,onClick:()=>n(e.codeFile)},r.createElement("div",{style:{paddingLeft:1.5*o+"ch"}},e.name)))}function bt({file:e}){return r.createElement("div",{className:"ch-code-browser-content"},r.createElement(be,{className:"ch-code-browser-button",content:p(e.code)}),e.code.lines.map(((e,t)=>r.createElement("div",{key:t},e.tokens.map(((e,t)=>r.createElement("span",Object.assign({key:t},e.props),e.content))),r.createElement("br",null)))))}function yt(e){for(const t of e)t.children=yt(t.children);return e.sort(((e,t)=>{const n=e.children&&e.children.length>0,r=t.children&&t.children.length>0;return n&&r||!n&&!r?e.name.localeCompare(t.name):n?-1:1}))}function xt({style:e,step:t,className:n}){const[o,i]=r.useState(!1),[s,a]=r.useState(!0),l=r.useRef(null),c=t.files;return r.useEffect((()=>{l.current&&!l.current.showModal&&a(!1)}),[]),s?r.createElement(r.Fragment,null,r.createElement(wt,{className:n,style:e,onClick:()=>{l.current.showModal(),document.body.classList.add("ch-no-scroll"),i(!0)}}),r.createElement("dialog",{ref:l,className:"ch-expand-dialog",onClose:()=>{i(!1)},onClick:e=>{e.currentTarget===e.target&&(l.current.close(),document.body.classList.remove("ch-no-scroll"))}},r.createElement(Et,{onClick:()=>{l.current.close(),document.body.classList.remove("ch-no-scroll")}}),o?r.createElement("div",{className:"ch-expand-dialog-content"},r.createElement(mt,{files:c,startingFileName:t.northPanel.active})):void 0)):null}function wt({onClick:e,style:t,className:n}){return r.createElement("button",{type:"button",title:"Expand",style:t,onClick:e,className:n},r.createElement("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4"})))}function Et({onClick:e}){return r.createElement("button",{onClick:e,className:"ch-expand-close",type:"button",title:"Close"},r.createElement("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))}const jt={files:[{code:{lines:[],lang:"js"},focus:"",name:""}],northPanel:{active:"",tabs:[""],heightRatio:1}};function Nt(e){var{prev:t=jt,next:n,t:o,backward:s,codeConfig:a,frameProps:l={}}=e,c=i(e,["prev","next","t","backward","codeConfig","frameProps"]);const u=r.createRef(),{showCopyButton:h,showExpandButton:f}=a,d=i(a,["showCopyButton","showExpandButton"]),{northPanel:m,southPanel:p,northContent:v,southContent:g}=nt(u,t,n||t,o,s,d),[b,y]=r.useState(void 0);C((()=>{var e;const t=null===(e=u.current)||void 0===e?void 0:e.getBoundingClientRect().height;y(t)}),[]);const x=Object.assign(Object.assign(Object.assign({},l),c),{style:Object.assign(Object.assign({},null==l?void 0:l.style),null==c?void 0:c.style)});b&&(x.style.height=b,x.style.maxHeight=b);const w=r.createElement(r.Fragment,null,h?r.createElement(be,{className:"ch-editor-button",content:v}):void 0,f?r.createElement(xt,{className:"ch-editor-button",step:n||t}):void 0),E=h?r.createElement(be,{className:"ch-editor-button",content:g}):void 0,j=r.createElement(Je,{prev:t.terminal,next:(n||t).terminal,t:o,backward:s});return r.createElement(Ue,Object.assign({ref:u},x,{northPanel:m,southPanel:p,terminalPanel:j,northButton:w,southButton:E}))}const Ot={stiffness:120,damping:24,mass:.2,decimals:3};function Ct(e){var{northPanel:t,southPanel:n,files:o,terminal:s,springConfig:a}=e,l=i(e,["northPanel","southPanel","files","terminal","springConfig"]);const c=r.useMemo((()=>({northPanel:t,southPanel:n,files:o,terminal:s})),[t,n,o,s]),{prev:u,next:h,t:f}=function(e,t=Ot){const[{target:n,steps:o,index:i},s]=r.useState({target:2,steps:[e,e,e],index:0});r.useEffect((()=>{o[o.length-1]!=e&&s((t=>function(e,t,n){const{steps:r,target:o,index:i}=e,s=r.slice(),a=n-i;return a<1?(s[2]=t,Object.assign(Object.assign({},e),{steps:s})):(s[0]=r[1],s[1]=r[2],s[2]=t,Object.assign(Object.assign({},e),{steps:s,target:o+1,index:i+1}))}(t,e,a)))}),[e]);const[a]=Be(n,t),l=a-i;return l<=1?{prev:o[0],next:o[1],t:l}:{prev:o[1],next:o[2],t:l-1}}(c,a);return r.createElement(Nt,Object.assign({t:f,backward:!1,prev:u,next:h},l))}function kt(e){const[t,n]=r.useState(e);return r.createElement(_t,Object.assign({},t,{onTabClick:function(e){const r=St(t,e,null);n(Object.assign(Object.assign({},t),r))}}))}function _t(e){var t,n,{onTabClick:o}=e,s=i(e,["onTabClick"]);const a=function(e){var t,n,r,o,s,a,l,c,u;const{lineNumbers:h,showCopyButton:f,showExpandButton:d,minZoom:m,maxZoom:p}=e,v=i(e,["lineNumbers","showCopyButton","showExpandButton","minZoom","maxZoom"]),g=Object.assign(Object.assign({},e.codeConfig),{maxZoom:null==p?null===(t=e.codeConfig)||void 0===t?void 0:t.maxZoom:p,minZoom:null==m?null===(n=e.codeConfig)||void 0===n?void 0:n.minZoom:m,horizontalCenter:null!==(o=null===(r=e.codeConfig)||void 0===r?void 0:r.horizontalCenter)&&void 0!==o?o:e.horizontalCenter,lineNumbers:null==h?null===(s=e.codeConfig)||void 0===s?void 0:s.lineNumbers:h,showCopyButton:null==f?null===(a=e.codeConfig)||void 0===a?void 0:a.showCopyButton:f,showExpandButton:null==d?null===(l=e.codeConfig)||void 0===l?void 0:l.showExpandButton:d,rows:e.rows,debug:null!==(c=e.debug)&&void 0!==c?c:null===(u=e.codeConfig)||void 0===u?void 0:u.debug});return Object.assign(Object.assign({},v),{codeConfig:g})}(s),{className:l,style:c,codeConfig:u}=a,h=i(a,["className","style","codeConfig"]);if(s.southPanel||1!==s.files.length||s.files[0].name){const e=Object.assign(Object.assign({},null==h?void 0:h.frameProps),{onTabClick:o});return r.createElement("div",{className:`ch-codegroup not-prose ${l||""}`,"data-ch-theme":null===(n=s.codeConfig)||void 0===n?void 0:n.themeName,style:c},r.createElement(Ct,Object.assign({},h,{frameProps:e,codeConfig:u})))}return r.createElement("div",{className:`ch-codeblock not-prose ${l||""}`,"data-ch-theme":null===(t=s.codeConfig)||void 0===t?void 0:t.themeName,style:c},r.createElement($e,{className:"ch-code",config:u,step:h.files[0]}))}function St(e,t,n){const r=t||e.northPanel.active,o=e.files.map((e=>e.name===r?Object.assign(Object.assign({},e),{focus:null===n?e.focus:n}):e));let i=Object.assign({},e.northPanel),s=e.southPanel&&Object.assign({},e.southPanel);return e.northPanel.tabs.includes(r)?i.active=r:s&&(s.active=r),{files:o,northPanel:i,southPanel:s}}r.createContext({props:null,setFocus:()=>{}});r.createContext({activatedId:void 0,activate:()=>{},reset:()=>{}});function Ft(){return r.createElement("svg",{fill:"currentColor",preserveAspectRatio:"xMidYMid meet",height:"1em",viewBox:"13 10 14 23",className:"ch-browser-button ch-browser-back-button"},r.createElement("g",null,r.createElement("path",{d:"m26.5 12.1q0 0.3-0.2 0.6l-8.8 8.7 8.8 8.8q0.2 0.2 0.2 0.5t-0.2 0.5l-1.1 1.1q-0.3 0.3-0.6 0.3t-0.5-0.3l-10.4-10.4q-0.2-0.2-0.2-0.5t0.2-0.5l10.4-10.4q0.3-0.2 0.5-0.2t0.6 0.2l1.1 1.1q0.2 0.2 0.2 0.5z"})))}function Pt(){return r.createElement("svg",{fill:"currentColor",preserveAspectRatio:"xMidYMid meet",height:"1em",viewBox:"13 10 14 23",className:"ch-browser-button ch-browser-forward-button"},r.createElement("g",null,r.createElement("path",{d:"m26.3 21.4q0 0.3-0.2 0.5l-10.4 10.4q-0.3 0.3-0.6 0.3t-0.5-0.3l-1.1-1.1q-0.2-0.2-0.2-0.5t0.2-0.5l8.8-8.8-8.8-8.7q-0.2-0.3-0.2-0.6t0.2-0.5l1.1-1.1q0.3-0.2 0.5-0.2t0.6 0.2l10.4 10.4q0.2 0.2 0.2 0.5z"})))}function Ht({href:e}){return r.createElement("a",{className:"ch-browser-button ch-browser-open-button",title:"Open in new tab",href:e,target:"_blank",rel:"noopener noreferrer"},r.createElement("svg",{stroke:"currentColor",fill:"currentColor",strokeWidth:"0",viewBox:"3 3 18 18",height:"1em",width:"1em",className:"ch-browser-open-icon",xmlns:"http://www.w3.org/2000/svg"},r.createElement("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"})))}function Mt({url:e,linkUrl:t}){return r.createElement(r.Fragment,null,r.createElement(Xe,null),r.createElement(Ft,null),r.createElement(Pt,null),r.createElement("input",{value:e||"",readOnly:!0}),r.createElement(Ht,{href:t}))}function Tt(e){return r.useMemo((()=>e?e.map((e=>{const{displayUrl:t,loadUrl:n}=function(e,t,n){const r="undefined"!=typeof window?window.origin:"",o=e&&!0===n?r+e:e;return{displayUrl:o,loadUrl:t||o}}(e.url,e.loadUrl,e.prependOrigin);return{zoom:e.zoom||1,displayUrl:t,loadUrl:n,children:e.children}})):[{zoom:1}]),[e])}r.forwardRef((function(e,t){var{progress:n=0,backward:o=!1,steps:s,transition:a="none"}=e,l=i(e,["progress","backward","steps","transition"]);const c=Tt(s),u=Math.round(n),{zoom:h,displayUrl:f,loadUrl:d,children:m}=c[u];return r.createElement(Re,Object.assign({},l,{zoom:h,className:`ch-mini-browser ${l.className||""}`,style:Object.assign(Object.assign({},zt({progress:n,transition:a})),l.style),titleBar:r.createElement(Mt,{url:f,linkUrl:d})}),m||r.createElement("iframe",{ref:t,src:d}))}));function zt({progress:e,transition:t}){if("slide"===t){const t=50,n=e-Math.floor(e),r=n<=.5?-t*n:t-t*n,o=2*Math.abs(n-.5);return{transform:`translateX(${r}px)`,opacity:o*o}}return{}}var At="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Lt={};Object.defineProperty(Lt,"__esModule",{value:!0}),Lt.getMainFile=function(e){return"vue-cli"===e?"src/main.js":"angular-cli"===e?"src/main.ts":"create-react-app-typescript"===e?"src/index.tsx":"parcel"===e?"index.html":"gatsby"===e?"src/pages/index.js":"nuxt"===e||"next"===e||"apollo"===e||"reason"===e||"sapper"===e?"package.json":"nest"===e?"src/main.ts":"static"===e?"index.html":"src/index.js"};var Bt="sandbox.config.json";Lt.getTemplate=function(e,t){var n=t[Bt]||t["/"+Bt];if(n)try{var r=JSON.parse(n.content);if(r.template)return r.template}catch(d){}var o=e.dependencies,i=void 0===o?{}:o,s=e.devDependencies,a=void 0===s?{}:s,l=Object.keys(i).concat(Object.keys(a)),c=["nuxt","nuxt-edge"];if(l.some((function(e){return c.indexOf(e)>-1})))return"nuxt";if(l.indexOf("next")>-1)return"next";var u=["apollo-server","apollo-server-express","apollo-server-hapi","apollo-server-koa","apollo-server-lambda","apollo-server-micro"];if(l.some((function(e){return u.indexOf(e)>-1})))return"apollo";if(l.indexOf("ember-cli")>-1)return"ember";if(l.indexOf("sapper")>-1)return"sapper";var h=Object.keys(t);if(h.some((function(e){return e.endsWith(".vue")})))return"vue-cli";if(h.some((function(e){return e.endsWith(".re")})))return"reason";if(l.indexOf("gatsby")>-1)return"gatsby";if(l.indexOf("parcel-bundler")>-1)return"parcel";if(l.indexOf("react-scripts")>-1)return"create-react-app";if(l.indexOf("react-scripts-ts")>-1)return"create-react-app-typescript";if(l.indexOf("@angular/core")>-1)return"angular-cli";if(l.indexOf("preact-cli")>-1)return"preact-cli";if(l.indexOf("svelte")>-1)return"svelte";if(l.indexOf("vue")>-1)return"vue-cli";var f=["@dojo/core","@dojo/framework"];return l.some((function(e){return f.indexOf(e)>-1}))?"@dojo/cli-create-app":l.indexOf("cx")>-1?"cxjs":l.indexOf("@nestjs/core")>-1||l.indexOf("@nestjs/common")>-1?"nest":void 0};var Wt={exports:{}};!function(e,t){var n="__lodash_hash_undefined__",r=1,o=2,i=9007199254740991,s="[object Arguments]",a="[object Array]",l="[object AsyncFunction]",c="[object Boolean]",u="[object Date]",h="[object Error]",f="[object Function]",d="[object GeneratorFunction]",m="[object Map]",p="[object Number]",v="[object Null]",g="[object Object]",b="[object Promise]",y="[object Proxy]",x="[object RegExp]",w="[object Set]",E="[object String]",j="[object Symbol]",N="[object Undefined]",O="[object WeakMap]",C="[object ArrayBuffer]",k="[object DataView]",_=/^\[object .+?Constructor\]$/,S=/^(?:0|[1-9]\d*)$/,F={};F["[object Float32Array]"]=F["[object Float64Array]"]=F["[object Int8Array]"]=F["[object Int16Array]"]=F["[object Int32Array]"]=F["[object Uint8Array]"]=F["[object Uint8ClampedArray]"]=F["[object Uint16Array]"]=F["[object Uint32Array]"]=!0,F[s]=F[a]=F[C]=F[c]=F[k]=F[u]=F[h]=F[f]=F[m]=F[p]=F[g]=F[x]=F[w]=F[E]=F[O]=!1;var P="object"==typeof At&&At&&At.Object===Object&&At,H="object"==typeof self&&self&&self.Object===Object&&self,M=P||H||Function("return this")(),T=t&&!t.nodeType&&t,z=T&&e&&!e.nodeType&&e,A=z&&z.exports===T,L=A&&P.process,B=function(){try{return L&&L.binding&&L.binding("util")}catch(e){}}(),W=B&&B.isTypedArray;function I(e,t){for(var n=-1,r=null==e?0:e.length;++nc))return!1;var h=a.get(e);if(h&&a.get(t))return h==t;var f=-1,d=!0,m=n&o?new Ce:void 0;for(a.set(e,t),a.set(t,e);++f-1},Ne.prototype.set=function(e,t){var n=this.__data__,r=Se(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Oe.prototype.clear=function(){this.size=0,this.__data__={hash:new je,map:new(he||Ne),string:new je}},Oe.prototype.delete=function(e){var t=Le(this,e).delete(e);return this.size-=t?1:0,t},Oe.prototype.get=function(e){return Le(this,e).get(e)},Oe.prototype.has=function(e){return Le(this,e).has(e)},Oe.prototype.set=function(e,t){var n=Le(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Ce.prototype.add=Ce.prototype.push=function(e){return this.__data__.set(e,n),this},Ce.prototype.has=function(e){return this.__data__.has(e)},ke.prototype.clear=function(){this.__data__=new Ne,this.size=0},ke.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},ke.prototype.get=function(e){return this.__data__.get(e)},ke.prototype.has=function(e){return this.__data__.has(e)},ke.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Ne){var r=n.__data__;if(!he||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Oe(r)}return n.set(e,t),this.size=n.size,this};var We=ae?function(e){return null==e?[]:(e=Object(e),function(e,t){for(var n=-1,r=null==e?0:e.length,o=0,i=[];++n-1&&e%1==0&&e-1&&e%1==0&&e<=i}function Ye(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Ve(e){return null!=e&&"object"==typeof e}var De=W?function(e){return function(t){return e(t)}}(W):function(e){return Ve(e)&&Ge(e.length)&&!!F[Fe(e)]};function Je(e){return null!=(t=e)&&Ge(t.length)&&!Ke(t)?_e(e):Te(e);var t}e.exports=function(e,t){return He(e,t)}}(Wt,Wt.exports);var It,$t;"0.19.0".replace(/\./g,"-");($t=It||(It={}))[$t.None=0]="None",$t[$t.Error=10]="Error",$t[$t.Warning=20]="Warning",$t[$t.Info=30]="Info",$t[$t.Debug=40]="Debug";"undefined"!=typeof window?r.useLayoutEffect:r.useEffect;r.createContext(void 0),"undefined"!=typeof window?r.useLayoutEffect:r.useEffect;r.createContext(null);const Rt={box:function({children:e,data:t}){const n="string"==typeof t?t:void 0;return r.createElement("span",{className:"ch-code-box-annotation",style:{outlineColor:n}},e)},bg:qt,label:function({children:e,data:t,style:n}){return r.createElement("div",{className:"ch-code-label-annotation",style:n},e,r.createElement("div",{className:"ch-code-label-annotation-text"},(null==t?void 0:t.children)||t))},link:function({children:e,isInline:t,style:n,data:o}){const i=(null==o?void 0:o.url)||o,s=null==o?void 0:o.title;return r.createElement("a",{href:i,title:s,className:t?"ch-code-inline-link":"ch-code-link",style:n},e)},mark:function(e){return e.isInline?r.createElement(Xt,Object.assign({},e)):r.createElement(qt,Object.assign({},e))},withClass:function({children:e,data:t,style:n}){return r.createElement("span",{style:n,className:t},e)}};function qt({children:e,data:t,style:n,lines:o}){const i=function(e){return e.map((e=>e.annotatedGroups.flatMap((e=>{var t;return null===(t=e.prev)||void 0===t?void 0:t.groups.flatMap((e=>e.tokens.map((e=>e.content))))})).join(""))).join("\n")}(o),s="ch-code-multiline-mark "+(null!=t?t:"");return r.createElement("div",{style:n,className:s},r.createElement("span",{className:"ch-code-multiline-mark-border"}),e,r.createElement(be,{className:"ch-code-button",content:i}))}function Xt({children:e,data:t}){const n="ch-code-inline-mark "+(null!=t?t:"");return r.createElement("span",{className:n,style:{background:Ut(e)||void 0}},e)}function Ut(e){var t,n,o;try{const i=r.Children.toArray(e)[0],s=r.Children.toArray((null===(t=null==i?void 0:i.props)||void 0===t?void 0:t.children)||[])[0],a=r.Children.toArray((null===(n=null==s?void 0:s.props)||void 0===n?void 0:n.children)||[])[0],{color:l}=(null===(o=null==a?void 0:a.props)||void 0===o?void 0:o.style)||{};return l?u(l,.2):void 0}catch(i){return}}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>a});var r=n(6540);const o={},i=r.createContext(o);function s(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/900.cec9b91d.js b/assets/js/900.cec9b91d.js deleted file mode 100644 index e387f5a094..0000000000 --- a/assets/js/900.cec9b91d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[900],{4754:(e,t,n)=>{n.d(t,{Cy:()=>kt,R0:()=>Zt,hk:()=>Rt});var r=n(6540),o=n(961);n(6763);function i(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o/^#([A-Fa-f0-9]{3,4}){1,2}$/.test(e),a=(e,t)=>e.match(new RegExp(`.{${t}}`,"g")),l=e=>parseInt(e.repeat(2/e.length),16);function c(e,t){return void 0!==e?e/255:"number"!=typeof t||t<0||t>1?1:t}function u(e,t){if(!e)return e;const{r:n,g:r,b:o,a:i}=function(e){if(!e)return;if(!s(e))throw new Error("Invalid color string, must be a valid hex color");const t=Math.floor((e.length-1)/3),n=a(e.slice(1),t),[r,o,i,u]=n.map(l);return{r:r,g:o,b:i,a:c(u,1)}}(e);return function(e){if(!e)return;const{r:t,g:n,b:r,a:o}=e,i=Math.round(255*o);return`#${t.toString(16).padStart(2,"0")}${n.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")}${i.toString(16).padStart(2,"0")}`}({r:n,g:r,b:o,a:i*t})}function h(e,t){return{prev:t(e.prev,"prev"),next:t(e.next,"next")}}function f(e,t){return{prev:void 0===(null==e?void 0:e.prev)?t:e.prev,next:void 0===(null==e?void 0:e.next)?t:e.next}}function d(e,t,n){return h(f(e,t),n)}function m(e,t){return t(e.prev)||t(e.next)}function p(e){return e.lines.map((e=>e.tokens.map((e=>e.content)).join(""))).join("\n")}function v(e){return e.split(/,(?![^\[]*\])/g)}function g(e){return e.reduce(((e,t)=>Object.assign(e,t)),{})}function b(e){const t=e.match(/(\d+)\[(.+)\]/);if(t){const[,e,n]=t,r=n.split(",").map(y),o=Number(e);return{[o]:r}}return g(E(e).map((e=>({[e]:!0}))))}function y(e){const[t,n]=e.split(":");if(!j(t))throw new O(t);const r=Number(t);if(r<1)throw new N;if(n){if(!j(n))throw new O(n);return{start:r,end:+n}}return{start:r,end:r}}function x(e){if(!e)throw new Error("Focus cannot be empty");try{return function(e){const t={};let n=-1,r=null==e?0:e.length;for(;++ne-1))]]}return E(e).map((e=>[e-1,!0]))}function E(e){const[t,n]=e.split(":");if(!j(t))throw new O(t);const r=Number(t);if(r<1)throw new N;if(n){if(!j(n))throw new O(n);const e=[];for(let t=r;t<=+n;t++)e.push(t);return e}return[r]}function j(e){e=e.toString();var t=Math.abs(e),n=parseInt(e,10);return!isNaN(t)&&n===t&&t.toString()===e}class N extends Error{constructor(){super("Invalid line or column number in focus string"),Object.setPrototypeOf(this,new.target.prototype)}}class O extends Error{constructor(e){super(`Invalid number "${e}" in focus string`),this.number=e,Object.setPrototypeOf(this,new.target.prototype)}}const C="undefined"!=typeof window?r.useLayoutEffect:r.useEffect;const k=200;function _(e,t,n,o,i,s){const[a,l]=r.useState(null),[c,u]=r.useState(0),h=function(){const[e,t]=r.useState(void 0);return r.useEffect((()=>{function e(){t(window.innerWidth)}return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)}),[]),e}(),f=r.useRef(null),{prevLongestLine:d,nextLongestLine:m,element:p}=r.useMemo((()=>{const n=F(e.prev,t.prev),s=F(e.next,t.next),a=(e.prev||e.next).trimEnd().split(S),l=Math.max(a.length,10);if(i){const e="focus"===i?function(e,t){const[n,r]=function(e,t){if(e){const t=x(e),n=Object.keys(t).map((e=>parseInt(e,10)));return[Math.min(...n),Math.max(...n)]}return[0,t.length-1]}(e.prev,t);return r-n+1}(t,a):i;let r=a.length;for(;re;)a.pop(),r--;n&&!a.includes(n)&&(a[a.length-1]=n)}let c=!1;const u=r.createElement("code",{className:"ch-code-scroll-parent"},r.createElement("br",null),a.map(((e,t)=>{const i=c||e!==n?void 0:f;return c=c||null!=i,r.createElement("div",{ref:i,key:t},o?r.createElement("span",{className:"ch-code-line-number"},"_",l):void 0,r.createElement("div",{style:{display:"inline-block",marginLeft:16}},r.createElement("span",null,e)))})),r.createElement("br",null));return{prevLongestLine:n,nextLongestLine:s,element:u}}),[e]),v=[...s,h,d,m,n,c];return C((()=>{var e;if(f.current){const t=f.current,r=null==t?void 0:t.parentElement,o=r.parentElement,{width:i}=o.getBoundingClientRect();if(!i&&0===c){const e=new ResizeObserver((([t])=>{const{width:n}=t.contentRect;n&&(e.disconnect(),u(1))}));return e.observe(o),()=>e.disconnect()}const s=null==t?void 0:t.querySelector(":scope > div"),a=null==t?void 0:t.querySelector(":scope > span"),h=a?function(e){const t=getComputedStyle(e);return parseFloat(t.width)}(a):0,p=P(s),g=p/d.length||1,b=m.length*g,y=null!==(e=H(s))&&void 0!==e?e:20,x={containerWidth:P(o.parentElement),containerHeight:H(o.parentElement),contentWidth:P(r.parentElement),contentHeight:H(r.parentElement),lineWidths:[p||b||k,b||p||k],lineWidth:[Math.max(p||b||k,g*n),Math.max(b||p||k,g*n)],lineHeight:y,colWidth:g,lineNumberWidth:h,deps:v};l(x)}return()=>{}}),v),!a||function(e,t){for(let n=0;nparseInt(e,10)))}return[...t.keys()]}(t,n);let o="";return n.forEach(((e,t)=>{r.includes(t)&&e.length>o.length&&(o=e)})),o}function P(e){const t=getComputedStyle(e);return parseFloat(t.width)-parseFloat(t.paddingLeft)-parseFloat(t.paddingRight)}function H(e){if(!e)return null;const t=getComputedStyle(e);return parseFloat(t.height)-parseFloat(t.paddingTop)-parseFloat(t.paddingBottom)}function M(){}function T(e,t,n,r,o){for(var i=0,s=t.length,a=0,l=0;ie.length?n:e})),c.value=e.join(h)}else c.value=e.join(n.slice(a,a+c.count));a+=c.count,c.added||(l+=c.count)}}var f=t[s-1];return s>1&&"string"==typeof f.value&&(f.added||f.removed)&&e.equals("",f.value)&&(t[s-2].value+=f.value,t.pop()),t}M.prototype={diff:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.callback;"function"==typeof n&&(r=n,n={}),this.options=n;var o=this;function i(e){return r?(setTimeout((function(){r(void 0,e)}),0),!0):e}e=this.castInput(e),t=this.castInput(t),e=this.removeEmpty(this.tokenize(e));var s=(t=this.removeEmpty(this.tokenize(t))).length,a=e.length,l=1,c=s+a,u=[{newPos:-1,components:[]}],h=this.extractCommon(u[0],t,e,0);if(u[0].newPos+1>=s&&h+1>=a)return i([{value:this.join(t),count:t.length}]);function f(){for(var n=-1*l;n<=l;n+=2){var r=void 0,c=u[n-1],h=u[n+1],f=(h?h.newPos:0)-n;c&&(u[n-1]=void 0);var d=c&&c.newPos+1=s&&f+1>=a)return i(T(o,r.components,t,e,o.useLongestToken));u[n]=r}else u[n]=void 0}var p;l++}if(r)!function e(){setTimeout((function(){if(l>c)return r();f()||e()}),0)}();else for(;l<=c;){var d=f();if(d)return d}},pushComponent:function(e,t,n){var r=e[e.length-1];r&&r.added===t&&r.removed===n?e[e.length-1]={count:r.count+1,added:t,removed:n}:e.push({count:1,added:t,removed:n})},extractCommon:function(e,t,n,r){for(var o=t.length,i=n.length,s=e.newPos,a=s-r,l=0;s+1{if(e.added)for(let t=0;tvoid 0===e.next?Object.assign(Object.assign({},t.prev[e.prev]),{lineNumber:{prev:e.prev+1},move:"exit",enterIndex:null,exitIndex:r++}):void 0===e.prev?Object.assign(Object.assign({},t.next[e.next]),{lineNumber:{next:e.next+1},move:"enter",enterIndex:n++,exitIndex:null}):Object.assign(Object.assign({},t.prev[e.prev]),{lineNumber:{prev:e.prev+1,next:e.next+1},move:"stay",enterIndex:null,exitIndex:null}))),enterCount:n,exitCount:r}}function U(e,t,n){const{lines:r}=e,o=i(e,["lines"]),s=h(t,((e,t)=>function(e,t){return g(e?v(e).map(b):[...t.keys()].map((e=>({[e+1]:!0}))))}(e,"prev"===t?r.filter((e=>"enter"!==e.move)):r.filter((e=>"exit"!==e.move))))),a=r.map((e=>{const{tokens:t}=e,r=i(e,["tokens"]),o={prev:!!e.lineNumber.prev&&s.prev[e.lineNumber.prev],next:!!e.lineNumber.next&&s.next[e.lineNumber.next]},a={prev:e.lineNumber.prev&&n.prev[e.lineNumber.prev]||[],next:e.lineNumber.next&&n.next[e.lineNumber.next]||[]};return Object.assign({focused:h(o,(e=>!!e)),groups:Z(t,o,a)},r)})),l=h(s,(e=>Object.keys(e).map((e=>Number(e))))),c=h(l,(e=>Math.min(...e))),u=h(l,(e=>Math.max(...e)));return Object.assign({lines:a,firstFocusedLineNumber:c,lastFocusedLineNumber:u},o)}function Z(e,t,n){const r=h(t,(e=>Array.isArray(e)?e:[])),o=h(n,(e=>e.map((({columnNumbers:e})=>e)))),i=function(e,t){const n=[...t.map((e=>e.start-1)),...t.map((e=>e.end))];let r=e;return n.forEach((e=>{const t=[];let n=0;r.forEach((r=>{const o=n,i=n+r.content.length;if(o{const r=G(s,t.prev),o=G(s,t.next),i=Y(s,n.prev),c=Y(s,n.next);a&&a.focused.prev===r&&a.focused.next===o&&a.annotation.prev===i&&a.annotation.next===c||(a={focused:{prev:r,next:o},tokens:[],annotation:{prev:i,next:c}},l.push(a)),null==a||a.tokens.push(e),s+=e.content.length})),l.map((e=>({focused:e.focused,tokens:e.tokens,element:K(e)})))}function K(e){return r.createElement(r.Fragment,null,e.tokens.map((({content:e,props:t},n)=>r.createElement("span",Object.assign({},t,{key:n+1}),e))))}function G(e,t){return Array.isArray(t)?t.some((({start:t,end:n})=>t-1<=e&&et.start-1<=e&&er)return i;const s=(t-n)/(r-n);return o+(e.ease||J.linear)(s)*(i-o)}}function D([e,t],n,r){if(r<=1)return[e,t];const o=t-e,i=o/Math.pow(r,1/8),s=e+(o-i)/(r-1)*n;return[s,s+i]}q.tokenize=function(e){return e.slice()},q.join=q.removeEmpty=function(e){return e};const J={linear:function(e){return e},easeInQuad:function(e){return e*e},easeOutQuad:function(e){return e*(2-e)},easeInOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1}};function Q(e,t,n,r){const[o,i]=t;return e.map((e=>{const t=h(e.lineNumber,(e=>e&&e-1)),{enterIndex:s,exitIndex:a}=e,l="exit"===e.move?{fixed:!0,value:t.prev}:"enter"===e.move?{fixed:!0,value:t.next}:{fixed:!1,extremes:[t.prev,t.next],interval:[o,i],ease:J.easeInOutCubic},c="exit"===e.move?{fixed:!1,extremes:[0,-1],ease:J.easeInQuad,interval:D([0,o],a,r)}:"enter"===e.move?{fixed:!1,extremes:[1,0],ease:J.easeOutQuad,interval:D([i,1],s,n)}:{fixed:!0,value:0};return Object.assign(Object.assign({},e),{tweenX:c,tweenY:l})}))}function ee(e){const t=d(e,[],(e=>e.flatMap((e=>v(e.focus).map((t=>Object.assign(Object.assign({},e),{focus:t}))))))),n=d(t,[],(e=>e.filter(te))),r=d(t,[],(e=>e.filter((e=>!te(e)))));return{inlineAnnotations:h(n,(e=>function(e){const t={};return e.forEach((e=>{const n=b(e.focus),r=+Object.keys(n)[0],o=n[r],i=t[r]||[];i.push({columnNumbers:o[0],data:e.data,Component:e.Component}),t[r]=i})),t}(e))),multilineAnnotations:h(r,(e=>function(e){return e.map((e=>({lineNumbers:y(e.focus),data:e.data,Component:e.Component})))}(e)))}}function te(e){return!!e.focus.match(/(\d+)\[(.+)\]/)}function ne(e,t,n){const r=[...t];r.sort(((e,t)=>e.lineNumbers.start-t.lineNumbers.start));let o=0;const i=[];for(;ot.lineNumbers.start)throw"Code Hike can't handle two annotations for the same line";if(t&&n(s)===t.lineNumbers.start){const a={lines:[],annotation:t};for(;s&&(!n(s)||n(s)<=t.lineNumbers.end);)a.lines.push(s),s=e[++o];i.push(a),r.shift()}else if(t){const r={lines:[]};for(;s&&(!n(s)||n(s)0||r.length>0;){const e=o[0],t=i[0],c=e&&e.columnNumbers.start===a,u=t&&t.columnNumbers.start===l;if(al)if(u){const e=t.columnNumbers.end+1;s.push({next:{annotation:t,groups:oe(r,l,e)}}),l=e,i.shift()}else{const e=Math.min(a,(null==t?void 0:t.columnNumbers.start)||a);s.push({next:{groups:oe(r,l,e)}}),l=e}else if(a==l)if(c&&u&&e.columnNumbers.end===t.columnNumbers.end){const c=t.columnNumbers.end+1;s.push({prev:{annotation:e,groups:oe(n,a,c)},next:{annotation:t,groups:oe(r,l,c)}}),a=c,l=c,o.shift(),i.shift()}else if(c){const t=e.columnNumbers.end+1;s.push({prev:{annotation:e,groups:oe(n,a,t)}}),a=t,o.shift()}else if(u){const e=t.columnNumbers.end+1;s.push({next:{annotation:t,groups:oe(r,l,e)}}),l=e,i.shift()}else if(e||t){const o=Math.min((null==e?void 0:e.columnNumbers.start)||Number.MAX_VALUE,(null==t?void 0:t.columnNumbers.start)||Number.MAX_VALUE);s.push({prev:{groups:oe(n,a,o)},next:{groups:oe(r,l,o)}}),a=o,l=o}else s.push({prev:{groups:n},next:{groups:r}}),n=[],r=[]}return s}function oe(e,t,n){const r=[];let o=t;for(;o0;){const t=e.shift();r.push(t);o+=t.tokens.reduce(((e,t)=>e+t.content.length),0)}return r}function ie(e){const{highlightedLines:t,focus:n}=e;return r.useMemo((()=>function({focus:e,annotations:t,highlightedLines:n,lang:r}){const o=function(e){return h(e,(e=>e.map((e=>e.tokens.map((e=>e.content)).join(""))).join("\n").trimEnd().concat("\n")))}(n),s=function(e,t){return X(e,t)}(o,n),{inlineAnnotations:a,multilineAnnotations:l}=function(e){return ee(e)}(t),c=function(e,t,n){return U(e,t,n)}(s,f(e,null),a),u=function(e,t,n){var{lines:r}=e,o=i(e,["lines"]);const s=function(e,t){return e.map((e=>{var{groups:n}=e,r=i(e,["groups"]);const{lineNumber:o}=r,s={prev:o.prev&&t.prev[o.prev]||[],next:o.next&&t.next[o.next]||[]};return Object.assign(Object.assign({},r),{annotatedGroups:re(n,s)})}))}(r,t),a=function(e,t){return{prev:ne(e,t.prev,(e=>e.lineNumber.prev)),next:ne(e,t.next,(e=>e.lineNumber.next))}}(s,n);return Object.assign(Object.assign({},o),{lineGroups:a,lineCount:{prev:r.filter((e=>null!=e.lineNumber.prev)).length,next:r.filter((e=>null!=e.lineNumber.next)).length}})}(c,a,l);return function(e,t,n){const r=(i=e.enterCount,s=e.exitCount,i<=0&&s<=0?[0,1]:i<=0&&s>=1?[.33,1]:i>=1&&s<=0?[0,.67]:[.25,.75]),o=h(e.lineGroups,(t=>t.map((t=>Object.assign(Object.assign({},t),{lines:Q(t.lines,r,e.enterCount,e.exitCount)})))));var i,s;return Object.assign(Object.assign({},e),{groups:o,verticalInterval:r,code:t,lang:n})}(u,o,r)}(e)),[t.prev,t.next,n.prev,n.next])}function se({dimensions:e,codeStep:t,children:n,minZoom:o=0,maxZoom:s=1.2,center:a=!1,progress:l}){const{prev:c,next:u}=function(e){var{codeStep:t}=e,n=i(e,["codeStep"]);const{lineHeight:r,lineWidth:o}=n.dimensions,s={prev:{extremes:[t.firstFocusedLineNumber.prev-1,t.lastFocusedLineNumber.prev-1],originalContentHeight:t.lineCount.prev*r,lineWidth:o[0]},next:{extremes:[t.firstFocusedLineNumber.next-1,t.lastFocusedLineNumber.next-1],originalContentHeight:t.lineCount.next*r,lineWidth:o[1]}};return h(s,(({extremes:e,originalContentHeight:t,lineWidth:r})=>function({dimensions:e,lineWidth:t,minZoom:n,maxZoom:r,extremes:o,originalContentHeight:i,horizontalCenter:s}){const{lineHeight:a}=e,l=null==e?void 0:e.contentHeight,c=null==e?void 0:e.contentWidth,u=(o[1]-o[0]+3)*a,h=(null==e?void 0:e.lineNumberWidth)||16,f=16,d=Math.max(Math.min((c-h-f)/t,l/u,r),n),m=i*d,p=(o[0]-1)*a*d,v=(o[1]+2)*a*d,g=(v+p)/2,b=v-p,y=l>m?(l-m)/2:(w=l/2-g,E=Math.max(l-m,-p),j=0,w<=E?E:w>=j?j:w),x=s?Math.max(c/2-t*d/2,0):0;var w,E,j;return{zoom:d,dx:x,dy:y,focusHeight:b,focusWidth:t*d}}(Object.assign({extremes:e,originalContentHeight:t,lineWidth:r},n))))}({codeStep:t,dimensions:e,minZoom:o,maxZoom:s,horizontalCenter:a}),f=ce(c.zoom,u.zoom,l),d=ce(c.dx,u.dx,l),m=ce(c.dy,u.dy,l,t.verticalInterval),p=ce(c.focusHeight,u.focusHeight,l),v=ce(c.focusWidth,u.focusWidth,l),g=((null==e?void 0:e.lineNumberWidth)||0)*f||16,b=Math.max(v+g,e.contentWidth),y=g/f;return r.createElement(ae,{width:e.containerWidth,height:e.containerHeight,lang:t.lang},r.createElement(le,{dx:d,dy:m,scale:f,height:Math.max(p,e.contentHeight),width:b},n(v,y)))}function ae({width:e,height:t,children:n,lang:o}){return r.createElement("code",{style:{width:e,height:t,position:"relative",overflow:"auto"},className:"ch-code-scroll-parent",children:n,"data-ch-lang":o})}function le({dx:e,dy:t,scale:n,height:o,width:i,children:s}){return r.createElement("div",{style:{position:"absolute",top:0,left:0,transformOrigin:"top left",width:i,height:o,overflow:"hidden"},className:"ch-code-scroll-content"},r.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translateX(${e}px) translateY(${t}px) scale(${n})`,transformOrigin:"left top",width:i/n,height:(o-2*t)/n},children:s}))}function ce(e,t,n,r=[0,1]){return V({fixed:!1,interval:r,extremes:[e,t],ease:J.easeInOutCubic},n)}function ue(e){return r.createElement(se,Object.assign({},e),((t,n)=>r.createElement(he,{codeStep:e.codeStep,focusWidth:t,lineHeight:e.dimensions.lineHeight,progress:e.progress,startX:n,lineNumberWidth:e.dimensions.lineNumberWidth})))}function he({codeStep:e,progress:t,focusWidth:n,lineHeight:o,startX:i,lineNumberWidth:s}){const a=t<.5?e.groups.prev:e.groups.next;return r.createElement(r.Fragment,null,a.map(((e,a)=>{if(!e.annotation)return r.createElement(fe,{lines:e.lines,t:t,focusWidth:n,lineHeight:o,startX:i,key:a,lineNumberWidth:s});const l=V(e.lines[0].tweenY,t),c=e.annotation.lineNumbers.end-e.annotation.lineNumbers.start+1,u=e.annotation.Component;return r.createElement(u,{style:{position:"absolute",height:c*o,width:"100%",transform:`translateY(${l*o}px)`},key:a,data:e.annotation.data,isInline:!1,lines:e.lines},r.createElement(fe,{lines:e.lines,t:t,focusWidth:n,lineHeight:o,startY:l,startX:i,lineNumberWidth:s}))})))}function fe({lines:e,focusWidth:t,lineHeight:n,t:o,startX:i,startY:s=0,lineNumberWidth:a}){return r.createElement(r.Fragment,null,e.map(((e,l)=>{const{tweenX:c,tweenY:u,focused:h}=e,f=V(c,o),d=V(u,o),m=ge(h,o,f);return r.createElement(r.Fragment,{key:l},a?r.createElement("span",{className:"ch-code-line-number",style:{position:"absolute",top:0,left:0,transform:`translate(${f*t}px, ${(d-s)*n}px)`,width:a,opacity:m}},o<.5?e.lineNumber.prev:e.lineNumber.next):void 0,r.createElement(pe,{dx:i+f*t,dy:(d-s)*n,width:t,opacity:m},r.createElement(de,{line:e,progress:o,dx:f})))})))}function de({line:e,progress:t,dx:n}){return r.createElement("div",{style:{display:"inline-block",width:"100%"}},e.annotatedGroups.map(((e,o)=>r.createElement(me,{annotatedGroup:e,progress:t,dx:n,key:o}))),r.createElement("br",null))}function me({annotatedGroup:e,progress:t,dx:n}){var o,i;const s=t<.5?e.prev:e.next,a=(null==s?void 0:s.groups)||[],l=null===(o=null==s?void 0:s.annotation)||void 0===o?void 0:o.Component,c=a.map(((e,o)=>{const i=ge(e.focused,t,n);return r.createElement("span",{style:{opacity:i},key:o+1},e.element)}));return l?r.createElement(l,{children:c,data:null===(i=null==s?void 0:s.annotation)||void 0===i?void 0:i.data,isInline:!0}):r.createElement(r.Fragment,null,c)}function pe({children:e,dx:t,dy:n,opacity:o,width:i}){return r.createElement("div",{style:{position:"absolute",top:0,left:0,transform:`translate(${t}px, ${n}px)`,width:i,display:o<=0?"none":void 0}},e)}const ve=.33;function ge(e,t,n){return V({fixed:!1,extremes:[e.prev?.99:ve,e.next?.99:ve],interval:[0,1]},t)-1*Math.abs(n)}function be({content:e,style:t,className:n}){const[o,i]=r.useState(!1);return r.createElement("button",{type:"button",title:"Copy code",className:n,style:t,onClick:()=>{!function(e){if(!navigator.clipboard)return void function(e){var t=document.createElement("textarea");t.value=e,t.style.top="0",t.style.left="0",t.style.position="fixed",document.body.appendChild(t),t.focus(),t.select();try{document.execCommand("copy")}catch(n){}document.body.removeChild(t)}(e);navigator.clipboard.writeText(e)}(e),i(!0),setTimeout((()=>{i(!1)}),1200)}},r.createElement("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},o?r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 13l4 4L19 7"}):r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"1.6px",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})))}const ye=10;function xe(e){var{tween:t,progress:n,config:o}=e,s=i(e,["tween","progress","config"]);const a=function({tween:e}){return ie({highlightedLines:h(e,(e=>e.code.lines)),focus:h(e,(e=>e.focus)),annotations:h(e,(e=>e.annotations)),lang:m(e,(e=>{var t;return null===(t=null==e?void 0:e.code)||void 0===t?void 0:t.lang}))})}({tween:t}),{element:l,dimensions:c}=_(a.code,h(t,(e=>e.focus)),o.minColumns||ye,o.lineNumbers||!1,o.rows,[o.parentHeight]);return!c||o.debug?r.createElement(we,{element:l,htmlProps:s,debug:o.debug}):r.createElement(Ee,{dimensions:c,stepInfo:a,config:o,progress:n,htmlProps:s})}function we({element:e,htmlProps:t,debug:n}){return r.createElement(je,{htmlProps:t,measured:!1},e)}function Ee({config:{minZoom:e=1,maxZoom:t=1,horizontalCenter:n=!1},dimensions:o,stepInfo:i,progress:s,htmlProps:a,config:l}){var c;return r.createElement(je,{htmlProps:a,measured:!0},r.createElement(ue,{codeStep:i,progress:s,dimensions:o,minZoom:e,maxZoom:t,center:n}),l.showCopyButton?r.createElement(be,{className:"ch-code-button",content:null===(c=null==i?void 0:i.code)||void 0===c?void 0:c.prev}):void 0)}function je({htmlProps:e,children:t,measured:n}){return r.createElement("div",Object.assign({},e,{className:`ch-code-wrapper ${(null==e?void 0:e.className)||""}`,"data-ch-measured":n,children:t}))}function Ne(){return"undefined"!=typeof window?performance.now():0}function Oe(e,t){var n=t.stiffness,r=t.damping,o=t.mass,i=t.decimals,s=t.teleport;return{X:e,k:null!=n?n:170,c:null!=r?r:26,m:null!=o?o:1,teleport:null!=s&&s,decimals:null!=i?i:2}}function Ce(e,t){var n=t.from,r=t.initialSpeed;return{x0:null!=n?n:e,v0:null!=r?r:0,t0:Ne(),raf:null}}var ke=Math.sqrt,_e=Math.exp,Se=Math.sin,Fe=Math.cos;function Pe(e){var t=e.x0,n=e.v0,r=e.t0,o=e.t,i=e.k,s=e.c,a=e.m,l=e.X,c=t-l,u=(o-r)/1e3,h=s*s-4*i*a;if(h>0){var f=(-s+ke(h))/(2*a),d=(-s-ke(h))/(2*a),m=(c*f-n)/(f-d),p=(n-c*d)/(f-d);return{x:l+m*_e(d*u)+p*_e(f*u),v:m*d*_e(d*u)+p*f*_e(f*u)}}if(h<0){var v=-s/(2*a),g=ke(-h)/(2*a),b=c,y=(n-v*c)/g;return{x:l+_e(v*u)*(b*Fe(g*u)+y*Se(g*u)),v:_e(v*u)*((y*g+b*v)*Fe(g*u)-(b*g-y*v)*Se(g*u))}}var x=-s/(2*a),w=c,E=n-x*c;return{x:l+(w+E*u)*_e(x*u),v:(E+w*x+E*x*u)*_e(x*u)}}var He=[],Me=null;function Te(e){var t=He.push(e);return 1===t&&(Me=requestAnimationFrame(Ae)),[Me,t-1]}function ze(e){var t=e[0],n=e[1];t===Me&&delete He[n]}function Ae(){var e=Ne(),t=He;He=[],(0,o.unstable_batchedUpdates)((function(){return t.forEach((function(t){return t&&t(e)}))}))}var Le="undefined"!=typeof window?r.useLayoutEffect:r.useEffect;function Be(e,t){void 0===t&&(t={});var n=r.useState()[1],o=Oe(e,t),i=function(e,t){var n=r.useRef(null);return null==n.current&&(n.current={config:Oe(e,t),state:Ce(e,t)}),n.current}(e,t),s=i.state,a=i.config,l=Ne(),c=s.x0,u=s.v0,h=s.t0,f=a.k,d=a.c,m=a.m,p=a.X,v=o.teleport?{x:p,v:0}:Pe({x0:c,v0:u,t0:h,t:l,k:f,c:d,m:m,X:p}),g=v.x,b=v.v,y=function(e,t,n,r){var o=r.decimals,i=r.X,s=r.k,a=r.c,l=r.m;if(We(e,o)!==We(i,o))return!0;var c=n+.016,u=Pe({x0:e,v0:t,t0:n,t:c,k:s,c:a,m:l,X:i});return We(u.x,o)!==We(i,o)}(g,b,l,o);return Le((function(){Object.assign(a,o)}),[o.X,o.k,o.c,o.m,o.teleport]),Le((function(){s.x0=g,s.v0=b,s.t0=l}),[g,b,l]),Le((function(){y&&null==s.raf?s.raf=Te((function e(t){var r=s.x0,o=s.v0,i=s.t0,l=a.k,c=a.c,u=a.m,h=a.X,f=a.decimals;We(Pe({x0:r,v0:o,t0:i,t:t,k:l,c:c,m:u,X:h}).x,f)!==We(r,f)?(s.raf=null,n(t)):s.raf=Te(e)})):y||null==s.raf||(ze(s.raf),s.raf=null)})),Le((function(){return function(){null!=s.raf&&ze(s.raf)}}),[]),[We(g,o.decimals),y]}function We(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}const Ie={stiffness:120,damping:24,mass:.2,decimals:3};function $e(e){var{step:t,config:n}=e,o=i(e,["step","config"]);const{tween:s,t:a}=function(e,t=Ie){const[{target:n,steps:o,index:i},s]=r.useState({target:2,steps:[e,e,e],index:0});r.useEffect((()=>{o[o.length-1]!=e&&s((t=>function(e,t,n){const{steps:r,target:o,index:i}=e,s=r.slice(),a=n-i;return a<1?(s[2]=t,Object.assign(Object.assign({},e),{steps:s})):(s[0]=r[1],s[1]=r[2],s[2]=t,Object.assign(Object.assign({},e),{steps:s,target:o+1,index:i+1}))}(t,e,a)))}),[e]);const[a]=Be(n,t),l=a-i;return l<=1?{tween:{prev:o[0],next:o[1]},t:l}:{tween:{prev:o[1],next:o[2]},t:l-1}}(t,n.spring);return r.createElement(xe,Object.assign({tween:s,progress:a,config:n},o))}const Re=r.forwardRef((function(e,t){var{title:n,children:o,titleBar:s,zoom:a=1,overflow:l}=e,c=i(e,["title","children","titleBar","zoom","overflow"]);const u=s||r.createElement(qe,{title:n}),h={"--ch-frame-zoom":a,overflow:l};return r.createElement("div",Object.assign({},c,{ref:t}),r.createElement("div",{className:"ch-frame"},r.createElement("div",{className:"ch-frame-title-bar"},u),r.createElement("div",{className:"ch-frame-content"},r.createElement("div",{className:"ch-frame-zoom",style:h},o))))}));function qe({title:e}){return r.createElement(r.Fragment,null,r.createElement("div",{className:"ch-frame-left-bar"},r.createElement(Xe,null)),r.createElement("div",{className:"ch-frame-middle-bar"},e),r.createElement("div",{className:"ch-frame-right-bar"}))}function Xe(){return r.createElement("div",{className:"ch-frame-buttons"},r.createElement("div",{className:"ch-frame-button ch-frame-button-left"}),r.createElement("div",{className:"ch-frame-button-space"}),r.createElement("div",{className:"ch-frame-button ch-frame-button-middle"}),r.createElement("div",{className:"ch-frame-button-space"}),r.createElement("div",{className:"ch-frame-button ch-frame-button-right"}))}r.forwardRef((function(e,t){var{title:n,children:o,titleBar:s,overflow:a}=e,l=i(e,["title","children","titleBar","overflow"]);const c=s||r.createElement(qe,{title:n});return r.createElement("div",Object.assign({},l,{ref:t}),r.createElement("div",{className:"ch-simple-frame"},r.createElement("div",{className:"ch-frame-title-bar"},c),o))}));const Ue=r.forwardRef((function(e,t){var n,{northPanel:o,southPanel:s,terminalPanel:a,style:l,height:c,northButton:u,southButton:h,className:f,onTabClick:d}=e,m=i(e,["northPanel","southPanel","terminalPanel","style","height","northButton","southButton","className","onTabClick"]);return r.createElement("div",Object.assign({ref:t},m,{className:"ch-editor-frame",style:l}),r.createElement("div",{className:"ch-frame-title-bar"},r.createElement(Ze,{tabs:o.tabs,showFrameButtons:!0,button:u,panel:"north",onTabClick:d})),r.createElement("div",{"data-ch-panel":"north",style:o.style,children:o.children}),s&&r.createElement(r.Fragment,null,r.createElement("div",{className:"ch-frame-title-bar",style:{transform:null===(n=s.style)||void 0===n?void 0:n.transform}},r.createElement(Ze,{tabs:s.tabs,showFrameButtons:!1,button:h,topBorder:!0,panel:"south",onTabClick:d})),r.createElement("div",{"data-ch-panel":"south",children:s.children,style:s.style})))}));function Ze({tabs:e,button:t,showFrameButtons:n,topBorder:o,panel:i,onTabClick:s}){return r.createElement(r.Fragment,null,o&&r.createElement("div",{className:"ch-editor-group-border"}),n?r.createElement(Xe,null):r.createElement("div",null),e.map((({title:e,active:t,style:n})=>r.createElement("div",{key:e,title:e,"data-ch-tab":i,"data-active":t,className:"ch-editor-tab",style:n,onClick:s&&(()=>s(e))},r.createElement(Ke,{title:e})))),r.createElement("div",{style:{flex:1,minWidth:"0.8em"}}),t)}function Ke({title:e}){if(!e)return r.createElement("div",null);const t=e.lastIndexOf("/")+1,n=e.substring(t),o=e.substring(0,t);return r.createElement("div",null,r.createElement("span",{style:{opacity:.5}},o),n)}const Ge=r.createElement("span",{className:"ch-terminal-prompt"},"$");function Ye({text:e,progress:t=1,style:n}){const o=function(e,t){if(!e)return[];const n=Math.round(e.length*t),{commands:r}=function(e){const[,...t]=e.split(/^\$\s*/gm),n=t.map((e=>{const[t,...n]=e.split(/\r?\n/);return{run:t,output:n.length>0?n.join("\n"):null}})),r=n[n.length-1],o=n.length>0&&null!=r.output;return{title:o?r.run.split(/(\s+)/)[0]:"bash",isRunning:o,commands:n}}(e.slice(0,n));return r}(e,t);return r.createElement("pre",{style:n,className:"ch-terminal-content"},o.map((({run:e,output:t},n)=>r.createElement(r.Fragment,{key:n},r.createElement("div",null,Ge," ",r.createElement("span",null,e)),t&&r.createElement("div",{className:"ch-terminal-output"},t)))))}function Ve({prev:e="",prevKey:t,next:n="",nextKey:o,progress:i}){return r.createElement("div",{className:"ch-terminal"},r.createElement("div",{style:{position:"relative",transform:`translateY(-${100*i}%)`}},r.createElement(Ye,{text:e,progress:1,key:t}),r.createElement(Ye,{style:{position:"absolute"},text:n,progress:i,key:o})))}function De({steps:e,progress:t}){const n=e.map((e=>e.text)),o=t%1,i=(s=Math.floor(t),a=0,l=e.length-1,Math.min(Math.max(s,a),l));var s,a,l;const c=i+1;return r.createElement(Ve,{prev:n[i],prevKey:i,next:n[c]||"",nextKey:c,progress:o})}function Je({prev:e,next:t,t:n,backward:o}){const i=function({prev:e,next:t,t:n,backward:r}){return e||t?!e&&t?Qe*Math.min(4*n,1):e&&!t?Qe*Math.max(1-4*n,0):Qe:0}({prev:e,next:t,t:n,backward:o});return i?r.createElement("div",{className:"ch-editor-terminal",style:{height:i}},r.createElement("div",{className:"ch-editor-terminal-tab"},r.createElement("span",null,"Terminal")),r.createElement("div",{className:"ch-editor-terminal-content"},r.createElement(De,{steps:[{text:e||""},{text:t||""}],progress:n}),")")):null}const Qe=150;function et(e){return Array.isArray(e.rows)?Object.assign(Object.assign({},e),{rows:e.rows[0]}):e}function tt(e){return Array.isArray(e.rows)?Object.assign(Object.assign({},e),{rows:e.rows[1]}):e}function nt(e,t,n,o,i,s){const{prevSnapshot:a,nextSnapshot:l}=function(e,t,n){const[{prevSnapshot:o,nextSnapshot:i},s]=r.useState({prevSnapshot:null,nextSnapshot:null});return ut((()=>{(o||i)&&s({prevSnapshot:null,nextSnapshot:null})}),[t,n]),ut((()=>{if(o){if(!i){const t=e.current;s((e=>Object.assign(Object.assign({},e),{nextSnapshot:Object.assign(Object.assign({},ht(t,n)),ft(t,n))})))}}else{const n=e.current;s((e=>Object.assign(Object.assign({},e),{prevSnapshot:Object.assign(Object.assign({},ht(n,t)),ft(n,t))})))}})),{prevSnapshot:o,nextSnapshot:i}}(e,t,n);if(!a)return function(e,t,n){const o=e.northPanel,i=e.southPanel,{prevNorthFile:s,prevSouthFile:a,nextNorthFile:l,nextSouthFile:c}=st(e,t,!0);return{northContent:it(s),northPanel:{tabs:o.tabs.map((e=>({title:e,active:e===o.active,style:{}}))),style:{flexGrow:1,overflow:"hidden"},children:r.createElement(ot,{codeConfig:et(n),prevFile:s,nextFile:s,t:0,parentHeight:"0"})},southContent:it(a),southPanel:i&&{tabs:i.tabs.map((e=>({title:e,active:e===i.active,style:{}}))),style:{flexGrow:1,overflow:"hidden"},children:r.createElement(ot,{codeConfig:tt(n),prevFile:a,nextFile:a,t:0,parentHeight:"0"})}}}(t,n,s);if(!l)return rt(t,n,s);if(1===o)return rt(t,n,s);const c=t.southPanel||n.southPanel,{prevNorthFile:u,prevSouthFile:h,nextNorthFile:f,nextSouthFile:d}=st(t,n,0==o||i),{northStyle:m,southStyle:p}=function(e,t,n){if(null===e.southHeight&&null===t.southHeight)return{northStyle:{minHeight:e.northHeight}};if(null!==e.southHeight&&null===t.southHeight&&t.northKey!==e.southKey)return{northStyle:{minHeight:at(e.northHeight,t.northHeight,n)},southStyle:{minHeight:e.southHeight}};if(null!==e.southHeight&&null===t.southHeight&&e.southKey===t.northKey)return{northStyle:{minHeight:e.northHeight},southStyle:{position:"relative",minHeight:at(e.southHeight,t.northHeight,n),transform:`translateY(${at(0,-(e.northHeight+e.titleBarHeight),n)}px)`}};if(null===e.southHeight&&null!==t.southHeight&&e.northKey!==t.southKey)return{northStyle:{minHeight:at(e.northHeight,t.northHeight,n)},southStyle:{position:"relative",minHeight:t.southHeight}};if(null===e.southHeight&&null!==t.southHeight&&e.northKey===t.southKey)return{northStyle:{minHeight:t.northHeight},southStyle:{position:"relative",minHeight:at(e.northHeight,t.southHeight,n),transform:`translateY(${at(-(t.northHeight+t.titleBarHeight),0,n)}px)`}};return{northStyle:{minHeight:at(e.northHeight,t.northHeight,n)},southStyle:{minHeight:at(e.southHeight,t.southHeight,n)}}}(a,l,o),{northTabs:v,southTabs:g}=function(e,t,n,r,o){if(!e.southTabs&&ct(r,e.northTabs))return{northTabs:lt(t.northTabs,t.southTabs,e.southTabs,e.northTabs,n,o),southTabs:lt(t.southTabs,t.northTabs,e.northTabs,e.southTabs,r,o)};if(!t.southTabs&&ct(r,t.northTabs))return{northTabs:lt(t.southTabs,t.northTabs,e.northTabs,e.southTabs,n,o),southTabs:lt(t.northTabs,t.southTabs,e.southTabs,e.northTabs,r,o)};return{northTabs:lt(t.northTabs,t.southTabs,e.northTabs,e.southTabs,n,o),southTabs:lt(t.southTabs,t.northTabs,e.southTabs,e.northTabs,r,o)}}(a,l,u.name,null==h?void 0:h.name,o);return{northContent:it(f),northPanel:{tabs:v,style:m,children:r.createElement(ot,{codeConfig:et(s),prevFile:u,nextFile:f,t:o,parentHeight:m.height||m.minHeight})},southContent:it(d),southPanel:c&&{tabs:g,style:p,children:r.createElement(ot,{codeConfig:tt(s),prevFile:h,nextFile:d,t:o,parentHeight:(null==p?void 0:p.height)||(null==p?void 0:p.minHeight)})}}}function rt(e,t,n){var o;const i=t.northPanel,s=t.southPanel;let{prevNorthFile:a,prevSouthFile:l,nextNorthFile:c,nextSouthFile:u}=st(e,t,!1);return!s&&i.active===(null===(o=null==e?void 0:e.southPanel)||void 0===o?void 0:o.active)&&(c=u),{northContent:it(c),northPanel:{tabs:i.tabs.map((e=>({title:e,active:e===i.active,style:{}}))),style:{flexGrow:1,overflow:"hidden"},children:r.createElement(ot,{codeConfig:et(n),prevFile:c,nextFile:c,t:1,parentHeight:"1"})},southContent:it(u),southPanel:s&&{tabs:s.tabs.map((e=>({title:e,active:e===s.active,style:{}}))),style:{flexGrow:1,overflow:"hidden"},children:r.createElement(ot,{codeConfig:tt(n),prevFile:u,nextFile:u,t:1,parentHeight:"1"})}}}function ot({prevFile:e,nextFile:t,t:n,codeConfig:o,parentHeight:i}){var s;const a=Object.assign(Object.assign({},null==o?void 0:o.htmlProps),{style:Object.assign({height:"100%"},null===(s=null==o?void 0:o.htmlProps)||void 0===s?void 0:s.style)});return r.createElement(xe,Object.assign({progress:n,tween:{prev:e,next:t},config:Object.assign(Object.assign({},o),{parentHeight:i})},a))}function it(e){return e?p(e.code):""}function st(e,t,n){var r,o;const i=e.northPanel.active,s=t.northPanel.active,a=null===(r=e.southPanel)||void 0===r?void 0:r.active,l=null===(o=t.southPanel)||void 0===o?void 0:o.active,c=e.files.find((e=>e.name===i)),u=t.files.find((e=>e.name===s)),h=a?e.files.find((e=>e.name===a)):null,f=l?t.files.find((e=>e.name===l)):null;if(!a&&i===l)return{prevNorthFile:u,nextNorthFile:u,prevSouthFile:c,nextSouthFile:f};if(!l&&s===a)return{prevNorthFile:c,nextNorthFile:c,prevSouthFile:h,nextSouthFile:u};return{prevNorthFile:i===s||n?c:u,nextNorthFile:i===s?u:n?c:u,prevSouthFile:a===l?h:n?h||f:f||h,nextSouthFile:a===l?f:n?h||f:f||h}}function at(e,t,n){return e+(t-e)*n}function lt(e,t,n,r,o,i){const s=e?Object.keys(e).filter((e=>ct(e,n)||!n)).map((t=>{const r=n&&n[t],s=e[t],a=r?r.left+(s.left-r.left)*i:s.left,l=r?r.width+(s.width-r.width)*i:s.width;return{active:t===o,title:t,style:{position:"absolute",transform:`translateX(${a}px)`,width:l}}})):[],a=e?Object.keys(e).filter((e=>n&&!ct(e,n))).map((t=>{const n=e[t];return{active:t===o,title:t,style:{position:"absolute",transform:`translateX(${n.left}px)`,opacity:i,width:n.width}}})):[];!e||Object.keys(e).filter((e=>ct(e,r))).map((t=>{const n=r[t],i=e[t].left-n.left;return{active:t===o,title:t,style:{position:"absolute",transform:`translateX(${i}px)`}}}));return[...a,...s,...n?Object.keys(n).filter((t=>!ct(t,e))).map((e=>{const t=n[e];return{active:e===o,title:e,style:{position:"absolute",opacity:1-i,transform:`translateX(${t.left}px)`,width:t.width}}})):[]]}function ct(e,t){return t&&e&&e in t}const ut="undefined"!=typeof window?r.useLayoutEffect:r.useEffect;function ht(e,t){var n;const r=e.querySelector("[data-ch-panel='north']"),o=e.querySelector("[data-ch-panel='south']");return{titleBarHeight:e.querySelector(".ch-frame-title-bar").getBoundingClientRect().height,northHeight:r.getBoundingClientRect().height,northKey:t.northPanel.active,southHeight:(null==o?void 0:o.getBoundingClientRect().height)||null,southKey:null===(n=t.southPanel)||void 0===n?void 0:n.active}}function ft(e,t){var n;const r=Array.from(e.querySelectorAll("[data-ch-tab='north']")),o=Array.from(e.querySelectorAll("[data-ch-tab='south']"));return{northTabs:dt(r,t.northPanel.active),southTabs:dt(o,null===(n=t.southPanel)||void 0===n?void 0:n.active)}}function dt(e,t){if(!e[0])return null;const n=e[0].parentElement.getBoundingClientRect().left,r={};return e.forEach((e=>{const o=e.getAttribute("title"),i=e.getBoundingClientRect();r[o]={left:i.left-n,width:i.width,active:o===t}})),r}function mt({files:e,startingFileName:t}){const[n,o]=r.useState((()=>e.find((e=>e.name===t))));return r.createElement("div",{className:"ch-code-browser"},r.createElement(pt,{files:e,activeFile:n,setActiveFile:o}),r.createElement(bt,{file:n}))}function pt({files:e,activeFile:t,setActiveFile:n}){const o=r.useMemo((()=>function(e){let t=[];for(const n of e){const e=n.name.split("/");let r=t;for(let t=0;te.name===o));if(-1===s){const e={name:o,children:[],codeFile:void 0};i&&(e.codeFile=n),r.push(e),r=e.children}else r=r[s].children}}return t=yt(t),t}(e)),[e]);return r.createElement("div",{className:"ch-code-browser-sidebar"},r.createElement(vt,{tree:o,activeFile:t,setActiveFile:n}))}function vt({tree:e,activeFile:t,setActiveFile:n,level:o=0}){return r.createElement(r.Fragment,null,e.map((e=>r.createElement(gt,{key:e.name,node:e,activeFile:t,setActiveFile:n,level:o}))))}function gt({node:e,activeFile:t,setActiveFile:n,level:o}){const i=e.children&&e.children.length>0,s=e.codeFile===t;return i?r.createElement("div",null,r.createElement("div",{className:"ch-code-browser-sidebar-folder"},r.createElement("div",{style:{paddingLeft:1.5*o+"ch"}},e.name)),r.createElement(vt,{tree:e.children,activeFile:t,setActiveFile:n,level:o+1})):r.createElement("div",null,r.createElement("div",{className:"ch-code-browser-sidebar-file","data-selected":s,onClick:()=>n(e.codeFile)},r.createElement("div",{style:{paddingLeft:1.5*o+"ch"}},e.name)))}function bt({file:e}){return r.createElement("div",{className:"ch-code-browser-content"},r.createElement(be,{className:"ch-code-browser-button",content:p(e.code)}),e.code.lines.map(((e,t)=>r.createElement("div",{key:t},e.tokens.map(((e,t)=>r.createElement("span",Object.assign({key:t},e.props),e.content))),r.createElement("br",null)))))}function yt(e){for(const t of e)t.children=yt(t.children);return e.sort(((e,t)=>{const n=e.children&&e.children.length>0,r=t.children&&t.children.length>0;return n&&r||!n&&!r?e.name.localeCompare(t.name):n?-1:1}))}function xt({style:e,step:t,className:n}){const[o,i]=r.useState(!1),[s,a]=r.useState(!0),l=r.useRef(null),c=t.files;return r.useEffect((()=>{l.current&&!l.current.showModal&&a(!1)}),[]),s?r.createElement(r.Fragment,null,r.createElement(wt,{className:n,style:e,onClick:()=>{l.current.showModal(),document.body.classList.add("ch-no-scroll"),i(!0)}}),r.createElement("dialog",{ref:l,className:"ch-expand-dialog",onClose:()=>{i(!1)},onClick:e=>{e.currentTarget===e.target&&(l.current.close(),document.body.classList.remove("ch-no-scroll"))}},r.createElement(Et,{onClick:()=>{l.current.close(),document.body.classList.remove("ch-no-scroll")}}),o?r.createElement("div",{className:"ch-expand-dialog-content"},r.createElement(mt,{files:c,startingFileName:t.northPanel.active})):void 0)):null}function wt({onClick:e,style:t,className:n}){return r.createElement("button",{type:"button",title:"Expand",style:t,onClick:e,className:n},r.createElement("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4"})))}function Et({onClick:e}){return r.createElement("button",{onClick:e,className:"ch-expand-close",type:"button",title:"Close"},r.createElement("svg",{fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},r.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))}const jt={files:[{code:{lines:[],lang:"js"},focus:"",name:""}],northPanel:{active:"",tabs:[""],heightRatio:1}};function Nt(e){var{prev:t=jt,next:n,t:o,backward:s,codeConfig:a,frameProps:l={}}=e,c=i(e,["prev","next","t","backward","codeConfig","frameProps"]);const u=r.createRef(),{showCopyButton:h,showExpandButton:f}=a,d=i(a,["showCopyButton","showExpandButton"]),{northPanel:m,southPanel:p,northContent:v,southContent:g}=nt(u,t,n||t,o,s,d),[b,y]=r.useState(void 0);C((()=>{var e;const t=null===(e=u.current)||void 0===e?void 0:e.getBoundingClientRect().height;y(t)}),[]);const x=Object.assign(Object.assign(Object.assign({},l),c),{style:Object.assign(Object.assign({},null==l?void 0:l.style),null==c?void 0:c.style)});b&&(x.style.height=b,x.style.maxHeight=b);const w=r.createElement(r.Fragment,null,h?r.createElement(be,{className:"ch-editor-button",content:v}):void 0,f?r.createElement(xt,{className:"ch-editor-button",step:n||t}):void 0),E=h?r.createElement(be,{className:"ch-editor-button",content:g}):void 0,j=r.createElement(Je,{prev:t.terminal,next:(n||t).terminal,t:o,backward:s});return r.createElement(Ue,Object.assign({ref:u},x,{northPanel:m,southPanel:p,terminalPanel:j,northButton:w,southButton:E}))}const Ot={stiffness:120,damping:24,mass:.2,decimals:3};function Ct(e){var{northPanel:t,southPanel:n,files:o,terminal:s,springConfig:a}=e,l=i(e,["northPanel","southPanel","files","terminal","springConfig"]);const c=r.useMemo((()=>({northPanel:t,southPanel:n,files:o,terminal:s})),[t,n,o,s]),{prev:u,next:h,t:f}=function(e,t=Ot){const[{target:n,steps:o,index:i},s]=r.useState({target:2,steps:[e,e,e],index:0});r.useEffect((()=>{o[o.length-1]!=e&&s((t=>function(e,t,n){const{steps:r,target:o,index:i}=e,s=r.slice(),a=n-i;return a<1?(s[2]=t,Object.assign(Object.assign({},e),{steps:s})):(s[0]=r[1],s[1]=r[2],s[2]=t,Object.assign(Object.assign({},e),{steps:s,target:o+1,index:i+1}))}(t,e,a)))}),[e]);const[a]=Be(n,t),l=a-i;return l<=1?{prev:o[0],next:o[1],t:l}:{prev:o[1],next:o[2],t:l-1}}(c,a);return r.createElement(Nt,Object.assign({t:f,backward:!1,prev:u,next:h},l))}function kt(e){const[t,n]=r.useState(e);return r.createElement(_t,Object.assign({},t,{onTabClick:function(e){const r=St(t,e,null);n(Object.assign(Object.assign({},t),r))}}))}function _t(e){var t,n,{onTabClick:o}=e,s=i(e,["onTabClick"]);const a=function(e){var t,n,r,o,s,a,l,c,u;const{lineNumbers:h,showCopyButton:f,showExpandButton:d,minZoom:m,maxZoom:p}=e,v=i(e,["lineNumbers","showCopyButton","showExpandButton","minZoom","maxZoom"]),g=Object.assign(Object.assign({},e.codeConfig),{maxZoom:null==p?null===(t=e.codeConfig)||void 0===t?void 0:t.maxZoom:p,minZoom:null==m?null===(n=e.codeConfig)||void 0===n?void 0:n.minZoom:m,horizontalCenter:null!==(o=null===(r=e.codeConfig)||void 0===r?void 0:r.horizontalCenter)&&void 0!==o?o:e.horizontalCenter,lineNumbers:null==h?null===(s=e.codeConfig)||void 0===s?void 0:s.lineNumbers:h,showCopyButton:null==f?null===(a=e.codeConfig)||void 0===a?void 0:a.showCopyButton:f,showExpandButton:null==d?null===(l=e.codeConfig)||void 0===l?void 0:l.showExpandButton:d,rows:e.rows,debug:null!==(c=e.debug)&&void 0!==c?c:null===(u=e.codeConfig)||void 0===u?void 0:u.debug});return Object.assign(Object.assign({},v),{codeConfig:g})}(s),{className:l,style:c,codeConfig:u}=a,h=i(a,["className","style","codeConfig"]);if(s.southPanel||1!==s.files.length||s.files[0].name){const e=Object.assign(Object.assign({},null==h?void 0:h.frameProps),{onTabClick:o});return r.createElement("div",{className:`ch-codegroup not-prose ${l||""}`,"data-ch-theme":null===(n=s.codeConfig)||void 0===n?void 0:n.themeName,style:c},r.createElement(Ct,Object.assign({},h,{frameProps:e,codeConfig:u})))}return r.createElement("div",{className:`ch-codeblock not-prose ${l||""}`,"data-ch-theme":null===(t=s.codeConfig)||void 0===t?void 0:t.themeName,style:c},r.createElement($e,{className:"ch-code",config:u,step:h.files[0]}))}function St(e,t,n){const r=t||e.northPanel.active,o=e.files.map((e=>e.name===r?Object.assign(Object.assign({},e),{focus:null===n?e.focus:n}):e));let i=Object.assign({},e.northPanel),s=e.southPanel&&Object.assign({},e.southPanel);return e.northPanel.tabs.includes(r)?i.active=r:s&&(s.active=r),{files:o,northPanel:i,southPanel:s}}r.createContext({props:null,setFocus:()=>{}});r.createContext({activatedId:void 0,activate:()=>{},reset:()=>{}});function Ft(){return r.createElement("svg",{fill:"currentColor",preserveAspectRatio:"xMidYMid meet",height:"1em",viewBox:"13 10 14 23",className:"ch-browser-button ch-browser-back-button"},r.createElement("g",null,r.createElement("path",{d:"m26.5 12.1q0 0.3-0.2 0.6l-8.8 8.7 8.8 8.8q0.2 0.2 0.2 0.5t-0.2 0.5l-1.1 1.1q-0.3 0.3-0.6 0.3t-0.5-0.3l-10.4-10.4q-0.2-0.2-0.2-0.5t0.2-0.5l10.4-10.4q0.3-0.2 0.5-0.2t0.6 0.2l1.1 1.1q0.2 0.2 0.2 0.5z"})))}function Pt(){return r.createElement("svg",{fill:"currentColor",preserveAspectRatio:"xMidYMid meet",height:"1em",viewBox:"13 10 14 23",className:"ch-browser-button ch-browser-forward-button"},r.createElement("g",null,r.createElement("path",{d:"m26.3 21.4q0 0.3-0.2 0.5l-10.4 10.4q-0.3 0.3-0.6 0.3t-0.5-0.3l-1.1-1.1q-0.2-0.2-0.2-0.5t0.2-0.5l8.8-8.8-8.8-8.7q-0.2-0.3-0.2-0.6t0.2-0.5l1.1-1.1q0.3-0.2 0.5-0.2t0.6 0.2l10.4 10.4q0.2 0.2 0.2 0.5z"})))}function Ht({href:e}){return r.createElement("a",{className:"ch-browser-button ch-browser-open-button",title:"Open in new tab",href:e,target:"_blank",rel:"noopener noreferrer"},r.createElement("svg",{stroke:"currentColor",fill:"currentColor",strokeWidth:"0",viewBox:"3 3 18 18",height:"1em",width:"1em",className:"ch-browser-open-icon",xmlns:"http://www.w3.org/2000/svg"},r.createElement("path",{d:"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"})))}function Mt({url:e,linkUrl:t}){return r.createElement(r.Fragment,null,r.createElement(Xe,null),r.createElement(Ft,null),r.createElement(Pt,null),r.createElement("input",{value:e||"",readOnly:!0}),r.createElement(Ht,{href:t}))}function Tt(e){return r.useMemo((()=>e?e.map((e=>{const{displayUrl:t,loadUrl:n}=function(e,t,n){const r="undefined"!=typeof window?window.origin:"",o=e&&!0===n?r+e:e;return{displayUrl:o,loadUrl:t||o}}(e.url,e.loadUrl,e.prependOrigin);return{zoom:e.zoom||1,displayUrl:t,loadUrl:n,children:e.children}})):[{zoom:1}]),[e])}r.forwardRef((function(e,t){var{progress:n=0,backward:o=!1,steps:s,transition:a="none"}=e,l=i(e,["progress","backward","steps","transition"]);const c=Tt(s),u=Math.round(n),{zoom:h,displayUrl:f,loadUrl:d,children:m}=c[u];return r.createElement(Re,Object.assign({},l,{zoom:h,className:`ch-mini-browser ${l.className||""}`,style:Object.assign(Object.assign({},zt({progress:n,transition:a})),l.style),titleBar:r.createElement(Mt,{url:f,linkUrl:d})}),m||r.createElement("iframe",{ref:t,src:d}))}));function zt({progress:e,transition:t}){if("slide"===t){const t=50,n=e-Math.floor(e),r=n<=.5?-t*n:t-t*n,o=2*Math.abs(n-.5);return{transform:`translateX(${r}px)`,opacity:o*o}}return{}}var At="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},Lt={};Object.defineProperty(Lt,"__esModule",{value:!0}),Lt.getMainFile=function(e){return"vue-cli"===e?"src/main.js":"angular-cli"===e?"src/main.ts":"create-react-app-typescript"===e?"src/index.tsx":"parcel"===e?"index.html":"gatsby"===e?"src/pages/index.js":"nuxt"===e||"next"===e||"apollo"===e||"reason"===e||"sapper"===e?"package.json":"nest"===e?"src/main.ts":"static"===e?"index.html":"src/index.js"};var Bt="sandbox.config.json";Lt.getTemplate=function(e,t){var n=t[Bt]||t["/"+Bt];if(n)try{var r=JSON.parse(n.content);if(r.template)return r.template}catch(d){}var o=e.dependencies,i=void 0===o?{}:o,s=e.devDependencies,a=void 0===s?{}:s,l=Object.keys(i).concat(Object.keys(a)),c=["nuxt","nuxt-edge"];if(l.some((function(e){return c.indexOf(e)>-1})))return"nuxt";if(l.indexOf("next")>-1)return"next";var u=["apollo-server","apollo-server-express","apollo-server-hapi","apollo-server-koa","apollo-server-lambda","apollo-server-micro"];if(l.some((function(e){return u.indexOf(e)>-1})))return"apollo";if(l.indexOf("ember-cli")>-1)return"ember";if(l.indexOf("sapper")>-1)return"sapper";var h=Object.keys(t);if(h.some((function(e){return e.endsWith(".vue")})))return"vue-cli";if(h.some((function(e){return e.endsWith(".re")})))return"reason";if(l.indexOf("gatsby")>-1)return"gatsby";if(l.indexOf("parcel-bundler")>-1)return"parcel";if(l.indexOf("react-scripts")>-1)return"create-react-app";if(l.indexOf("react-scripts-ts")>-1)return"create-react-app-typescript";if(l.indexOf("@angular/core")>-1)return"angular-cli";if(l.indexOf("preact-cli")>-1)return"preact-cli";if(l.indexOf("svelte")>-1)return"svelte";if(l.indexOf("vue")>-1)return"vue-cli";var f=["@dojo/core","@dojo/framework"];return l.some((function(e){return f.indexOf(e)>-1}))?"@dojo/cli-create-app":l.indexOf("cx")>-1?"cxjs":l.indexOf("@nestjs/core")>-1||l.indexOf("@nestjs/common")>-1?"nest":void 0};var Wt={exports:{}};!function(e,t){var n="__lodash_hash_undefined__",r=1,o=2,i=9007199254740991,s="[object Arguments]",a="[object Array]",l="[object AsyncFunction]",c="[object Boolean]",u="[object Date]",h="[object Error]",f="[object Function]",d="[object GeneratorFunction]",m="[object Map]",p="[object Number]",v="[object Null]",g="[object Object]",b="[object Promise]",y="[object Proxy]",x="[object RegExp]",w="[object Set]",E="[object String]",j="[object Symbol]",N="[object Undefined]",O="[object WeakMap]",C="[object ArrayBuffer]",k="[object DataView]",_=/^\[object .+?Constructor\]$/,S=/^(?:0|[1-9]\d*)$/,F={};F["[object Float32Array]"]=F["[object Float64Array]"]=F["[object Int8Array]"]=F["[object Int16Array]"]=F["[object Int32Array]"]=F["[object Uint8Array]"]=F["[object Uint8ClampedArray]"]=F["[object Uint16Array]"]=F["[object Uint32Array]"]=!0,F[s]=F[a]=F[C]=F[c]=F[k]=F[u]=F[h]=F[f]=F[m]=F[p]=F[g]=F[x]=F[w]=F[E]=F[O]=!1;var P="object"==typeof At&&At&&At.Object===Object&&At,H="object"==typeof self&&self&&self.Object===Object&&self,M=P||H||Function("return this")(),T=t&&!t.nodeType&&t,z=T&&e&&!e.nodeType&&e,A=z&&z.exports===T,L=A&&P.process,B=function(){try{return L&&L.binding&&L.binding("util")}catch(e){}}(),W=B&&B.isTypedArray;function I(e,t){for(var n=-1,r=null==e?0:e.length;++nc))return!1;var h=a.get(e);if(h&&a.get(t))return h==t;var f=-1,d=!0,m=n&o?new Ce:void 0;for(a.set(e,t),a.set(t,e);++f-1},Ne.prototype.set=function(e,t){var n=this.__data__,r=Se(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Oe.prototype.clear=function(){this.size=0,this.__data__={hash:new je,map:new(he||Ne),string:new je}},Oe.prototype.delete=function(e){var t=Le(this,e).delete(e);return this.size-=t?1:0,t},Oe.prototype.get=function(e){return Le(this,e).get(e)},Oe.prototype.has=function(e){return Le(this,e).has(e)},Oe.prototype.set=function(e,t){var n=Le(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Ce.prototype.add=Ce.prototype.push=function(e){return this.__data__.set(e,n),this},Ce.prototype.has=function(e){return this.__data__.has(e)},ke.prototype.clear=function(){this.__data__=new Ne,this.size=0},ke.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},ke.prototype.get=function(e){return this.__data__.get(e)},ke.prototype.has=function(e){return this.__data__.has(e)},ke.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Ne){var r=n.__data__;if(!he||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Oe(r)}return n.set(e,t),this.size=n.size,this};var We=ae?function(e){return null==e?[]:(e=Object(e),function(e,t){for(var n=-1,r=null==e?0:e.length,o=0,i=[];++n-1&&e%1==0&&e-1&&e%1==0&&e<=i}function Ye(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Ve(e){return null!=e&&"object"==typeof e}var De=W?function(e){return function(t){return e(t)}}(W):function(e){return Ve(e)&&Ge(e.length)&&!!F[Fe(e)]};function Je(e){return null!=(t=e)&&Ge(t.length)&&!Ke(t)?_e(e):Te(e);var t}e.exports=function(e,t){return He(e,t)}}(Wt,Wt.exports);var It,$t;"0.19.0".replace(/\./g,"-");($t=It||(It={}))[$t.None=0]="None",$t[$t.Error=10]="Error",$t[$t.Warning=20]="Warning",$t[$t.Info=30]="Info",$t[$t.Debug=40]="Debug";"undefined"!=typeof window?r.useLayoutEffect:r.useEffect;r.createContext(void 0),"undefined"!=typeof window?r.useLayoutEffect:r.useEffect;r.createContext(null);const Rt={box:function({children:e,data:t}){const n="string"==typeof t?t:void 0;return r.createElement("span",{className:"ch-code-box-annotation",style:{outlineColor:n}},e)},bg:qt,label:function({children:e,data:t,style:n}){return r.createElement("div",{className:"ch-code-label-annotation",style:n},e,r.createElement("div",{className:"ch-code-label-annotation-text"},(null==t?void 0:t.children)||t))},link:function({children:e,isInline:t,style:n,data:o}){const i=(null==o?void 0:o.url)||o,s=null==o?void 0:o.title;return r.createElement("a",{href:i,title:s,className:t?"ch-code-inline-link":"ch-code-link",style:n},e)},mark:function(e){return e.isInline?r.createElement(Xt,Object.assign({},e)):r.createElement(qt,Object.assign({},e))},withClass:function({children:e,data:t,style:n}){return r.createElement("span",{style:n,className:t},e)}};function qt({children:e,data:t,style:n,lines:o}){const i=function(e){return e.map((e=>e.annotatedGroups.flatMap((e=>{var t;return null===(t=e.prev)||void 0===t?void 0:t.groups.flatMap((e=>e.tokens.map((e=>e.content))))})).join(""))).join("\n")}(o),s="ch-code-multiline-mark "+(null!=t?t:"");return r.createElement("div",{style:n,className:s},r.createElement("span",{className:"ch-code-multiline-mark-border"}),e,r.createElement(be,{className:"ch-code-button",content:i}))}function Xt({children:e,data:t}){const n="ch-code-inline-mark "+(null!=t?t:"");return r.createElement("span",{className:n,style:{background:Ut(e)||void 0}},e)}function Ut(e){var t,n,o;try{const i=r.Children.toArray(e)[0],s=r.Children.toArray((null===(t=null==i?void 0:i.props)||void 0===t?void 0:t.children)||[])[0],a=r.Children.toArray((null===(n=null==s?void 0:s.props)||void 0===n?void 0:n.children)||[])[0],{color:l}=(null===(o=null==a?void 0:a.props)||void 0===o?void 0:o.style)||{};return l?u(l,.2):void 0}catch(i){return}}function Zt(e){var{className:t,codeConfig:n,children:o,code:s}=e,a=i(e,["className","codeConfig","children","code"]);const{lines:l}=s,c=l.flatMap((e=>e.tokens));return r.createElement("span",Object.assign({"data-ch-theme":n.themeName,className:"ch-inline-code not-prose"+(t?" "+t:"")},a),r.createElement("code",null,c.map(((e,t)=>r.createElement("span",Object.assign({key:t},e.props),e.content)))))}},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>a});var r=n(6540);const o={},i=r.createContext(o);function s(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/eae80ce0.b1d36097.js b/assets/js/eae80ce0.b1d36097.js deleted file mode 100644 index 7da0726cdb..0000000000 --- a/assets/js/eae80ce0.b1d36097.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9642],{8267:(e,n,o)=>{o.r(n),o.d(n,{CH:()=>d,assets:()=>a,chCodeConfig:()=>h,contentTitle:()=>c,default:()=>g,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var t=o(4848),s=o(8453),i=o(4754);const r={title:"Authentication",sidebar_position:0,slug:"/configuration-authentication"},c=void 0,l={id:"Configuration/configuration-authentication",title:"Authentication",description:"This page may contain outdated information. It will be updated as soon as possible.",source:"@site/docs/Configuration/configuration-authentication.md",sourceDirName:"Configuration",slug:"/configuration-authentication",permalink:"/configuration-authentication",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:0,frontMatter:{title:"Authentication",sidebar_position:0,slug:"/configuration-authentication"},sidebar:"defaultSidebar",previous:{title:"Project & General Settings",permalink:"/settings-project-general-settings"},next:{title:"API Keys",permalink:"/configuration-api-keys"}},a={},d={annotations:i.hk,InlineCode:i.R0,Code:i.Cy},h={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},p=[{value:"Sign Up and Sign In",id:"f480dac5d2094d75a433de0b8e195641",level:2},{value:"Environment Variables",id:"3ed7cae6f5324ba0ac14783cf2a6cc07",level:2},{value:"LANGFLOW_AUTO_LOGIN",id:"8b10059e0fbc44f3bc8ce63fe7692e7e",level:3},{value:"LANGFLOW_SUPERUSER and LANGFLOW_SUPERUSER_PASSWORD",id:"a61a651a0fc7443a82cec93c07a14503",level:3},{value:"LANGFLOW_SECRET_KEY",id:"977aea34e6174c58bd76107990d62a1f",level:3},{value:"LANGFLOW_NEW_USER_IS_ACTIVE",id:"c8f5df9283be4e20be51e14518f5272e",level:3},{value:"Manage superusers with the CLI",id:"3b0c36a5cc0f4acc95c884d3de858d46",level:2},{value:"Sign in",id:"736ebb8c854b4c268d5e748c119a08ea",level:2},{value:"Profile settings",id:"dd5926e12471448d99bd6849d2149dc8",level:2}];function u(e){const n={admonition:"admonition",code:"code",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return d||f("CH",!1),d.Code||f("CH.Code",!0),d.InlineCode||f("CH.InlineCode",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,t.jsx)(n.admonition,{type:"info",children:(0,t.jsx)(n.p,{children:"This page may contain outdated information. It will be updated as soon as possible."})}),"\n",(0,t.jsx)(n.h2,{id:"f480dac5d2094d75a433de0b8e195641",children:"Sign Up and Sign In"}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.p,{children:"The login functionality in Langflow serves to authenticate users and protect sensitive routes in the application. Starting from version 0.5, Langflow introduces an enhanced login mechanism that is governed by a few environment variables. This allows new secure features."}),"\n",(0,t.jsx)(n.h2,{id:"3ed7cae6f5324ba0ac14783cf2a6cc07",children:"Environment Variables"}),"\n",(0,t.jsx)(n.p,{children:"The following environment variables are crucial in configuring the login settings:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"LANGFLOW_AUTO_LOGIN",props:{style:{color:"#79C0FF"}}}]}],lang:"jsx"},children:"LANGFLOW_AUTO_LOGIN"}),": Determines whether Langflow should automatically log users in. Default is ",(0,t.jsx)(n.code,{children:"True"}),"."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"LANGFLOW_SUPERUSER",props:{style:{color:"#79C0FF"}}}]}],lang:"jsx"},children:"LANGFLOW_SUPERUSER"}),": The username of the superuser."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"LANGFLOW_SUPERUSER_PASSWORD",props:{style:{color:"#79C0FF"}}}]}],lang:"jsx"},children:"LANGFLOW_SUPERUSER_PASSWORD"}),": The password for the superuser."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"LANGFLOW_SECRET_KEY",props:{style:{color:"#79C0FF"}}}]}],lang:"jsx"},children:"LANGFLOW_SECRET_KEY"}),": A key used for encrypting the superuser's password."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"LANGFLOW_NEW_USER_IS_ACTIVE",props:{style:{color:"#79C0FF"}}}]}],lang:"jsx"},children:"LANGFLOW_NEW_USER_IS_ACTIVE"}),": Determines whether new users are automatically activated. Default is ",(0,t.jsx)(n.code,{children:"False"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["All of these variables can be passed to the CLI command ",(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"langflow run",props:{style:{color:"#C9D1D9"}}}]}],lang:"jsx"},children:"langflow run"})," through the ",(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"--",props:{style:{color:"#FF7B72"}}},{content:"env",props:{style:{color:"#C9D1D9"}}},{content:"-",props:{style:{color:"#FF7B72"}}},{content:"file",props:{style:{color:"#C9D1D9"}}}]}],lang:"jsx"},children:"--env-file"})," option. For example:"]}),"\n",(0,t.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"langflow ",props:{style:{color:"#FFA657"}}},{content:"run ",props:{style:{color:"#A5D6FF"}}},{content:"--env-file ",props:{style:{color:"#79C0FF"}}},{content:".env",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,t.jsx)(n.admonition,{type:"caution",children:(0,t.jsx)(n.p,{children:"It is critical not to expose these environment variables in your code repository. Always set them securely in your deployment environment, for example, using Docker secrets, Kubernetes ConfigMaps/Secrets, or dedicated secure environment configuration systems like AWS Secrets Manager."})}),"\n",(0,t.jsx)(n.h3,{id:"8b10059e0fbc44f3bc8ce63fe7692e7e",children:(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"LANGFLOW_AUTO_LOGIN",props:{style:{color:"#79C0FF"}}}]}],lang:"jsx"},children:"LANGFLOW_AUTO_LOGIN"})}),"\n",(0,t.jsxs)(n.p,{children:["By default, this variable is set to ",(0,t.jsx)(n.code,{children:"True"}),". When enabled (",(0,t.jsx)(n.code,{children:"True"}),"), Langflow operates as it did in versions prior to 0.5\u2014automatic login without requiring explicit user authentication."]}),"\n",(0,t.jsx)(n.p,{children:"To disable automatic login and enforce user authentication:"}),"\n",(0,t.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"export",props:{style:{color:"#FF7B72"}}},{content:" LANGFLOW_AUTO_LOGIN",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"False",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,t.jsxs)(n.h3,{id:"a61a651a0fc7443a82cec93c07a14503",children:[(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"LANGFLOW_SUPERUSER",props:{style:{color:"#79C0FF"}}}]}],lang:"jsx"},children:"LANGFLOW_SUPERUSER"})," and ",(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"LANGFLOW_SUPERUSER_PASSWORD",props:{style:{color:"#79C0FF"}}}]}],lang:"jsx"},children:"LANGFLOW_SUPERUSER_PASSWORD"})]}),"\n",(0,t.jsxs)(n.p,{children:["These environment variables are only relevant when ",(0,t.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})," is set to ",(0,t.jsx)(n.code,{children:"False"}),". They specify the username and password for the superuser, which is essential for administrative tasks."]}),"\n",(0,t.jsx)(n.p,{children:"To create a superuser manually:"}),"\n",(0,t.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"export",props:{style:{color:"#FF7B72"}}},{content:" LANGFLOW_SUPERUSER",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"admin",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"export",props:{style:{color:"#FF7B72"}}},{content:" LANGFLOW_SUPERUSER_PASSWORD",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"securepassword",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,t.jsxs)(n.p,{children:["You can also use the CLI command ",(0,t.jsx)(n.code,{children:"langflow superuser"})," to set up a superuser interactively."]}),"\n",(0,t.jsx)(n.h3,{id:"977aea34e6174c58bd76107990d62a1f",children:(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"LANGFLOW_SECRET_KEY",props:{style:{color:"#79C0FF"}}}]}],lang:"jsx"},children:"LANGFLOW_SECRET_KEY"})}),"\n",(0,t.jsx)(n.p,{children:"This environment variable holds a secret key used for encrypting the superuser's password. Make sure to set this to a secure, randomly generated string."}),"\n",(0,t.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"export",props:{style:{color:"#FF7B72"}}},{content:" LANGFLOW_SECRET_KEY",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"randomly_generated_secure_key",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"",props:{style:{color:"#C9D1D9"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,t.jsx)(n.h3,{id:"c8f5df9283be4e20be51e14518f5272e",children:(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"LANGFLOW_NEW_USER_IS_ACTIVE",props:{style:{color:"#79C0FF"}}}]}],lang:"jsx"},children:"LANGFLOW_NEW_USER_IS_ACTIVE"})}),"\n",(0,t.jsxs)(n.p,{children:["By default, this variable is set to ",(0,t.jsx)(n.code,{children:"False"}),". When enabled (",(0,t.jsx)(n.code,{children:"True"}),"), new users are automatically activated and can log in without requiring explicit activation by the superuser."]}),"\n",(0,t.jsx)(n.h2,{id:"3b0c36a5cc0f4acc95c884d3de858d46",children:"Manage superusers with the CLI"}),"\n",(0,t.jsx)(n.p,{children:"Langflow provides a command-line utility for managing superusers:"}),"\n",(0,t.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"langflow ",props:{style:{color:"#FFA657"}}},{content:"superuser",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,t.jsx)(n.p,{children:"This command prompts you to enter the username and password for the superuser, unless they are already set using environment variables."}),"\n",(0,t.jsx)(n.h2,{id:"736ebb8c854b4c268d5e748c119a08ea",children:"Sign in"}),"\n",(0,t.jsxs)(n.p,{children:["With ",(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"LANGFLOW_AUTO_LOGIN",props:{style:{color:"#79C0FF"}}}]}],lang:"jsx"},children:"LANGFLOW_AUTO_LOGIN"})," set to ",(0,t.jsx)(d.InlineCode,{codeConfig:h,code:{lines:[{tokens:[{content:"False",props:{style:{color:"#C9D1D9"}}}]}],lang:"jsx"},children:"False"}),", Langflow requires users to sign up before they can log in. The sign-up page is the default landing page when a user visits Langflow for the first time."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:o(5246).A+"",width:"584",height:"832"})}),"\n",(0,t.jsx)(n.h2,{id:"dd5926e12471448d99bd6849d2149dc8",children:"Profile settings"}),"\n",(0,t.jsx)(n.p,{children:"Once signed in, you can change your profile settings by clicking on the profile icon in the top right corner of the Langflow dashboard. This opens a dropdown menu with the following options:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Admin Page"}),": Opens the admin page, which is only accessible to the superuser."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Profile Settings"}),": Opens the profile settings page."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Sign Out"}),": Logs the user out."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:o(8978).A+"",width:"404",height:"381"})}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Select ",(0,t.jsx)(n.strong,{children:"Profile Settings"})," to change your password and your profile picture."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:o(2626).A+"",width:"2079",height:"721"})}),"\n",(0,t.jsxs)(n.p,{children:["Select ",(0,t.jsx)(n.strong,{children:"Admin Page"})," to manage users and groups as the superuser."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:o(8101).A+"",width:"2190",height:"1540"})})]})}function g(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u(e)}function f(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},5246:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/1009571828-8840dd6a62739230e43b0a557518b5ff.png"},2626:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/1813063533-a712786cbca2cf05bc6778154e53ffad.png"},8101:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/383358552-b5376c867c0f56e5572991427f902303.png"},8978:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/563306242-e3f3830c789f4c5c23e6794c29c0d71d.png"}}]); \ No newline at end of file diff --git a/assets/js/eae80ce0.ba6a0711.js b/assets/js/eae80ce0.ba6a0711.js new file mode 100644 index 0000000000..ff19508585 --- /dev/null +++ b/assets/js/eae80ce0.ba6a0711.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunklangflow_docs=self.webpackChunklangflow_docs||[]).push([[9642],{8267:(e,n,t)=>{t.r(n),t.d(n,{CH:()=>d,assets:()=>c,chCodeConfig:()=>h,contentTitle:()=>l,default:()=>g,frontMatter:()=>i,metadata:()=>a,toc:()=>u});var o=t(4848),s=t(8453),r=t(4754);const i={title:"Authentication",sidebar_position:0,slug:"/configuration-authentication"},l=void 0,a={id:"Configuration/configuration-authentication",title:"Authentication",description:"The login functionality in Langflow serves to authenticate users and protect sensitive routes in the application.",source:"@site/docs/Configuration/configuration-authentication.md",sourceDirName:"Configuration",slug:"/configuration-authentication",permalink:"/configuration-authentication",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:0,frontMatter:{title:"Authentication",sidebar_position:0,slug:"/configuration-authentication"},sidebar:"defaultSidebar",previous:{title:"Project & General Settings",permalink:"/settings-project-general-settings"},next:{title:"API Keys",permalink:"/configuration-api-keys"}},c={},d={annotations:r.hk,Code:r.Cy},h={staticMediaQuery:"not screen, (max-width: 768px)",lineNumbers:!0,showCopyButton:!0,themeName:"github-dark"},u=[{value:"Create a superuser and new users in Langflow",id:"create-a-superuser-and-new-users-in-langflow",level:2},{value:"Manage Superuser with the Langflow CLI",id:"manage-superuser-with-the-langflow-cli",level:2},{value:"Authentication configuration values",id:"values",level:2},{value:"LANGFLOW_AUTO_LOGIN",id:"langflow_auto_login",level:3},{value:"LANGFLOW_SUPERUSER and LANGFLOW_SUPERUSER_PASSWORD",id:"langflow_superuser-and-langflow_superuser_password",level:3},{value:"LANGFLOW_SECRET_KEY",id:"langflow_secret_key",level:3},{value:"LANGFLOW_NEW_USER_IS_ACTIVE",id:"langflow_new_user_is_active",level:3}];function p(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.R)(),...e.components};return d||f("CH",!1),d.Code||f("CH.Code",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:'[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }'}}),"\n",(0,o.jsx)(n.p,{children:"The login functionality in Langflow serves to authenticate users and protect sensitive routes in the application."}),"\n",(0,o.jsx)(n.p,{children:"Starting from version 0.5, Langflow introduces an enhanced login mechanism that is governed by a few environment variables. This allows new secure features."}),"\n",(0,o.jsx)(n.h2,{id:"create-a-superuser-and-new-users-in-langflow",children:"Create a superuser and new users in Langflow"}),"\n",(0,o.jsx)(n.p,{children:"Learn how to create a new superuser, log in to Langflow, and add new users."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Create a ",(0,o.jsx)(n.code,{children:".env"})," file and open it in your preferred editor."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Add the following environment variables to your file."}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"LANGFLOW_AUTO_LOGIN",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"False",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"LANGFLOW_SUPERUSER",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"admin",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"LANGFLOW_SUPERUSER_PASSWORD",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"securepassword",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"LANGFLOW_SECRET_KEY",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"randomly_generated_secure_key",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"LANGFLOW_NEW_USER_IS_ACTIVE",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"False",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,o.jsxs)(n.p,{children:["For more information, see ",(0,o.jsx)(n.a,{href:"#values",children:"Authentication configuration values"}),"."]}),"\n",(0,o.jsx)(n.admonition,{type:"tip",children:(0,o.jsxs)(n.p,{children:["The Langflow project includes a ",(0,o.jsx)(n.a,{href:"https://github.com/langflow-ai/langflow/blob/main/.env.example",children:(0,o.jsx)(n.code,{children:".env.example"})})," file to help you get started.\nYou can copy the contents of this file into your own ",(0,o.jsx)(n.code,{children:".env"})," file and replace the example values with your own preferred settings."]})}),"\n",(0,o.jsxs)(n.ol,{start:"3",children:["\n",(0,o.jsxs)(n.li,{children:["Save your ",(0,o.jsx)(n.code,{children:".env"})," file."]}),"\n",(0,o.jsx)(n.li,{children:"Run Langflow with the configured environment variables."}),"\n"]}),"\n",(0,o.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"python ",props:{style:{color:"#FFA657"}}},{content:"-m ",props:{style:{color:"#79C0FF"}}},{content:"langflow run ",props:{style:{color:"#A5D6FF"}}},{content:"--env-file ",props:{style:{color:"#79C0FF"}}},{content:".env",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,o.jsxs)(n.ol,{start:"5",children:["\n",(0,o.jsxs)(n.li,{children:["Sign in with your username ",(0,o.jsx)(n.code,{children:"admin"})," and password ",(0,o.jsx)(n.code,{children:"securepassword"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["To open the ",(0,o.jsx)(n.strong,{children:"Admin Page"}),", click your user profile image, and then select ",(0,o.jsx)(n.strong,{children:"Admin Page"}),".\nYou can also go to ",(0,o.jsx)(n.code,{children:"http://127.0.0.1:7861/admin"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["To add a new user, click ",(0,o.jsx)(n.strong,{children:"New User"}),", and then add the ",(0,o.jsx)(n.strong,{children:"Username"})," and ",(0,o.jsx)(n.strong,{children:"Password"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["To activate the new user, select ",(0,o.jsx)(n.strong,{children:"Active"}),".\nThe user can only sign in if you select them as ",(0,o.jsx)(n.strong,{children:"Active"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["To give the user ",(0,o.jsx)(n.code,{children:"superuser"})," priveleges, click ",(0,o.jsx)(n.strong,{children:"Superuser"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Click ",(0,o.jsx)(n.strong,{children:"Save"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["To confirm your new user has been created, sign out of Langflow, and then sign back in using your new ",(0,o.jsx)(n.strong,{children:"Username"})," and ",(0,o.jsx)(n.strong,{children:"Password"}),"."]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"manage-superuser-with-the-langflow-cli",children:"Manage Superuser with the Langflow CLI"}),"\n",(0,o.jsx)(n.p,{children:"Langflow provides a command-line utility for interactively creating superusers:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Enter the CLI command:"}),"\n"]}),"\n",(0,o.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"langflow ",props:{style:{color:"#FFA657"}}},{content:"superuser",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,o.jsxs)(n.ol,{start:"2",children:["\n",(0,o.jsxs)(n.li,{children:["Langflow prompts you for a ",(0,o.jsx)(n.strong,{children:"Username"})," and ",(0,o.jsx)(n.strong,{children:"Password"}),":"]}),"\n"]}),"\n",(0,o.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"langflow superuser",props:{}}]},{tokens:[{content:"Username: new_superuser_1",props:{}}]},{tokens:[{content:"Password:",props:{}}]},{tokens:[{content:"Default folder created successfully.",props:{}}]},{tokens:[{content:"Superuser created successfully.",props:{}}]}],lang:"text"},annotations:[]}]}),"\n",(0,o.jsxs)(n.ol,{start:"3",children:["\n",(0,o.jsxs)(n.li,{children:["To confirm your new superuser was created successfully, go to the ",(0,o.jsx)(n.strong,{children:"Admin Page"})," at ",(0,o.jsx)(n.code,{children:"http://127.0.0.1:7861/admin"}),"."]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"values",children:"Authentication configuration values"}),"\n",(0,o.jsx)(n.p,{children:"The following table lists the available authentication configuration variables, their descriptions, and default values:"}),"\n",(0,o.jsxs)(n.table,{children:[(0,o.jsx)(n.thead,{children:(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.th,{children:"Variable"}),(0,o.jsx)(n.th,{children:"Description"}),(0,o.jsx)(n.th,{children:"Default"})]})}),(0,o.jsxs)(n.tbody,{children:[(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"LANGFLOW_AUTO_LOGIN"})}),(0,o.jsx)(n.td,{children:"Enables automatic login"}),(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"True"})})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"LANGFLOW_SUPERUSER"})}),(0,o.jsx)(n.td,{children:"Superuser username"}),(0,o.jsx)(n.td,{children:"-"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"LANGFLOW_SUPERUSER_PASSWORD"})}),(0,o.jsx)(n.td,{children:"Superuser password"}),(0,o.jsx)(n.td,{children:"-"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"LANGFLOW_SECRET_KEY"})}),(0,o.jsx)(n.td,{children:"Key for encrypting superuser password"}),(0,o.jsx)(n.td,{children:"-"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"LANGFLOW_NEW_USER_IS_ACTIVE"})}),(0,o.jsx)(n.td,{children:"Automatically activates new users"}),(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"False"})})]})]})]}),"\n",(0,o.jsx)(n.h3,{id:"langflow_auto_login",children:"LANGFLOW_AUTO_LOGIN"}),"\n",(0,o.jsxs)(n.p,{children:["By default, this variable is set to ",(0,o.jsx)(n.code,{children:"True"}),". When enabled, Langflow operates as it did in versions prior to 0.5, including automatic login without requiring explicit user authentication."]}),"\n",(0,o.jsx)(n.p,{children:"To disable automatic login and enforce user authentication:"}),"\n",(0,o.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"export",props:{style:{color:"#FF7B72"}}},{content:" LANGFLOW_AUTO_LOGIN",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"False",props:{style:{color:"#A5D6FF"}}}]}],lang:"shell"},annotations:[]}]}),"\n",(0,o.jsx)(n.h3,{id:"langflow_superuser-and-langflow_superuser_password",children:"LANGFLOW_SUPERUSER and LANGFLOW_SUPERUSER_PASSWORD"}),"\n",(0,o.jsx)(n.p,{children:"These environment variables are only relevant when LANGFLOW_AUTO_LOGIN is set to False. They specify the username and password for the superuser, which is essential for administrative tasks.\nTo create a superuser manually:"}),"\n",(0,o.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"export",props:{style:{color:"#FF7B72"}}},{content:" LANGFLOW_SUPERUSER",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"admin",props:{style:{color:"#A5D6FF"}}}]},{tokens:[{content:"export",props:{style:{color:"#FF7B72"}}},{content:" LANGFLOW_SUPERUSER_PASSWORD",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"securepassword",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,o.jsx)(n.h3,{id:"langflow_secret_key",children:"LANGFLOW_SECRET_KEY"}),"\n",(0,o.jsx)(n.p,{children:"This environment variable holds a secret key used for encrypting the superuser's password. Make sure to set this to a secure, randomly generated string."}),"\n",(0,o.jsx)(d.Code,{codeConfig:h,northPanel:{tabs:[""],active:"",heightRatio:1},files:[{name:"",focus:"",code:{lines:[{tokens:[{content:"export",props:{style:{color:"#FF7B72"}}},{content:" LANGFLOW_SECRET_KEY",props:{style:{color:"#C9D1D9"}}},{content:"=",props:{style:{color:"#FF7B72"}}},{content:"randomly_generated_secure_key",props:{style:{color:"#A5D6FF"}}}]}],lang:"bash"},annotations:[]}]}),"\n",(0,o.jsx)(n.h3,{id:"langflow_new_user_is_active",children:"LANGFLOW_NEW_USER_IS_ACTIVE"}),"\n",(0,o.jsxs)(n.p,{children:["By default, this variable is set to ",(0,o.jsx)(n.code,{children:"False"}),". When enabled, new users are automatically activated and can log in without requiring explicit activation by the superuser."]})]})}function g(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(p,{...e})}):p(e)}function f(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.bf5d2e4f.js b/assets/js/runtime~main.04197601.js similarity index 97% rename from assets/js/runtime~main.bf5d2e4f.js rename to assets/js/runtime~main.04197601.js index 12e12a063c..7432970d0a 100644 --- a/assets/js/runtime~main.bf5d2e4f.js +++ b/assets/js/runtime~main.04197601.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,c,r,f,t={},d={};function b(e){var a=d[e];if(void 0!==a)return a.exports;var c=d[e]={id:e,loaded:!1,exports:{}};return t[e].call(c.exports,c,c.exports,b),c.loaded=!0,c.exports}b.m=t,b.c=d,e=[],b.O=(a,c,r,f)=>{if(!c){var t=1/0;for(n=0;n=f)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(d=!1,f0&&e[n-1][2]>f;n--)e[n]=e[n-1];e[n]=[c,r,f]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);b.r(f);var t={};a=a||[null,c({}),c([]),c(c)];for(var d=2&r&&e;"object"==typeof d&&!~a.indexOf(d);d=c(d))Object.getOwnPropertyNames(d).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,b.d(f,t),f},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({51:"b7251463",144:"e2a386ca",145:"0be1d5fe",784:"fe965b62",804:"7fcd30b6",868:"dc7b1ef3",1039:"16d61ab3",1227:"647965d5",1246:"1b523369",1258:"7da17ff3",1456:"ecd98ae0",1563:"3ef76b56",1567:"22dd74f7",1917:"c3616f7f",2005:"0575dfc8",2042:"reactPlayerTwitch",2431:"c0d3c6ab",2624:"8ff68e6f",2657:"a3ab51d1",2691:"2efb9d3a",2723:"reactPlayerMux",3110:"6a2beaac",3392:"reactPlayerVidyard",3659:"4618a71f",3917:"c8dad5f1",3964:"829ff4d2",4028:"c2ebd62a",4046:"9ac856ad",4133:"5cf11f26",4417:"f659caff",5475:"18f3809a",5562:"20e9af62",5572:"873ebc27",5628:"a83bc7c0",5634:"9822a706",5742:"aba21aa0",5772:"f66238ae",6008:"445668ec",6147:"ab17fe15",6173:"reactPlayerVimeo",6328:"reactPlayerDailyMotion",6353:"reactPlayerPreview",6463:"reactPlayerKaltura",6494:"b453f7b0",6677:"2f617b24",6887:"reactPlayerFacebook",6900:"3f8193f3",7098:"a7bd4aaa",7211:"cacdc615",7258:"11478de3",7338:"c39b795e",7408:"3ae94ad4",7453:"fdefa9a8",7458:"reactPlayerFilePlayer",7462:"921b5fc1",7570:"reactPlayerMixcloud",7627:"reactPlayerStreamable",8031:"25bf2d67",8054:"85112c90",8127:"53ed7db4",8183:"d59b5b70",8261:"474d53cd",8356:"c6a5eaec",8401:"17896441",8446:"reactPlayerYouTube",8598:"44dfcf75",8661:"8f774222",8927:"ae68aa8b",8929:"172b3cfb",8953:"adef6868",9048:"a94703ab",9126:"ea3c040a",9304:"c329cc2b",9340:"reactPlayerWistia",9455:"54175a6c",9461:"23d0e682",9580:"f81a91eb",9642:"eae80ce0",9647:"5e95c892",9979:"reactPlayerSoundCloud"}[e]||e)+"."+{51:"dcf61e98",144:"7e8e09aa",145:"6a62a03b",784:"bf3c3b32",804:"052d3ec1",868:"d7c01dec",900:"cec9b91d",1039:"6b5d9275",1227:"d5386d93",1246:"9ab26cae",1258:"ef663a05",1456:"e5056aaa",1563:"78890091",1567:"e0cf8331",1917:"66691f62",2005:"a0ff8716",2042:"38dd7b7d",2237:"51dcacf5",2431:"654749b2",2624:"2ae05354",2657:"092bb06b",2691:"c7804f19",2723:"8f6391ba",3110:"a42b07a9",3392:"cb42cdfc",3554:"c7291073",3659:"65567128",3917:"3379b67c",3964:"9a2ddfd9",4028:"4c8ebf9d",4046:"266ce350",4133:"988b28fb",4417:"32268d0a",5475:"dfef96d2",5562:"8d63ec91",5572:"d11012c8",5628:"d6312a92",5634:"c993c87c",5742:"7728a8b8",5772:"158b350c",6008:"5070ebd4",6147:"8e51af13",6173:"291c2909",6328:"f614ee4c",6353:"8cd2b61f",6463:"8e37235b",6494:"404054b3",6677:"5b13cfa7",6887:"a60ee927",6900:"ed789b0e",7098:"71beb8e2",7211:"2a7b0286",7258:"a9a0ccb4",7338:"156cd17a",7408:"95af4b45",7453:"c2cad3b5",7458:"c0e08054",7462:"df5a557c",7570:"34c84b39",7627:"b6323134",8031:"9469dd38",8054:"2d20ecfb",8127:"7f91271f",8183:"7baaad08",8261:"4737b75e",8356:"41abdc0c",8401:"633b1eb0",8446:"a89f408c",8598:"44362993",8661:"33e0bbf2",8927:"12e6528a",8929:"e136d1f2",8953:"e30ec767",9048:"9efc6036",9126:"2048b2ca",9304:"db4c4794",9340:"7f514310",9455:"e2ddcb40",9461:"f73e4482",9580:"44ae62e0",9642:"b1d36097",9647:"803b6717",9979:"9ddea34f"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},f="langflow-docs:",b.l=(e,a,c,t)=>{if(r[e])r[e].push(a);else{var d,o;if(void 0!==c)for(var l=document.getElementsByTagName("script"),n=0;n{d.onerror=d.onload=null,clearTimeout(s);var f=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),f&&f.forEach((e=>e(c))),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=u.bind(null,d.onerror),d.onload=u.bind(null,d.onload),o&&document.head.appendChild(d)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"8401",b7251463:"51",e2a386ca:"144","0be1d5fe":"145",fe965b62:"784","7fcd30b6":"804",dc7b1ef3:"868","16d61ab3":"1039","647965d5":"1227","1b523369":"1246","7da17ff3":"1258",ecd98ae0:"1456","3ef76b56":"1563","22dd74f7":"1567",c3616f7f:"1917","0575dfc8":"2005",reactPlayerTwitch:"2042",c0d3c6ab:"2431","8ff68e6f":"2624",a3ab51d1:"2657","2efb9d3a":"2691",reactPlayerMux:"2723","6a2beaac":"3110",reactPlayerVidyard:"3392","4618a71f":"3659",c8dad5f1:"3917","829ff4d2":"3964",c2ebd62a:"4028","9ac856ad":"4046","5cf11f26":"4133",f659caff:"4417","18f3809a":"5475","20e9af62":"5562","873ebc27":"5572",a83bc7c0:"5628","9822a706":"5634",aba21aa0:"5742",f66238ae:"5772","445668ec":"6008",ab17fe15:"6147",reactPlayerVimeo:"6173",reactPlayerDailyMotion:"6328",reactPlayerPreview:"6353",reactPlayerKaltura:"6463",b453f7b0:"6494","2f617b24":"6677",reactPlayerFacebook:"6887","3f8193f3":"6900",a7bd4aaa:"7098",cacdc615:"7211","11478de3":"7258",c39b795e:"7338","3ae94ad4":"7408",fdefa9a8:"7453",reactPlayerFilePlayer:"7458","921b5fc1":"7462",reactPlayerMixcloud:"7570",reactPlayerStreamable:"7627","25bf2d67":"8031","85112c90":"8054","53ed7db4":"8127",d59b5b70:"8183","474d53cd":"8261",c6a5eaec:"8356",reactPlayerYouTube:"8446","44dfcf75":"8598","8f774222":"8661",ae68aa8b:"8927","172b3cfb":"8929",adef6868:"8953",a94703ab:"9048",ea3c040a:"9126",c329cc2b:"9304",reactPlayerWistia:"9340","54175a6c":"9455","23d0e682":"9461",f81a91eb:"9580",eae80ce0:"9642","5e95c892":"9647",reactPlayerSoundCloud:"9979"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,c)=>{var r=b.o(e,a)?e[a]:void 0;if(0!==r)if(r)c.push(r[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((c,f)=>r=e[a]=[c,f]));c.push(r[2]=f);var t=b.p+b.u(a),d=new Error;b.l(t,(c=>{if(b.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var f=c&&("load"===c.type?"missing":c.type),t=c&&c.target&&c.target.src;d.message="Loading chunk "+a+" failed.\n("+f+": "+t+")",d.name="ChunkLoadError",d.type=f,d.request=t,r[1](d)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var r,f,t=c[0],d=c[1],o=c[2],l=0;if(t.some((a=>0!==e[a]))){for(r in d)b.o(d,r)&&(b.m[r]=d[r]);if(o)var n=o(b)}for(a&&a(c);l{"use strict";var e,a,c,r,f,t={},d={};function b(e){var a=d[e];if(void 0!==a)return a.exports;var c=d[e]={id:e,loaded:!1,exports:{}};return t[e].call(c.exports,c,c.exports,b),c.loaded=!0,c.exports}b.m=t,b.c=d,e=[],b.O=(a,c,r,f)=>{if(!c){var t=1/0;for(n=0;n=f)&&Object.keys(b.O).every((e=>b.O[e](c[o])))?c.splice(o--,1):(d=!1,f0&&e[n-1][2]>f;n--)e[n]=e[n-1];e[n]=[c,r,f]},b.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return b.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,b.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);b.r(f);var t={};a=a||[null,c({}),c([]),c(c)];for(var d=2&r&&e;"object"==typeof d&&!~a.indexOf(d);d=c(d))Object.getOwnPropertyNames(d).forEach((a=>t[a]=()=>e[a]));return t.default=()=>e,b.d(f,t),f},b.d=(e,a)=>{for(var c in a)b.o(a,c)&&!b.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},b.f={},b.e=e=>Promise.all(Object.keys(b.f).reduce(((a,c)=>(b.f[c](e,a),a)),[])),b.u=e=>"assets/js/"+({51:"b7251463",144:"e2a386ca",145:"0be1d5fe",784:"fe965b62",804:"7fcd30b6",868:"dc7b1ef3",1039:"16d61ab3",1227:"647965d5",1246:"1b523369",1258:"7da17ff3",1456:"ecd98ae0",1563:"3ef76b56",1567:"22dd74f7",1917:"c3616f7f",2005:"0575dfc8",2042:"reactPlayerTwitch",2431:"c0d3c6ab",2624:"8ff68e6f",2657:"a3ab51d1",2691:"2efb9d3a",2723:"reactPlayerMux",3110:"6a2beaac",3392:"reactPlayerVidyard",3659:"4618a71f",3917:"c8dad5f1",3964:"829ff4d2",4028:"c2ebd62a",4046:"9ac856ad",4133:"5cf11f26",4417:"f659caff",5475:"18f3809a",5562:"20e9af62",5572:"873ebc27",5628:"a83bc7c0",5634:"9822a706",5742:"aba21aa0",5772:"f66238ae",6008:"445668ec",6147:"ab17fe15",6173:"reactPlayerVimeo",6328:"reactPlayerDailyMotion",6353:"reactPlayerPreview",6463:"reactPlayerKaltura",6494:"b453f7b0",6677:"2f617b24",6887:"reactPlayerFacebook",6900:"3f8193f3",7098:"a7bd4aaa",7211:"cacdc615",7258:"11478de3",7338:"c39b795e",7408:"3ae94ad4",7453:"fdefa9a8",7458:"reactPlayerFilePlayer",7462:"921b5fc1",7570:"reactPlayerMixcloud",7627:"reactPlayerStreamable",8031:"25bf2d67",8054:"85112c90",8127:"53ed7db4",8183:"d59b5b70",8261:"474d53cd",8356:"c6a5eaec",8401:"17896441",8446:"reactPlayerYouTube",8598:"44dfcf75",8661:"8f774222",8927:"ae68aa8b",8929:"172b3cfb",8953:"adef6868",9048:"a94703ab",9126:"ea3c040a",9304:"c329cc2b",9340:"reactPlayerWistia",9455:"54175a6c",9461:"23d0e682",9580:"f81a91eb",9642:"eae80ce0",9647:"5e95c892",9979:"reactPlayerSoundCloud"}[e]||e)+"."+{51:"dcf61e98",144:"7e8e09aa",145:"6a62a03b",784:"bf3c3b32",804:"052d3ec1",868:"d7c01dec",900:"047951be",1039:"6b5d9275",1227:"d5386d93",1246:"9ab26cae",1258:"ef663a05",1456:"e5056aaa",1563:"78890091",1567:"f0c578de",1917:"66691f62",2005:"a0ff8716",2042:"38dd7b7d",2237:"51dcacf5",2431:"654749b2",2624:"2ae05354",2657:"092bb06b",2691:"c7804f19",2723:"8f6391ba",3110:"a42b07a9",3392:"cb42cdfc",3554:"c7291073",3659:"65567128",3917:"3379b67c",3964:"9a2ddfd9",4028:"4c8ebf9d",4046:"266ce350",4133:"988b28fb",4417:"32268d0a",5475:"dfef96d2",5562:"8d63ec91",5572:"d11012c8",5628:"d6312a92",5634:"c993c87c",5742:"7728a8b8",5772:"158b350c",6008:"5070ebd4",6147:"8e51af13",6173:"291c2909",6328:"f614ee4c",6353:"8cd2b61f",6463:"8e37235b",6494:"404054b3",6677:"5b13cfa7",6887:"a60ee927",6900:"ed789b0e",7098:"71beb8e2",7211:"2a7b0286",7258:"a9a0ccb4",7338:"156cd17a",7408:"95af4b45",7453:"c2cad3b5",7458:"c0e08054",7462:"df5a557c",7570:"34c84b39",7627:"b6323134",8031:"9469dd38",8054:"2d20ecfb",8127:"7f91271f",8183:"7baaad08",8261:"4737b75e",8356:"41abdc0c",8401:"633b1eb0",8446:"a89f408c",8598:"44362993",8661:"33e0bbf2",8927:"12e6528a",8929:"e136d1f2",8953:"e30ec767",9048:"9efc6036",9126:"2048b2ca",9304:"db4c4794",9340:"7f514310",9455:"e2ddcb40",9461:"f73e4482",9580:"44ae62e0",9642:"ba6a0711",9647:"803b6717",9979:"9ddea34f"}[e]+".js",b.miniCssF=e=>{},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},f="langflow-docs:",b.l=(e,a,c,t)=>{if(r[e])r[e].push(a);else{var d,o;if(void 0!==c)for(var l=document.getElementsByTagName("script"),n=0;n{d.onerror=d.onload=null,clearTimeout(s);var f=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),f&&f.forEach((e=>e(c))),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=u.bind(null,d.onerror),d.onload=u.bind(null,d.onload),o&&document.head.appendChild(d)}},b.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.p="/",b.gca=function(e){return e={17896441:"8401",b7251463:"51",e2a386ca:"144","0be1d5fe":"145",fe965b62:"784","7fcd30b6":"804",dc7b1ef3:"868","16d61ab3":"1039","647965d5":"1227","1b523369":"1246","7da17ff3":"1258",ecd98ae0:"1456","3ef76b56":"1563","22dd74f7":"1567",c3616f7f:"1917","0575dfc8":"2005",reactPlayerTwitch:"2042",c0d3c6ab:"2431","8ff68e6f":"2624",a3ab51d1:"2657","2efb9d3a":"2691",reactPlayerMux:"2723","6a2beaac":"3110",reactPlayerVidyard:"3392","4618a71f":"3659",c8dad5f1:"3917","829ff4d2":"3964",c2ebd62a:"4028","9ac856ad":"4046","5cf11f26":"4133",f659caff:"4417","18f3809a":"5475","20e9af62":"5562","873ebc27":"5572",a83bc7c0:"5628","9822a706":"5634",aba21aa0:"5742",f66238ae:"5772","445668ec":"6008",ab17fe15:"6147",reactPlayerVimeo:"6173",reactPlayerDailyMotion:"6328",reactPlayerPreview:"6353",reactPlayerKaltura:"6463",b453f7b0:"6494","2f617b24":"6677",reactPlayerFacebook:"6887","3f8193f3":"6900",a7bd4aaa:"7098",cacdc615:"7211","11478de3":"7258",c39b795e:"7338","3ae94ad4":"7408",fdefa9a8:"7453",reactPlayerFilePlayer:"7458","921b5fc1":"7462",reactPlayerMixcloud:"7570",reactPlayerStreamable:"7627","25bf2d67":"8031","85112c90":"8054","53ed7db4":"8127",d59b5b70:"8183","474d53cd":"8261",c6a5eaec:"8356",reactPlayerYouTube:"8446","44dfcf75":"8598","8f774222":"8661",ae68aa8b:"8927","172b3cfb":"8929",adef6868:"8953",a94703ab:"9048",ea3c040a:"9126",c329cc2b:"9304",reactPlayerWistia:"9340","54175a6c":"9455","23d0e682":"9461",f81a91eb:"9580",eae80ce0:"9642","5e95c892":"9647",reactPlayerSoundCloud:"9979"}[e]||e,b.p+b.u(e)},(()=>{var e={5354:0,1869:0};b.f.j=(a,c)=>{var r=b.o(e,a)?e[a]:void 0;if(0!==r)if(r)c.push(r[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((c,f)=>r=e[a]=[c,f]));c.push(r[2]=f);var t=b.p+b.u(a),d=new Error;b.l(t,(c=>{if(b.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var f=c&&("load"===c.type?"missing":c.type),t=c&&c.target&&c.target.src;d.message="Loading chunk "+a+" failed.\n("+f+": "+t+")",d.name="ChunkLoadError",d.type=f,d.request=t,r[1](d)}}),"chunk-"+a,a)}},b.O.j=a=>0===e[a];var a=(a,c)=>{var r,f,t=c[0],d=c[1],o=c[2],l=0;if(t.some((a=>0!==e[a]))){for(r in d)b.o(d,r)&&(b.m[r]=d[r]);if(o)var n=o(b)}for(a&&a(c);l - + diff --git a/components-data.html b/components-data.html index 2b6f94208f..0e39fa61e3 100644 --- a/components-data.html +++ b/components-data.html @@ -10,7 +10,7 @@ - + diff --git a/components-embedding-models.html b/components-embedding-models.html index 03fb85556f..e84532376c 100644 --- a/components-embedding-models.html +++ b/components-embedding-models.html @@ -10,7 +10,7 @@ - + diff --git a/components-helpers.html b/components-helpers.html index 8d78148033..2faaeb9e40 100644 --- a/components-helpers.html +++ b/components-helpers.html @@ -10,7 +10,7 @@ - + diff --git a/components-io.html b/components-io.html index 32054bc405..6919fb25b6 100644 --- a/components-io.html +++ b/components-io.html @@ -10,7 +10,7 @@ - + diff --git a/components-loaders.html b/components-loaders.html index 1391fefa37..ef2dbaf779 100644 --- a/components-loaders.html +++ b/components-loaders.html @@ -10,7 +10,7 @@ - + diff --git a/components-models.html b/components-models.html index de63dfeed0..207cd01cd5 100644 --- a/components-models.html +++ b/components-models.html @@ -10,7 +10,7 @@ - + diff --git a/components-prompts.html b/components-prompts.html index 5f2fd86a77..43374bdc83 100644 --- a/components-prompts.html +++ b/components-prompts.html @@ -10,7 +10,7 @@ - + diff --git a/components-rag.html b/components-rag.html index e75b6288c5..10593de49d 100644 --- a/components-rag.html +++ b/components-rag.html @@ -10,7 +10,7 @@ - + diff --git a/components-vector-stores.html b/components-vector-stores.html index d9668693c6..60a3d2cd1e 100644 --- a/components-vector-stores.html +++ b/components-vector-stores.html @@ -10,7 +10,7 @@ - + diff --git a/components.html b/components.html index 6d3af10852..17c20ad5c6 100644 --- a/components.html +++ b/components.html @@ -10,7 +10,7 @@ - + diff --git a/configuration-api-keys.html b/configuration-api-keys.html index a5110a032d..7359caca2b 100644 --- a/configuration-api-keys.html +++ b/configuration-api-keys.html @@ -10,7 +10,7 @@ - + diff --git a/configuration-authentication.html b/configuration-authentication.html index 83712d2fef..06e8d256c6 100644 --- a/configuration-authentication.html +++ b/configuration-authentication.html @@ -3,74 +3,80 @@ -Authentication | Langflow Documentation +Authentication | Langflow Documentation - +

Authentication

-
info

This page may contain outdated information. It will be updated as soon as possible.

-

Sign Up and Sign In

-
-

The login functionality in Langflow serves to authenticate users and protect sensitive routes in the application. Starting from version 0.5, Langflow introduces an enhanced login mechanism that is governed by a few environment variables. This allows new secure features.

-

Environment Variables

-

The following environment variables are crucial in configuring the login settings:

-
    -
  • LANGFLOW_AUTO_LOGIN: Determines whether Langflow should automatically log users in. Default is True.
  • -
  • LANGFLOW_SUPERUSER: The username of the superuser.
  • -
  • LANGFLOW_SUPERUSER_PASSWORD: The password for the superuser.
  • -
  • LANGFLOW_SECRET_KEY: A key used for encrypting the superuser's password.
  • -
  • LANGFLOW_NEW_USER_IS_ACTIVE: Determines whether new users are automatically activated. Default is False.
  • -
-

All of these variables can be passed to the CLI command langflow run through the --env-file option. For example:

-

_10
langflow run --env-file .env

-
caution

It is critical not to expose these environment variables in your code repository. Always set them securely in your deployment environment, for example, using Docker secrets, Kubernetes ConfigMaps/Secrets, or dedicated secure environment configuration systems like AWS Secrets Manager.

-

LANGFLOW_AUTO_LOGIN

-

By default, this variable is set to True. When enabled (True), Langflow operates as it did in versions prior to 0.5—automatic login without requiring explicit user authentication.

+

The login functionality in Langflow serves to authenticate users and protect sensitive routes in the application.

+

Starting from version 0.5, Langflow introduces an enhanced login mechanism that is governed by a few environment variables. This allows new secure features.

+

Create a superuser and new users in Langflow

+

Learn how to create a new superuser, log in to Langflow, and add new users.

+
    +
  1. +

    Create a .env file and open it in your preferred editor.

    +
  2. +
  3. +

    Add the following environment variables to your file.

    +
  4. +
+

_10
LANGFLOW_AUTO_LOGIN=False
_10
LANGFLOW_SUPERUSER=admin
_10
LANGFLOW_SUPERUSER_PASSWORD=securepassword
_10
LANGFLOW_SECRET_KEY=randomly_generated_secure_key
_10
LANGFLOW_NEW_USER_IS_ACTIVE=False

+

For more information, see Authentication configuration values.

+
tip

The Langflow project includes a .env.example file to help you get started. +You can copy the contents of this file into your own .env file and replace the example values with your own preferred settings.

+
    +
  1. Save your .env file.
  2. +
  3. Run Langflow with the configured environment variables.
  4. +
+

_10
python -m langflow run --env-file .env

+
    +
  1. Sign in with your username admin and password securepassword.
  2. +
  3. To open the Admin Page, click your user profile image, and then select Admin Page. +You can also go to http://127.0.0.1:7861/admin.
  4. +
  5. To add a new user, click New User, and then add the Username and Password.
  6. +
  7. To activate the new user, select Active. +The user can only sign in if you select them as Active.
  8. +
  9. To give the user superuser priveleges, click Superuser.
  10. +
  11. Click Save.
  12. +
  13. To confirm your new user has been created, sign out of Langflow, and then sign back in using your new Username and Password.
  14. +
+

Manage Superuser with the Langflow CLI

+

Langflow provides a command-line utility for interactively creating superusers:

+
    +
  1. Enter the CLI command:
  2. +
+

_10
langflow superuser

+
    +
  1. Langflow prompts you for a Username and Password:
  2. +
+

_10
langflow superuser
_10
Username: new_superuser_1
_10
Password:
_10
Default folder created successfully.
_10
Superuser created successfully.

+
    +
  1. To confirm your new superuser was created successfully, go to the Admin Page at http://127.0.0.1:7861/admin.
  2. +
+

Authentication configuration values

+

The following table lists the available authentication configuration variables, their descriptions, and default values:

+
VariableDescriptionDefault
LANGFLOW_AUTO_LOGINEnables automatic loginTrue
LANGFLOW_SUPERUSERSuperuser username-
LANGFLOW_SUPERUSER_PASSWORDSuperuser password-
LANGFLOW_SECRET_KEYKey for encrypting superuser password-
LANGFLOW_NEW_USER_IS_ACTIVEAutomatically activates new usersFalse
+

LANGFLOW_AUTO_LOGIN

+

By default, this variable is set to True. When enabled, Langflow operates as it did in versions prior to 0.5, including automatic login without requiring explicit user authentication.

To disable automatic login and enforce user authentication:


_10
export LANGFLOW_AUTO_LOGIN=False

-

LANGFLOW_SUPERUSER and LANGFLOW_SUPERUSER_PASSWORD

-

These environment variables are only relevant when LANGFLOW_AUTO_LOGIN is set to False. They specify the username and password for the superuser, which is essential for administrative tasks.

-

To create a superuser manually:

+

LANGFLOW_SUPERUSER and LANGFLOW_SUPERUSER_PASSWORD

+

These environment variables are only relevant when LANGFLOW_AUTO_LOGIN is set to False. They specify the username and password for the superuser, which is essential for administrative tasks. +To create a superuser manually:


_10
export LANGFLOW_SUPERUSER=admin
_10
export LANGFLOW_SUPERUSER_PASSWORD=securepassword

-

You can also use the CLI command langflow superuser to set up a superuser interactively.

-

LANGFLOW_SECRET_KEY

+

LANGFLOW_SECRET_KEY

This environment variable holds a secret key used for encrypting the superuser's password. Make sure to set this to a secure, randomly generated string.


_10
export LANGFLOW_SECRET_KEY=randomly_generated_secure_key

-

LANGFLOW_NEW_USER_IS_ACTIVE

-

By default, this variable is set to False. When enabled (True), new users are automatically activated and can log in without requiring explicit activation by the superuser.

-

Manage superusers with the CLI

-

Langflow provides a command-line utility for managing superusers:

-

_10
langflow superuser

-

This command prompts you to enter the username and password for the superuser, unless they are already set using environment variables.

-

Sign in

-

With LANGFLOW_AUTO_LOGIN set to False, Langflow requires users to sign up before they can log in. The sign-up page is the default landing page when a user visits Langflow for the first time.

-

-

Profile settings

-

Once signed in, you can change your profile settings by clicking on the profile icon in the top right corner of the Langflow dashboard. This opens a dropdown menu with the following options:

-
    -
  • -

    Admin Page: Opens the admin page, which is only accessible to the superuser.

    -
  • -
  • -

    Profile Settings: Opens the profile settings page.

    -
  • -
  • -

    Sign Out: Logs the user out.

    -

    -
  • -
-

Select Profile Settings to change your password and your profile picture.

-

-

Select Admin Page to manage users and groups as the superuser.

-

Hi, how can I help you?

+

LANGFLOW_NEW_USER_IS_ACTIVE

+

By default, this variable is set to False. When enabled, new users are automatically activated and can log in without requiring explicit activation by the superuser.

Hi, how can I help you?

\ No newline at end of file diff --git a/configuration-auto-save.html b/configuration-auto-save.html index 29272d7370..f8f6270d88 100644 --- a/configuration-auto-save.html +++ b/configuration-auto-save.html @@ -10,7 +10,7 @@ - + diff --git a/configuration-backend-only.html b/configuration-backend-only.html index 1be2538ae8..3cb790578f 100644 --- a/configuration-backend-only.html +++ b/configuration-backend-only.html @@ -10,7 +10,7 @@ - + diff --git a/configuration-cli.html b/configuration-cli.html index d6f98967b2..232ef615b0 100644 --- a/configuration-cli.html +++ b/configuration-cli.html @@ -10,7 +10,7 @@ - + diff --git a/contributing-community.html b/contributing-community.html index b42f87dddc..93a7910562 100644 --- a/contributing-community.html +++ b/contributing-community.html @@ -10,7 +10,7 @@ - + diff --git a/contributing-github-issues.html b/contributing-github-issues.html index 66869d1015..22a2a39de5 100644 --- a/contributing-github-issues.html +++ b/contributing-github-issues.html @@ -10,7 +10,7 @@ - + diff --git a/contributing-how-to-contribute.html b/contributing-how-to-contribute.html index 2f1476459f..9157b2759a 100644 --- a/contributing-how-to-contribute.html +++ b/contributing-how-to-contribute.html @@ -10,7 +10,7 @@ - + diff --git a/contributing-telemetry.html b/contributing-telemetry.html index ca096c7ef8..1c22a483a4 100644 --- a/contributing-telemetry.html +++ b/contributing-telemetry.html @@ -10,7 +10,7 @@ - + diff --git a/deployment-docker.html b/deployment-docker.html index 53bbee3224..4ac7638c57 100644 --- a/deployment-docker.html +++ b/deployment-docker.html @@ -10,7 +10,7 @@ - + diff --git a/deployment-gcp.html b/deployment-gcp.html index 2471101e23..4479282645 100644 --- a/deployment-gcp.html +++ b/deployment-gcp.html @@ -10,7 +10,7 @@ - + diff --git a/deployment-hugging-face-spaces.html b/deployment-hugging-face-spaces.html index 5fe578fe95..684d8baec9 100644 --- a/deployment-hugging-face-spaces.html +++ b/deployment-hugging-face-spaces.html @@ -10,7 +10,7 @@ - + diff --git a/deployment-kubernetes.html b/deployment-kubernetes.html index 0d4bd7c241..755ece3284 100644 --- a/deployment-kubernetes.html +++ b/deployment-kubernetes.html @@ -10,7 +10,7 @@ - + diff --git a/deployment-railway.html b/deployment-railway.html index 005a8717b1..3c073086b1 100644 --- a/deployment-railway.html +++ b/deployment-railway.html @@ -10,7 +10,7 @@ - + diff --git a/deployment-render.html b/deployment-render.html index 198e6e8ce6..5009a2946b 100644 --- a/deployment-render.html +++ b/deployment-render.html @@ -10,7 +10,7 @@ - + diff --git a/environment-variables.html b/environment-variables.html index 06bdb7de66..297c48bb8e 100644 --- a/environment-variables.html +++ b/environment-variables.html @@ -10,7 +10,7 @@ - + diff --git a/getting-started-common-installation-issues.html b/getting-started-common-installation-issues.html index 90277909e6..750c2ffd0d 100644 --- a/getting-started-common-installation-issues.html +++ b/getting-started-common-installation-issues.html @@ -10,7 +10,7 @@ - + diff --git a/getting-started-installation.html b/getting-started-installation.html index b1e7f321fa..a03416cad1 100644 --- a/getting-started-installation.html +++ b/getting-started-installation.html @@ -10,7 +10,7 @@ - + diff --git a/getting-started-quickstart.html b/getting-started-quickstart.html index 6804474b53..4ad1a59ec7 100644 --- a/getting-started-quickstart.html +++ b/getting-started-quickstart.html @@ -10,7 +10,7 @@ - + diff --git a/guides-chat-memory.html b/guides-chat-memory.html index 8d91500a63..f9dfec7275 100644 --- a/guides-chat-memory.html +++ b/guides-chat-memory.html @@ -10,7 +10,7 @@ - + diff --git a/guides-data-message.html b/guides-data-message.html index eda9274b65..1456c49dd5 100644 --- a/guides-data-message.html +++ b/guides-data-message.html @@ -10,7 +10,7 @@ - + diff --git a/guides-new-to-llms.html b/guides-new-to-llms.html index cc8d01631a..85ce472014 100644 --- a/guides-new-to-llms.html +++ b/guides-new-to-llms.html @@ -10,7 +10,7 @@ - + diff --git a/index.html b/index.html index 96d2f0a9d6..81c132ccec 100644 --- a/index.html +++ b/index.html @@ -10,7 +10,7 @@ - + diff --git a/integrations-assemblyai.html b/integrations-assemblyai.html index 20fe7f92e9..8cbebf74c3 100644 --- a/integrations-assemblyai.html +++ b/integrations-assemblyai.html @@ -10,7 +10,7 @@ - + diff --git a/integrations-langfuse.html b/integrations-langfuse.html index 8ca82b6b3c..e45cfa4c61 100644 --- a/integrations-langfuse.html +++ b/integrations-langfuse.html @@ -10,7 +10,7 @@ - + diff --git a/integrations-langsmith.html b/integrations-langsmith.html index 7a836fbc16..ba491f3a90 100644 --- a/integrations-langsmith.html +++ b/integrations-langsmith.html @@ -10,7 +10,7 @@ - + diff --git a/integrations-langwatch.html b/integrations-langwatch.html index d154294ab2..581d563f9c 100644 --- a/integrations-langwatch.html +++ b/integrations-langwatch.html @@ -10,7 +10,7 @@ - + diff --git a/integrations/notion/notion-agent-conversational.html b/integrations/notion/notion-agent-conversational.html index 3786146585..392ff3efd0 100644 --- a/integrations/notion/notion-agent-conversational.html +++ b/integrations/notion/notion-agent-conversational.html @@ -10,7 +10,7 @@ - + diff --git a/integrations/notion/notion-agent-meeting-notes.html b/integrations/notion/notion-agent-meeting-notes.html index 52da5e44fc..60af0c03af 100644 --- a/integrations/notion/notion-agent-meeting-notes.html +++ b/integrations/notion/notion-agent-meeting-notes.html @@ -10,7 +10,7 @@ - + diff --git a/integrations/notion/setup.html b/integrations/notion/setup.html index 4e2b4f49d8..3d1e2420af 100644 --- a/integrations/notion/setup.html +++ b/integrations/notion/setup.html @@ -10,7 +10,7 @@ - + diff --git a/settings-global-variables.html b/settings-global-variables.html index c1fa250c1a..29608458be 100644 --- a/settings-global-variables.html +++ b/settings-global-variables.html @@ -10,7 +10,7 @@ - + diff --git a/settings-project-general-settings.html b/settings-project-general-settings.html index 83d3ee9dae..54bbc94df4 100644 --- a/settings-project-general-settings.html +++ b/settings-project-general-settings.html @@ -10,7 +10,7 @@ - + diff --git a/sitemap.xml b/sitemap.xml index 477480655d..ad17ec9738 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://docs.langflow.org/365085a8-a90a-43f9-a779-f8769ec7eca12024-11-08T14:00:43.000Zhttps://docs.langflow.org/components2024-11-08T14:00:43.000Zhttps://docs.langflow.org/components-custom-components2024-11-08T14:00:43.000Zhttps://docs.langflow.org/components-data2024-11-08T14:00:43.000Zhttps://docs.langflow.org/components-embedding-models2024-11-08T14:00:43.000Zhttps://docs.langflow.org/components-helpers2024-11-08T14:00:43.000Zhttps://docs.langflow.org/components-io2024-11-08T14:00:43.000Zhttps://docs.langflow.org/components-loaders2024-11-08T14:00:43.000Zhttps://docs.langflow.org/components-models2024-11-08T14:00:43.000Zhttps://docs.langflow.org/components-prompts2024-11-08T14:00:43.000Zhttps://docs.langflow.org/components-rag2024-11-08T14:00:43.000Zhttps://docs.langflow.org/components-vector-stores2024-11-08T14:00:43.000Zhttps://docs.langflow.org/Components/components-agents2024-11-08T14:00:43.000Zhttps://docs.langflow.org/Components/components-memories2024-11-08T14:00:43.000Zhttps://docs.langflow.org/Components/components-tools2024-11-08T14:00:43.000Zhttps://docs.langflow.org/configuration-api-keys2024-11-08T14:00:43.000Zhttps://docs.langflow.org/configuration-authentication2024-11-08T14:00:43.000Zhttps://docs.langflow.org/configuration-auto-save2024-11-08T14:00:43.000Zhttps://docs.langflow.org/configuration-backend-only2024-11-08T14:00:43.000Zhttps://docs.langflow.org/configuration-cli2024-11-08T14:00:43.000Zhttps://docs.langflow.org/contributing-community2024-11-08T14:00:43.000Zhttps://docs.langflow.org/contributing-github-issues2024-11-08T14:00:43.000Zhttps://docs.langflow.org/contributing-how-to-contribute2024-11-08T14:00:43.000Zhttps://docs.langflow.org/contributing-telemetry2024-11-08T14:00:43.000Zhttps://docs.langflow.org/deployment-docker2024-11-08T14:00:43.000Zhttps://docs.langflow.org/deployment-gcp2024-11-08T14:00:43.000Zhttps://docs.langflow.org/deployment-hugging-face-spaces2024-11-08T14:00:43.000Zhttps://docs.langflow.org/deployment-kubernetes2024-11-08T14:00:43.000Zhttps://docs.langflow.org/deployment-railway2024-11-08T14:00:43.000Zhttps://docs.langflow.org/deployment-render2024-11-08T14:00:43.000Zhttps://docs.langflow.org/environment-variables2024-11-08T14:00:43.000Zhttps://docs.langflow.org/getting-started-common-installation-issues2024-11-08T14:00:43.000Zhttps://docs.langflow.org/getting-started-installation2024-11-08T14:00:43.000Zhttps://docs.langflow.org/getting-started-quickstart2024-11-08T14:00:43.000Zhttps://docs.langflow.org/guides-chat-memory2024-11-08T14:00:43.000Zhttps://docs.langflow.org/guides-data-message2024-11-08T14:00:43.000Zhttps://docs.langflow.org/guides-new-to-llms2024-11-08T14:00:43.000Zhttps://docs.langflow.org/integrations-assemblyai2024-11-08T14:00:43.000Zhttps://docs.langflow.org/integrations-langfuse2024-11-08T14:00:43.000Zhttps://docs.langflow.org/integrations-langsmith2024-11-08T14:00:43.000Zhttps://docs.langflow.org/integrations-langwatch2024-11-08T14:00:43.000Zhttps://docs.langflow.org/integrations/notion/notion-agent-conversational2024-11-08T14:00:43.000Zhttps://docs.langflow.org/integrations/notion/notion-agent-meeting-notes2024-11-08T14:00:43.000Zhttps://docs.langflow.org/integrations/notion/setup2024-11-08T14:00:43.000Zhttps://docs.langflow.org/settings-global-variables2024-11-08T14:00:43.000Zhttps://docs.langflow.org/settings-project-general-settings2024-11-08T14:00:43.000Zhttps://docs.langflow.org/starter-projects-basic-prompting2024-11-08T14:00:43.000Zhttps://docs.langflow.org/starter-projects-blog-writer2024-11-08T14:00:43.000Zhttps://docs.langflow.org/starter-projects-document-qa2024-11-08T14:00:43.000Zhttps://docs.langflow.org/starter-projects-memory-chatbot2024-11-08T14:00:43.000Zhttps://docs.langflow.org/starter-projects-vector-store-rag2024-11-08T14:00:43.000Zhttps://docs.langflow.org/Starter-Projects/starter-projects-dynamic-agent2024-11-08T14:00:43.000Zhttps://docs.langflow.org/Starter-Projects/starter-projects-simple-agent2024-11-08T14:00:43.000Zhttps://docs.langflow.org/Starter-Projects/starter-projects-travel-planning-agent2024-11-08T14:00:43.000Zhttps://docs.langflow.org/whats-new-a-new-chapter-langflow2024-11-08T14:00:43.000Zhttps://docs.langflow.org/workspace2024-11-08T14:00:43.000Zhttps://docs.langflow.org/workspace-api2024-11-08T14:00:43.000Zhttps://docs.langflow.org/workspace-logs2024-11-08T14:00:43.000Zhttps://docs.langflow.org/workspace-playground2024-11-08T14:00:43.000Zhttps://docs.langflow.org/2024-11-08T14:00:43.000Z \ No newline at end of file +https://docs.langflow.org/365085a8-a90a-43f9-a779-f8769ec7eca12024-11-08T22:09:28.000Zhttps://docs.langflow.org/components2024-11-08T22:09:28.000Zhttps://docs.langflow.org/components-custom-components2024-11-08T22:09:28.000Zhttps://docs.langflow.org/components-data2024-11-08T22:09:28.000Zhttps://docs.langflow.org/components-embedding-models2024-11-08T22:09:28.000Zhttps://docs.langflow.org/components-helpers2024-11-08T22:09:28.000Zhttps://docs.langflow.org/components-io2024-11-08T22:09:28.000Zhttps://docs.langflow.org/components-loaders2024-11-08T22:09:28.000Zhttps://docs.langflow.org/components-models2024-11-08T22:09:28.000Zhttps://docs.langflow.org/components-prompts2024-11-08T22:09:28.000Zhttps://docs.langflow.org/components-rag2024-11-08T22:09:28.000Zhttps://docs.langflow.org/components-vector-stores2024-11-08T22:09:28.000Zhttps://docs.langflow.org/Components/components-agents2024-11-08T22:09:28.000Zhttps://docs.langflow.org/Components/components-memories2024-11-08T22:09:28.000Zhttps://docs.langflow.org/Components/components-tools2024-11-08T22:09:28.000Zhttps://docs.langflow.org/configuration-api-keys2024-11-08T22:09:28.000Zhttps://docs.langflow.org/configuration-authentication2024-11-08T22:09:28.000Zhttps://docs.langflow.org/configuration-auto-save2024-11-08T22:09:28.000Zhttps://docs.langflow.org/configuration-backend-only2024-11-08T22:09:28.000Zhttps://docs.langflow.org/configuration-cli2024-11-08T22:09:28.000Zhttps://docs.langflow.org/contributing-community2024-11-08T22:09:28.000Zhttps://docs.langflow.org/contributing-github-issues2024-11-08T22:09:28.000Zhttps://docs.langflow.org/contributing-how-to-contribute2024-11-08T22:09:28.000Zhttps://docs.langflow.org/contributing-telemetry2024-11-08T22:09:28.000Zhttps://docs.langflow.org/deployment-docker2024-11-08T22:09:28.000Zhttps://docs.langflow.org/deployment-gcp2024-11-08T22:09:28.000Zhttps://docs.langflow.org/deployment-hugging-face-spaces2024-11-08T22:09:28.000Zhttps://docs.langflow.org/deployment-kubernetes2024-11-08T22:09:28.000Zhttps://docs.langflow.org/deployment-railway2024-11-08T22:09:28.000Zhttps://docs.langflow.org/deployment-render2024-11-08T22:09:28.000Zhttps://docs.langflow.org/environment-variables2024-11-08T22:09:28.000Zhttps://docs.langflow.org/getting-started-common-installation-issues2024-11-08T22:09:28.000Zhttps://docs.langflow.org/getting-started-installation2024-11-08T22:09:28.000Zhttps://docs.langflow.org/getting-started-quickstart2024-11-08T22:09:28.000Zhttps://docs.langflow.org/guides-chat-memory2024-11-08T22:09:28.000Zhttps://docs.langflow.org/guides-data-message2024-11-08T22:09:28.000Zhttps://docs.langflow.org/guides-new-to-llms2024-11-08T22:09:28.000Zhttps://docs.langflow.org/integrations-assemblyai2024-11-08T22:09:28.000Zhttps://docs.langflow.org/integrations-langfuse2024-11-08T22:09:28.000Zhttps://docs.langflow.org/integrations-langsmith2024-11-08T22:09:28.000Zhttps://docs.langflow.org/integrations-langwatch2024-11-08T22:09:28.000Zhttps://docs.langflow.org/integrations/notion/notion-agent-conversational2024-11-08T22:09:28.000Zhttps://docs.langflow.org/integrations/notion/notion-agent-meeting-notes2024-11-08T22:09:28.000Zhttps://docs.langflow.org/integrations/notion/setup2024-11-08T22:09:28.000Zhttps://docs.langflow.org/settings-global-variables2024-11-08T22:09:28.000Zhttps://docs.langflow.org/settings-project-general-settings2024-11-08T22:09:28.000Zhttps://docs.langflow.org/starter-projects-basic-prompting2024-11-08T22:09:28.000Zhttps://docs.langflow.org/starter-projects-blog-writer2024-11-08T22:09:28.000Zhttps://docs.langflow.org/starter-projects-document-qa2024-11-08T22:09:28.000Zhttps://docs.langflow.org/starter-projects-memory-chatbot2024-11-08T22:09:28.000Zhttps://docs.langflow.org/starter-projects-vector-store-rag2024-11-08T22:09:28.000Zhttps://docs.langflow.org/Starter-Projects/starter-projects-dynamic-agent2024-11-08T22:09:28.000Zhttps://docs.langflow.org/Starter-Projects/starter-projects-simple-agent2024-11-08T22:09:28.000Zhttps://docs.langflow.org/Starter-Projects/starter-projects-travel-planning-agent2024-11-08T22:09:28.000Zhttps://docs.langflow.org/whats-new-a-new-chapter-langflow2024-11-08T22:09:28.000Zhttps://docs.langflow.org/workspace2024-11-08T22:09:28.000Zhttps://docs.langflow.org/workspace-api2024-11-08T22:09:28.000Zhttps://docs.langflow.org/workspace-logs2024-11-08T22:09:28.000Zhttps://docs.langflow.org/workspace-playground2024-11-08T22:09:28.000Zhttps://docs.langflow.org/2024-11-08T22:09:28.000Z \ No newline at end of file diff --git a/starter-projects-basic-prompting.html b/starter-projects-basic-prompting.html index 6c6180d076..07c17d299e 100644 --- a/starter-projects-basic-prompting.html +++ b/starter-projects-basic-prompting.html @@ -10,7 +10,7 @@ - + diff --git a/starter-projects-blog-writer.html b/starter-projects-blog-writer.html index bc89302a22..0e4ed016f5 100644 --- a/starter-projects-blog-writer.html +++ b/starter-projects-blog-writer.html @@ -10,7 +10,7 @@ - + diff --git a/starter-projects-document-qa.html b/starter-projects-document-qa.html index 3daccb23c0..ae7f64b7e5 100644 --- a/starter-projects-document-qa.html +++ b/starter-projects-document-qa.html @@ -10,7 +10,7 @@ - + diff --git a/starter-projects-memory-chatbot.html b/starter-projects-memory-chatbot.html index 0ad03d0019..7b66b96958 100644 --- a/starter-projects-memory-chatbot.html +++ b/starter-projects-memory-chatbot.html @@ -10,7 +10,7 @@ - + diff --git a/starter-projects-vector-store-rag.html b/starter-projects-vector-store-rag.html index 319c308ac6..fe95500d32 100644 --- a/starter-projects-vector-store-rag.html +++ b/starter-projects-vector-store-rag.html @@ -10,7 +10,7 @@ - + diff --git a/whats-new-a-new-chapter-langflow.html b/whats-new-a-new-chapter-langflow.html index cfeacd4f9a..c46d62dd84 100644 --- a/whats-new-a-new-chapter-langflow.html +++ b/whats-new-a-new-chapter-langflow.html @@ -10,7 +10,7 @@ - + diff --git a/workspace-api.html b/workspace-api.html index a3264270b3..021bccb888 100644 --- a/workspace-api.html +++ b/workspace-api.html @@ -10,7 +10,7 @@ - + diff --git a/workspace-logs.html b/workspace-logs.html index 9791bb5d41..00ce666ba2 100644 --- a/workspace-logs.html +++ b/workspace-logs.html @@ -10,7 +10,7 @@ - + diff --git a/workspace-playground.html b/workspace-playground.html index 554dcc5fcc..7cee0c754a 100644 --- a/workspace-playground.html +++ b/workspace-playground.html @@ -10,7 +10,7 @@ - + diff --git a/workspace.html b/workspace.html index dd119a209e..d8ce4ab3a6 100644 --- a/workspace.html +++ b/workspace.html @@ -10,7 +10,7 @@ - +