├── .dockerignore ├── .eslintrc.js ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── docker-image.yml │ ├── main.yml │ └── test_docker_build.yml ├── .gitignore ├── .husky └── pre-commit ├── .npmrc ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE.md ├── README.md ├── SECURITY.md ├── artillery-load-test.yml ├── assets ├── Demo.png ├── FloWiseAI.png ├── FloWiseAI_black.png ├── FloWiseAI_dark.png └── FloWiseAI_primary.png ├── docker ├── .env.example ├── Dockerfile ├── README.md ├── docker-compose.yml └── worker │ ├── README.md │ └── docker-compose.yml ├── i18n ├── CODE_OF_CONDUCT-ZH.md ├── CONTRIBUTING-ZH.md ├── README-JA.md ├── README-KR.md ├── README-TW.md └── README-ZH.md ├── images ├── flowise.gif ├── flowise.png ├── flowise_agentflow.gif ├── flowise_dark.svg └── flowise_white.svg ├── metrics ├── grafana │ ├── grafana.dashboard.app.json.txt │ └── grafana.dashboard.server.json.txt ├── otel │ ├── compose.yaml │ └── otel.config.yml └── prometheus │ └── prometheus.config.yml ├── package.json ├── packages ├── api-documentation │ ├── README-ZH.md │ ├── README.md │ ├── nodemon.json │ ├── package.json │ ├── src │ │ ├── configs │ │ │ └── swagger.config.ts │ │ ├── index.ts │ │ └── yml │ │ │ └── swagger.yml │ └── tsconfig.json ├── components │ ├── README-ZH.md │ ├── README.md │ ├── credentials │ │ ├── AWSCredential.credential.ts │ │ ├── AirtableApi.credential.ts │ │ ├── AlibabaApi.credential.ts │ │ ├── AnthropicApi.credential.ts │ │ ├── ApifyApi.credential.ts │ │ ├── ArizeApi.credential.ts │ │ ├── AssemblyAI.credential.ts │ │ ├── AstraApi.credential.ts │ │ ├── AzureCognitiveServices.credential.ts │ │ ├── AzureOpenAIApi.credential.ts │ │ ├── BaiduApi.credential.ts │ │ ├── BraveSearchApi.credential.ts │ │ ├── CerebrasApi.credential.ts │ │ ├── ChatflowApi.credential.ts │ │ ├── ChromaApi.credential.ts │ │ ├── CohereApi.credential.ts │ │ ├── ComposioApi.credential.ts │ │ ├── ConfluenceCloudApi.credential.ts │ │ ├── ConfluenceServerDCApi.credential.ts │ │ ├── CouchbaseApi.credential.ts │ │ ├── DeepseekApi.credential.ts │ │ ├── DynamodbMemoryApi.credential.ts │ │ ├── E2B.credential.ts │ │ ├── ElasticsearchAPI.credential.ts │ │ ├── ElectricsearchUserPassword.credential.ts │ │ ├── ExaSearchApi.credential.ts │ │ ├── FigmaApi.credential.ts │ │ ├── FireCrawlApi.credential.ts │ │ ├── FireworksApi.credential.ts │ │ ├── GithubApi.credential.ts │ │ ├── GoogleAuth.credential.ts │ │ ├── GoogleGenerativeAI.credential.ts │ │ ├── GoogleMakerSuite.credential.ts │ │ ├── GoogleSearchApi.credential.ts │ │ ├── GroqApi.credential.ts │ │ ├── HTTPApiKey.credential.ts │ │ ├── HTTPBasicAuth.credential.ts │ │ ├── HTTPBearerToken.credential.ts │ │ ├── HuggingFaceApi.credential.ts │ │ ├── IBMWatsonx.credential.ts │ │ ├── JinaApi.credential.ts │ │ ├── JiraApi.credential.ts │ │ ├── LangWatchApi.credential.ts │ │ ├── LangfuseApi.credential.ts │ │ ├── LangsmithApi.credential.ts │ │ ├── LitellmApi.credential.ts │ │ ├── LocalAIApi.credential.ts │ │ ├── LunaryApi.credential.ts │ │ ├── MeilisearchApi.credential.ts │ │ ├── Mem0MemoryApi.credential.ts │ │ ├── MilvusAuth.credential.ts │ │ ├── MistralApi.credential.ts │ │ ├── MomentoCacheApi.credential.ts │ │ ├── MongoDBUrlApi.credential.ts │ │ ├── MySQLApi.credential.ts │ │ ├── Neo4jApi.credential.ts │ │ ├── NotionApi.credential.ts │ │ ├── NvdiaNIMApi.credential.ts │ │ ├── OpenAIApi.credential.ts │ │ ├── OpenRouterApi.credential.ts │ │ ├── OpenSearchUrl.credential.ts │ │ ├── OpikApi.credential.ts │ │ ├── PerplexityApi.credential.ts │ │ ├── PhoenixApi.credential.ts │ │ ├── PineconeApi.credential.ts │ │ ├── PostgresApi.credential.ts │ │ ├── PostgresUrl.credential.ts │ │ ├── QdrantApi.credential.ts │ │ ├── RedisCacheApi.credential.ts │ │ ├── RedisCacheUrlApi.credential.ts │ │ ├── ReplicateApi.credential.ts │ │ ├── SearchApi.credential.ts │ │ ├── SerpApi.credential.ts │ │ ├── SerperApi.credential.ts │ │ ├── SingleStoreApi.credential.ts │ │ ├── SlackApi.credential.ts │ │ ├── SpiderApi.credential.ts │ │ ├── StripeApi.credential.ts │ │ ├── SupabaseApi.credential.ts │ │ ├── TavilyApi.credential.ts │ │ ├── TogetherAIApi.credential.ts │ │ ├── UnstructuredApi.credential.ts │ │ ├── UpstashRedisApi.credential.ts │ │ ├── UpstashRedisMemoryApi.credential.ts │ │ ├── UpstashVectorApi.credential.ts │ │ ├── VectaraApi.credential.ts │ │ ├── VoyageAIApi.credential.ts │ │ ├── WeaviateApi.credential.ts │ │ ├── WolframAlphaApp.credential.ts │ │ ├── XaiApi.credential.ts │ │ └── ZepMemoryApi.credential.ts │ ├── evaluation │ │ ├── EvaluationRunTracer.ts │ │ ├── EvaluationRunTracerLlama.ts │ │ └── EvaluationRunner.ts │ ├── gulpfile.ts │ ├── models.json │ ├── nodes │ │ ├── agentflow │ │ │ ├── Agent │ │ │ │ └── Agent.ts │ │ │ ├── Condition │ │ │ │ └── Condition.ts │ │ │ ├── ConditionAgent │ │ │ │ └── ConditionAgent.ts │ │ │ ├── CustomFunction │ │ │ │ └── CustomFunction.ts │ │ │ ├── DirectReply │ │ │ │ └── DirectReply.ts │ │ │ ├── ExecuteFlow │ │ │ │ └── ExecuteFlow.ts │ │ │ ├── HTTP │ │ │ │ └── HTTP.ts │ │ │ ├── HumanInput │ │ │ │ └── HumanInput.ts │ │ │ ├── Interface.Agentflow.ts │ │ │ ├── Iteration │ │ │ │ └── Iteration.ts │ │ │ ├── LLM │ │ │ │ └── LLM.ts │ │ │ ├── Loop │ │ │ │ └── Loop.ts │ │ │ ├── Retriever │ │ │ │ └── Retriever.ts │ │ │ ├── Start │ │ │ │ └── Start.ts │ │ │ ├── StickyNote │ │ │ │ └── StickyNote.ts │ │ │ ├── Tool │ │ │ │ └── Tool.ts │ │ │ ├── prompt.ts │ │ │ └── utils.ts │ │ ├── agents │ │ │ ├── AirtableAgent │ │ │ │ ├── AirtableAgent.ts │ │ │ │ ├── airtable.svg │ │ │ │ └── core.ts │ │ │ ├── AutoGPT │ │ │ │ ├── AutoGPT.ts │ │ │ │ └── autogpt.svg │ │ │ ├── BabyAGI │ │ │ │ ├── BabyAGI.ts │ │ │ │ ├── babyagi.svg │ │ │ │ └── core.ts │ │ │ ├── CSVAgent │ │ │ │ ├── CSVAgent.ts │ │ │ │ ├── CSVagent.svg │ │ │ │ └── core.ts │ │ │ ├── ConversationalAgent │ │ │ │ ├── ConversationalAgent.ts │ │ │ │ └── agent.svg │ │ │ ├── ConversationalRetrievalToolAgent │ │ │ │ ├── ConversationalRetrievalToolAgent.ts │ │ │ │ └── toolAgent.png │ │ │ ├── LlamaIndexAgents │ │ │ │ ├── AnthropicAgent │ │ │ │ │ ├── Anthropic.svg │ │ │ │ │ └── AnthropicAgent_LlamaIndex.ts │ │ │ │ └── OpenAIToolAgent │ │ │ │ │ ├── OpenAIToolAgent_LlamaIndex.ts │ │ │ │ │ └── function.svg │ │ │ ├── OpenAIAssistant │ │ │ │ ├── OpenAIAssistant.ts │ │ │ │ └── assistant.svg │ │ │ ├── ReActAgentChat │ │ │ │ ├── ReActAgentChat.ts │ │ │ │ └── agent.svg │ │ │ ├── ReActAgentLLM │ │ │ │ ├── ReActAgentLLM.ts │ │ │ │ └── agent.svg │ │ │ ├── ToolAgent │ │ │ │ ├── ToolAgent.ts │ │ │ │ └── toolAgent.png │ │ │ └── XMLAgent │ │ │ │ ├── XMLAgent.ts │ │ │ │ └── xmlagent.svg │ │ ├── analytic │ │ │ ├── Arize │ │ │ │ ├── Arize.ts │ │ │ │ └── arize.png │ │ │ ├── LangFuse │ │ │ │ ├── LangFuse.ts │ │ │ │ └── Langfuse.svg │ │ │ ├── LangSmith │ │ │ │ ├── LangSmith.ts │ │ │ │ └── langchain.png │ │ │ ├── LangWatch │ │ │ │ ├── LangWatch.svg │ │ │ │ └── LangWatch.ts │ │ │ ├── Lunary │ │ │ │ ├── Lunary.svg │ │ │ │ └── Lunary.ts │ │ │ ├── Opik │ │ │ │ ├── Opik.ts │ │ │ │ └── opik.png │ │ │ └── Phoenix │ │ │ │ ├── Phoenix.ts │ │ │ │ └── phoenix.png │ │ ├── cache │ │ │ ├── GoogleGenerativeAIContextCache │ │ │ │ ├── FlowiseGoogleAICacheManager.ts │ │ │ │ ├── GoogleGemini.svg │ │ │ │ └── GoogleGenerativeAIContextCache.ts │ │ │ ├── InMemoryCache │ │ │ │ ├── InMemoryCache.ts │ │ │ │ ├── InMemoryEmbeddingCache.ts │ │ │ │ └── Memory.svg │ │ │ ├── MomentoCache │ │ │ │ ├── Momento.svg │ │ │ │ └── MomentoCache.ts │ │ │ ├── RedisCache │ │ │ │ ├── RedisCache.ts │ │ │ │ ├── RedisEmbeddingsCache.ts │ │ │ │ └── redis.svg │ │ │ └── UpstashRedisCache │ │ │ │ ├── Upstash.svg │ │ │ │ └── UpstashRedisCache.ts │ │ ├── chains │ │ │ ├── ApiChain │ │ │ │ ├── GETApiChain.ts │ │ │ │ ├── OpenAPIChain.ts │ │ │ │ ├── POSTApiChain.ts │ │ │ │ ├── get.svg │ │ │ │ ├── openapi.svg │ │ │ │ ├── post.svg │ │ │ │ └── postCore.ts │ │ │ ├── ConversationChain │ │ │ │ ├── ConversationChain.ts │ │ │ │ └── conv.svg │ │ │ ├── ConversationalRetrievalQAChain │ │ │ │ ├── ConversationalRetrievalQAChain.ts │ │ │ │ ├── prompts.ts │ │ │ │ └── qa.svg │ │ │ ├── GraphCypherQAChain │ │ │ │ ├── GraphCypherQAChain.ts │ │ │ │ └── graphqa.svg │ │ │ ├── LLMChain │ │ │ │ ├── LLMChain.ts │ │ │ │ ├── LLM_Chain.svg │ │ │ │ └── chain.svg │ │ │ ├── MultiPromptChain │ │ │ │ ├── MultiPromptChain.ts │ │ │ │ └── prompt.svg │ │ │ ├── MultiRetrievalQAChain │ │ │ │ ├── MultiRetrievalQAChain.ts │ │ │ │ └── qa.svg │ │ │ ├── RetrievalQAChain │ │ │ │ ├── RetrievalQAChain.ts │ │ │ │ └── qa.svg │ │ │ ├── SqlDatabaseChain │ │ │ │ ├── SqlDatabaseChain.ts │ │ │ │ └── sqlchain.svg │ │ │ ├── VectaraChain │ │ │ │ ├── VectaraChain.ts │ │ │ │ └── vectara.png │ │ │ └── VectorDBQAChain │ │ │ │ ├── VectorDBQAChain.ts │ │ │ │ └── vectordb.svg │ │ ├── chatmodels │ │ │ ├── AWSBedrock │ │ │ │ ├── AWSChatBedrock.ts │ │ │ │ ├── FlowiseAWSChatBedrock.ts │ │ │ │ └── aws.svg │ │ │ ├── AzureChatOpenAI │ │ │ │ ├── Azure.svg │ │ │ │ ├── AzureChatOpenAI.ts │ │ │ │ ├── AzureChatOpenAI_LlamaIndex.ts │ │ │ │ ├── FlowiseAzureChatOpenAI.ts │ │ │ │ └── README.md │ │ │ ├── ChatAlibabaTongyi │ │ │ │ ├── ChatAlibabaTongyi.ts │ │ │ │ └── alibaba-svgrepo-com.svg │ │ │ ├── ChatAnthropic │ │ │ │ ├── Anthropic.svg │ │ │ │ ├── ChatAnthropic.ts │ │ │ │ ├── ChatAnthropic_LlamaIndex.ts │ │ │ │ └── FlowiseChatAnthropic.ts │ │ │ ├── ChatBaiduWenxin │ │ │ │ ├── ChatBaiduWenxin.ts │ │ │ │ └── baiduwenxin.svg │ │ │ ├── ChatCerebras │ │ │ │ ├── ChatCerebras.ts │ │ │ │ └── cerebras.png │ │ │ ├── ChatCohere │ │ │ │ ├── ChatCohere.ts │ │ │ │ └── Cohere.svg │ │ │ ├── ChatFireworks │ │ │ │ ├── ChatFireworks.ts │ │ │ │ └── Fireworks.png │ │ │ ├── ChatGoogleGenerativeAI │ │ │ │ ├── ChatGoogleGenerativeAI.ts │ │ │ │ ├── FlowiseChatGoogleGenerativeAI.ts │ │ │ │ └── GoogleGemini.svg │ │ │ ├── ChatGoogleVertexAI │ │ │ │ ├── ChatGoogleVertexAI.ts │ │ │ │ └── GoogleVertex.svg │ │ │ ├── ChatHuggingFace │ │ │ │ ├── ChatHuggingFace.ts │ │ │ │ ├── HuggingFace.svg │ │ │ │ └── core.ts │ │ │ ├── ChatIBMWatsonx │ │ │ │ ├── ChatIBMWatsonx.ts │ │ │ │ └── ibm.png │ │ │ ├── ChatLitellm │ │ │ │ ├── ChatLitellm.ts │ │ │ │ └── litellm.jpg │ │ │ ├── ChatLocalAI │ │ │ │ ├── ChatLocalAI.ts │ │ │ │ └── localai.png │ │ │ ├── ChatMistral │ │ │ │ ├── ChatMistral.ts │ │ │ │ ├── ChatMistral_LlamaIndex.ts │ │ │ │ └── MistralAI.svg │ │ │ ├── ChatNemoGuardrails │ │ │ │ ├── ChatNemoGuardrails.ts │ │ │ │ ├── NemoClient.ts │ │ │ │ ├── nemo.svg │ │ │ │ └── readme.md │ │ │ ├── ChatNvdiaNIM │ │ │ │ ├── ChatNvdiaNIM.ts │ │ │ │ └── nvdia.svg │ │ │ ├── ChatOllama │ │ │ │ ├── ChatOllama.ts │ │ │ │ ├── ChatOllama_LlamaIndex.ts │ │ │ │ ├── FlowiseChatOllama.ts │ │ │ │ └── Ollama.svg │ │ │ ├── ChatOpenAI │ │ │ │ ├── ChatOpenAI.ts │ │ │ │ ├── ChatOpenAI_LlamaIndex.ts │ │ │ │ ├── FlowiseChatOpenAI.ts │ │ │ │ └── openai.svg │ │ │ ├── ChatOpenAICustom │ │ │ │ ├── ChatOpenAICustom.ts │ │ │ │ └── openai.svg │ │ │ ├── ChatOpenRouter │ │ │ │ ├── ChatOpenRouter.ts │ │ │ │ └── openRouter.svg │ │ │ ├── ChatPerplexity │ │ │ │ ├── ChatPerplexity.ts │ │ │ │ ├── FlowiseChatPerplexity.ts │ │ │ │ └── perplexity.svg │ │ │ ├── ChatTogetherAI │ │ │ │ ├── ChatTogetherAI.ts │ │ │ │ ├── ChatTogether_LlamaIndex.ts │ │ │ │ └── togetherai.png │ │ │ ├── ChatXAI │ │ │ │ ├── ChatXAI.ts │ │ │ │ └── xai.png │ │ │ ├── Deepseek │ │ │ │ ├── Deepseek.ts │ │ │ │ └── deepseek.svg │ │ │ └── Groq │ │ │ │ ├── ChatGroq_LlamaIndex.ts │ │ │ │ ├── Groq.ts │ │ │ │ └── groq.png │ │ ├── documentloaders │ │ │ ├── API │ │ │ │ ├── APILoader.ts │ │ │ │ └── api.svg │ │ │ ├── Airtable │ │ │ │ ├── Airtable.ts │ │ │ │ └── airtable.svg │ │ │ ├── ApifyWebsiteContentCrawler │ │ │ │ ├── ApifyWebsiteContentCrawler.ts │ │ │ │ └── apify-symbol-transparent.svg │ │ │ ├── BraveSearchAPI │ │ │ │ ├── BraveSearchAPI.ts │ │ │ │ └── brave.svg │ │ │ ├── Cheerio │ │ │ │ ├── Cheerio.ts │ │ │ │ └── cheerio.svg │ │ │ ├── Confluence │ │ │ │ ├── Confluence.ts │ │ │ │ └── confluence.svg │ │ │ ├── Csv │ │ │ │ ├── Csv.ts │ │ │ │ ├── CsvLoader.ts │ │ │ │ └── csv.svg │ │ │ ├── CustomDocumentLoader │ │ │ │ ├── CustomDocumentLoader.ts │ │ │ │ └── customDocLoader.svg │ │ │ ├── DocumentStore │ │ │ │ ├── DocStoreLoader.ts │ │ │ │ └── dstore.svg │ │ │ ├── Docx │ │ │ │ ├── Docx.ts │ │ │ │ └── docx.svg │ │ │ ├── Epub │ │ │ │ ├── Epub.ts │ │ │ │ └── epub.svg │ │ │ ├── Figma │ │ │ │ ├── Figma.ts │ │ │ │ └── figma.svg │ │ │ ├── File │ │ │ │ ├── File.ts │ │ │ │ └── file.svg │ │ │ ├── FireCrawl │ │ │ │ ├── FireCrawl.ts │ │ │ │ └── firecrawl.png │ │ │ ├── Folder │ │ │ │ ├── Folder.ts │ │ │ │ └── folder.svg │ │ │ ├── Gitbook │ │ │ │ ├── Gitbook.ts │ │ │ │ └── gitbook.svg │ │ │ ├── Github │ │ │ │ ├── Github.ts │ │ │ │ └── github.svg │ │ │ ├── Jira │ │ │ │ ├── Jira.ts │ │ │ │ └── jira.svg │ │ │ ├── Json │ │ │ │ ├── Json.ts │ │ │ │ └── json.svg │ │ │ ├── Jsonlines │ │ │ │ ├── Jsonlines.ts │ │ │ │ └── jsonlines.svg │ │ │ ├── Notion │ │ │ │ ├── NotionDB.ts │ │ │ │ ├── NotionFolder.ts │ │ │ │ ├── NotionPage.ts │ │ │ │ ├── notion-db.svg │ │ │ │ ├── notion-folder.svg │ │ │ │ └── notion-page.svg │ │ │ ├── Pdf │ │ │ │ ├── Pdf.ts │ │ │ │ └── pdf.svg │ │ │ ├── PlainText │ │ │ │ ├── PlainText.ts │ │ │ │ └── plaintext.svg │ │ │ ├── Playwright │ │ │ │ ├── Playwright.ts │ │ │ │ └── playwright.svg │ │ │ ├── Puppeteer │ │ │ │ ├── Puppeteer.ts │ │ │ │ └── puppeteer.svg │ │ │ ├── S3Directory │ │ │ │ ├── S3Directory.ts │ │ │ │ └── s3.svg │ │ │ ├── S3File │ │ │ │ ├── README.md │ │ │ │ ├── S3File.ts │ │ │ │ └── s3.svg │ │ │ ├── SearchApi │ │ │ │ ├── SearchAPI.ts │ │ │ │ └── searchapi.svg │ │ │ ├── SerpApi │ │ │ │ ├── SerpAPI.ts │ │ │ │ └── serp.svg │ │ │ ├── Spider │ │ │ │ ├── Spider.ts │ │ │ │ ├── SpiderApp.ts │ │ │ │ └── spider.svg │ │ │ ├── Text │ │ │ │ ├── Text.ts │ │ │ │ └── Txt.svg │ │ │ ├── Unstructured │ │ │ │ ├── README.md │ │ │ │ ├── Unstructured.ts │ │ │ │ ├── UnstructuredFile.ts │ │ │ │ ├── UnstructuredFolder.ts │ │ │ │ ├── unstructured-file.svg │ │ │ │ └── unstructured-folder.svg │ │ │ └── VectorStoreToDocument │ │ │ │ ├── VectorStoreToDocument.ts │ │ │ │ └── vectorretriever.svg │ │ ├── embeddings │ │ │ ├── AWSBedrockEmbedding │ │ │ │ ├── AWSBedrockEmbedding.ts │ │ │ │ └── aws.svg │ │ │ ├── AzureOpenAIEmbedding │ │ │ │ ├── Azure.svg │ │ │ │ ├── AzureOpenAIEmbedding.ts │ │ │ │ ├── AzureOpenAIEmbedding_LlamaIndex.ts │ │ │ │ └── README.md │ │ │ ├── CohereEmbedding │ │ │ │ ├── Cohere.svg │ │ │ │ └── CohereEmbedding.ts │ │ │ ├── GoogleGenerativeAIEmbedding │ │ │ │ ├── GoogleGemini.svg │ │ │ │ └── GoogleGenerativeAIEmbedding.ts │ │ │ ├── GoogleVertexAIEmbedding │ │ │ │ ├── GoogleVertex.svg │ │ │ │ └── GoogleVertexAIEmbedding.ts │ │ │ ├── HuggingFaceInferenceEmbedding │ │ │ │ ├── HuggingFace.svg │ │ │ │ ├── HuggingFaceInferenceEmbedding.ts │ │ │ │ └── core.ts │ │ │ ├── IBMWatsonxEmbedding │ │ │ │ ├── IBMWatsonxEmbedding.ts │ │ │ │ └── ibm.png │ │ │ ├── JinaAIEmbedding │ │ │ │ ├── JinaAIEmbedding.svg │ │ │ │ └── JinaAIEmbedding.ts │ │ │ ├── LocalAIEmbedding │ │ │ │ ├── LocalAIEmbedding.ts │ │ │ │ └── localai.png │ │ │ ├── MistralEmbedding │ │ │ │ ├── MistralAI.svg │ │ │ │ └── MistralEmbedding.ts │ │ │ ├── OllamaEmbedding │ │ │ │ ├── Ollama.svg │ │ │ │ └── OllamaEmbedding.ts │ │ │ ├── OpenAIEmbedding │ │ │ │ ├── OpenAIEmbedding.ts │ │ │ │ ├── OpenAIEmbedding_LlamaIndex.ts │ │ │ │ └── openai.svg │ │ │ ├── OpenAIEmbeddingCustom │ │ │ │ ├── OpenAIEmbeddingCustom.ts │ │ │ │ └── openai.svg │ │ │ ├── TogetherAIEmbedding │ │ │ │ ├── TogetherAIEmbedding.ts │ │ │ │ └── togetherai.png │ │ │ └── VoyageAIEmbedding │ │ │ │ ├── VoyageAIEmbedding.ts │ │ │ │ └── voyageai.png │ │ ├── engine │ │ │ ├── ChatEngine │ │ │ │ ├── ContextChatEngine.ts │ │ │ │ ├── SimpleChatEngine.ts │ │ │ │ ├── chat-engine.png │ │ │ │ └── context-chat-engine.png │ │ │ ├── EngineUtils.ts │ │ │ ├── QueryEngine │ │ │ │ ├── QueryEngine.ts │ │ │ │ └── query-engine.png │ │ │ └── SubQuestionQueryEngine │ │ │ │ ├── SubQuestionQueryEngine.ts │ │ │ │ └── subQueryEngine.svg │ │ ├── graphs │ │ │ └── Neo4j │ │ │ │ ├── Neo4j.ts │ │ │ │ └── neo4j.svg │ │ ├── llms │ │ │ ├── AWSBedrock │ │ │ │ ├── AWSBedrock.ts │ │ │ │ └── aws.svg │ │ │ ├── Azure OpenAI │ │ │ │ ├── Azure.svg │ │ │ │ ├── AzureOpenAI.ts │ │ │ │ └── README.md │ │ │ ├── Cohere │ │ │ │ ├── Cohere.svg │ │ │ │ └── Cohere.ts │ │ │ ├── Fireworks │ │ │ │ ├── Fireworks.ts │ │ │ │ └── fireworks.png │ │ │ ├── GoogleVertexAI │ │ │ │ ├── GoogleVertex.svg │ │ │ │ └── GoogleVertexAI.ts │ │ │ ├── HuggingFaceInference │ │ │ │ ├── HuggingFace.svg │ │ │ │ ├── HuggingFaceInference.ts │ │ │ │ └── core.ts │ │ │ ├── IBMWatsonx │ │ │ │ ├── IBMWatsonx.ts │ │ │ │ └── ibm.png │ │ │ ├── Ollama │ │ │ │ ├── Ollama.svg │ │ │ │ └── Ollama.ts │ │ │ ├── OpenAI │ │ │ │ ├── OpenAI.ts │ │ │ │ └── openai.svg │ │ │ ├── Replicate │ │ │ │ ├── Replicate.ts │ │ │ │ ├── core.ts │ │ │ │ └── replicate.svg │ │ │ └── TogetherAI │ │ │ │ ├── TogetherAI.ts │ │ │ │ └── togetherai.png │ │ ├── memory │ │ │ ├── AgentMemory │ │ │ │ ├── AgentMemory.ts │ │ │ │ ├── MySQLAgentMemory │ │ │ │ │ ├── MySQLAgentMemory.ts │ │ │ │ │ ├── mysql.png │ │ │ │ │ └── mysqlSaver.ts │ │ │ │ ├── PostgresAgentMemory │ │ │ │ │ ├── PostgresAgentMemory.ts │ │ │ │ │ ├── pgSaver.ts │ │ │ │ │ └── postgres.svg │ │ │ │ ├── SQLiteAgentMemory │ │ │ │ │ ├── SQLiteAgentMemory.ts │ │ │ │ │ ├── sqlite.png │ │ │ │ │ └── sqliteSaver.ts │ │ │ │ ├── agentmemory.svg │ │ │ │ └── interface.ts │ │ │ ├── BufferMemory │ │ │ │ ├── BufferMemory.ts │ │ │ │ └── memory.svg │ │ │ ├── BufferWindowMemory │ │ │ │ ├── BufferWindowMemory.ts │ │ │ │ └── memory.svg │ │ │ ├── ConversationSummaryBufferMemory │ │ │ │ ├── ConversationSummaryBufferMemory.ts │ │ │ │ └── memory.svg │ │ │ ├── ConversationSummaryMemory │ │ │ │ ├── ConversationSummaryMemory.ts │ │ │ │ └── memory.svg │ │ │ ├── DynamoDb │ │ │ │ ├── DynamoDb.ts │ │ │ │ └── dynamodb.svg │ │ │ ├── Mem0 │ │ │ │ ├── Mem0.ts │ │ │ │ └── mem0.svg │ │ │ ├── MongoDBMemory │ │ │ │ ├── MongoDBMemory.ts │ │ │ │ └── mongodb.svg │ │ │ ├── RedisBackedChatMemory │ │ │ │ ├── RedisBackedChatMemory.ts │ │ │ │ └── redis.svg │ │ │ ├── UpstashRedisBackedChatMemory │ │ │ │ ├── UpstashRedisBackedChatMemory.ts │ │ │ │ └── upstash.svg │ │ │ ├── ZepMemory │ │ │ │ ├── ZepMemory.ts │ │ │ │ └── zep.svg │ │ │ └── ZepMemoryCloud │ │ │ │ ├── ZepMemoryCloud.ts │ │ │ │ └── zep.svg │ │ ├── moderation │ │ │ ├── Moderation.ts │ │ │ ├── OpenAIModeration │ │ │ │ ├── OpenAIModeration.ts │ │ │ │ ├── OpenAIModerationRunner.ts │ │ │ │ └── openai.svg │ │ │ └── SimplePromptModeration │ │ │ │ ├── SimplePromptModeration.ts │ │ │ │ ├── SimplePromptModerationRunner.ts │ │ │ │ └── moderation.svg │ │ ├── multiagents │ │ │ ├── Supervisor │ │ │ │ ├── Supervisor.ts │ │ │ │ └── supervisor.svg │ │ │ └── Worker │ │ │ │ ├── Worker.ts │ │ │ │ └── worker.svg │ │ ├── outputparsers │ │ │ ├── CSVListOutputParser │ │ │ │ ├── CSVListOutputParser.ts │ │ │ │ └── csv.svg │ │ │ ├── CustomListOutputParser │ │ │ │ ├── CustomListOutputParser.ts │ │ │ │ └── list.svg │ │ │ ├── OutputParserHelpers.ts │ │ │ ├── StructuredOutputParser │ │ │ │ ├── StructuredOutputParser.ts │ │ │ │ └── structure.svg │ │ │ └── StructuredOutputParserAdvanced │ │ │ │ ├── StructuredOutputParserAdvanced.ts │ │ │ │ └── structure.svg │ │ ├── prompts │ │ │ ├── ChatPromptTemplate │ │ │ │ ├── ChatPromptTemplate.ts │ │ │ │ └── prompt.svg │ │ │ ├── FewShotPromptTemplate │ │ │ │ ├── FewShotPromptTemplate.ts │ │ │ │ └── prompt.svg │ │ │ ├── PromptLangfuse │ │ │ │ ├── PromptLangfuse.ts │ │ │ │ └── prompt.svg │ │ │ └── PromptTemplate │ │ │ │ ├── PromptTemplate.ts │ │ │ │ └── prompt.svg │ │ ├── recordmanager │ │ │ ├── MySQLRecordManager │ │ │ │ ├── MySQLrecordManager.ts │ │ │ │ └── mysql.png │ │ │ ├── PostgresRecordManager │ │ │ │ ├── PostgresRecordManager.ts │ │ │ │ ├── README.md │ │ │ │ ├── postgres.svg │ │ │ │ └── utils.ts │ │ │ └── SQLiteRecordManager │ │ │ │ ├── SQLiteRecordManager.ts │ │ │ │ └── sqlite.png │ │ ├── responsesynthesizer │ │ │ ├── CompactRefine │ │ │ │ ├── CompactRefine.ts │ │ │ │ └── compactrefine.svg │ │ │ ├── Refine │ │ │ │ ├── Refine.ts │ │ │ │ └── refine.svg │ │ │ ├── SimpleResponseBuilder │ │ │ │ ├── SimpleResponseBuilder.ts │ │ │ │ └── simplerb.svg │ │ │ ├── TreeSummarize │ │ │ │ ├── TreeSummarize.ts │ │ │ │ └── treesummarize.svg │ │ │ └── base.ts │ │ ├── retrievers │ │ │ ├── AWSBedrockKBRetriever │ │ │ │ ├── AWSBedrockKBRetriever.svg │ │ │ │ └── AWSBedrockKBRetriever.ts │ │ │ ├── CohereRerankRetriever │ │ │ │ ├── Cohere.svg │ │ │ │ ├── CohereRerank.ts │ │ │ │ └── CohereRerankRetriever.ts │ │ │ ├── CustomRetriever │ │ │ │ ├── CustomRetriever.ts │ │ │ │ └── customRetriever.svg │ │ │ ├── EmbeddingsFilterRetriever │ │ │ │ ├── EmbeddingsFilterRetriever.ts │ │ │ │ └── compressionRetriever.svg │ │ │ ├── ExtractMetadataRetriever │ │ │ │ ├── ExtractMetadataRetriever.ts │ │ │ │ └── dynamicMetadataRetriever.svg │ │ │ ├── HydeRetriever │ │ │ │ ├── HydeRetriever.ts │ │ │ │ └── hyderetriever.svg │ │ │ ├── JinaRerankRetriever │ │ │ │ ├── JinaAI.svg │ │ │ │ ├── JinaRerank.ts │ │ │ │ └── JinaRerankRetriever.ts │ │ │ ├── LLMFilterRetriever │ │ │ │ ├── LLMFilterCompressionRetriever.ts │ │ │ │ └── llmFilterRetriever.svg │ │ │ ├── MultiQueryRetriever │ │ │ │ ├── MultiQueryRetriever.ts │ │ │ │ └── multiQueryRetriever.svg │ │ │ ├── PromptRetriever │ │ │ │ ├── PromptRetriever.ts │ │ │ │ └── promptretriever.svg │ │ │ ├── RRFRetriever │ │ │ │ ├── RRFRetriever.ts │ │ │ │ ├── ReciprocalRankFusion.ts │ │ │ │ └── rrfRetriever.svg │ │ │ ├── SimilarityThresholdRetriever │ │ │ │ ├── SimilarityThresholdRetriever.ts │ │ │ │ └── similaritythreshold.svg │ │ │ ├── VectorStoreRetriever │ │ │ │ ├── VectorStoreRetriever.ts │ │ │ │ └── vectorretriever.svg │ │ │ └── VoyageAIRetriever │ │ │ │ ├── VoyageAIRerank.ts │ │ │ │ ├── VoyageAIRerankRetriever.ts │ │ │ │ └── voyageai.png │ │ ├── sequentialagents │ │ │ ├── Agent │ │ │ │ ├── Agent.ts │ │ │ │ ├── agent.svg │ │ │ │ └── seqAgent.png │ │ │ ├── Condition │ │ │ │ ├── Condition.ts │ │ │ │ └── condition.svg │ │ │ ├── ConditionAgent │ │ │ │ ├── ConditionAgent.ts │ │ │ │ └── condition.svg │ │ │ ├── CustomFunction │ │ │ │ ├── CustomFunction.ts │ │ │ │ └── customfunction.svg │ │ │ ├── End │ │ │ │ ├── End.ts │ │ │ │ └── end.svg │ │ │ ├── ExecuteFlow │ │ │ │ ├── ExecuteFlow.ts │ │ │ │ └── executeflow.svg │ │ │ ├── LLMNode │ │ │ │ ├── LLMNode.ts │ │ │ │ └── llmNode.svg │ │ │ ├── Loop │ │ │ │ ├── Loop.ts │ │ │ │ └── loop.svg │ │ │ ├── Start │ │ │ │ ├── Start.ts │ │ │ │ └── start.svg │ │ │ ├── State │ │ │ │ ├── State.ts │ │ │ │ └── state.svg │ │ │ ├── ToolNode │ │ │ │ ├── ToolNode.ts │ │ │ │ └── toolNode.svg │ │ │ └── commonUtils.ts │ │ ├── speechtotext │ │ │ └── assemblyai │ │ │ │ ├── AssemblyAI.ts │ │ │ │ └── assemblyai.png │ │ ├── textsplitters │ │ │ ├── CharacterTextSplitter │ │ │ │ ├── CharacterTextSplitter.ts │ │ │ │ └── textsplitter.svg │ │ │ ├── CodeTextSplitter │ │ │ │ ├── CodeTextSplitter.ts │ │ │ │ └── codeTextSplitter.svg │ │ │ ├── HtmlToMarkdownTextSplitter │ │ │ │ ├── HtmlToMarkdownTextSplitter.ts │ │ │ │ └── htmlToMarkdownTextSplitter.svg │ │ │ ├── MarkdownTextSplitter │ │ │ │ ├── MarkdownTextSplitter.ts │ │ │ │ └── markdownTextSplitter.svg │ │ │ ├── RecursiveCharacterTextSplitter │ │ │ │ ├── RecursiveCharacterTextSplitter.ts │ │ │ │ └── textsplitter.svg │ │ │ └── TokenTextSplitter │ │ │ │ ├── TokenTextSplitter.ts │ │ │ │ └── tiktoken.svg │ │ ├── tools │ │ │ ├── BraveSearchAPI │ │ │ │ ├── BraveSearchAPI.ts │ │ │ │ └── brave.svg │ │ │ ├── Calculator │ │ │ │ ├── Calculator.ts │ │ │ │ └── calculator.svg │ │ │ ├── ChainTool │ │ │ │ ├── ChainTool.ts │ │ │ │ ├── chaintool.svg │ │ │ │ └── core.ts │ │ │ ├── ChatflowTool │ │ │ │ ├── ChatflowTool.ts │ │ │ │ └── chatflowTool.svg │ │ │ ├── CodeInterpreterE2B │ │ │ │ ├── CodeInterpreterE2B.ts │ │ │ │ └── e2b.png │ │ │ ├── Composio │ │ │ │ ├── Composio.ts │ │ │ │ └── composio.svg │ │ │ ├── CurrentDateTime │ │ │ │ ├── CurrentDateTime.ts │ │ │ │ └── currentDateTime.svg │ │ │ ├── CustomTool │ │ │ │ ├── CustomTool.ts │ │ │ │ ├── core.ts │ │ │ │ └── customtool.svg │ │ │ ├── ExaSearch │ │ │ │ ├── ExaSearch.ts │ │ │ │ └── exa.svg │ │ │ ├── GoogleSearchAPI │ │ │ │ ├── GoogleSearchAPI.ts │ │ │ │ └── google.svg │ │ │ ├── MCP │ │ │ │ ├── BraveSearch │ │ │ │ │ ├── BraveSearchMCP.ts │ │ │ │ │ └── brave.svg │ │ │ │ ├── CustomMCP │ │ │ │ │ ├── CustomMCP.ts │ │ │ │ │ └── customMCP.png │ │ │ │ ├── Github │ │ │ │ │ ├── GithubMCP.ts │ │ │ │ │ └── github.svg │ │ │ │ ├── PostgreSQL │ │ │ │ │ ├── PostgreSQLMCP.ts │ │ │ │ │ └── postgres.svg │ │ │ │ ├── SequentialThinking │ │ │ │ │ ├── SequentialThinkingMCP.ts │ │ │ │ │ └── sequentialthinking.svg │ │ │ │ ├── Slack │ │ │ │ │ ├── SlackMCP.ts │ │ │ │ │ └── slack.svg │ │ │ │ ├── Supergateway │ │ │ │ │ ├── SupergatewayMCP.ts │ │ │ │ │ └── supermachine-logo.png │ │ │ │ └── core.ts │ │ │ ├── OpenAPIToolkit │ │ │ │ ├── OpenAPIToolkit.ts │ │ │ │ ├── core.ts │ │ │ │ └── openapi.svg │ │ │ ├── QueryEngineTool │ │ │ │ ├── QueryEngineTool.ts │ │ │ │ └── queryEngineTool.svg │ │ │ ├── ReadFile │ │ │ │ ├── ReadFile.ts │ │ │ │ └── readfile.svg │ │ │ ├── RequestsGet │ │ │ │ ├── RequestsGet.ts │ │ │ │ ├── core.ts │ │ │ │ └── requestsget.svg │ │ │ ├── RequestsPost │ │ │ │ ├── RequestsPost.ts │ │ │ │ ├── core.ts │ │ │ │ └── requestspost.svg │ │ │ ├── RetrieverTool │ │ │ │ ├── RetrieverTool.ts │ │ │ │ └── retrievertool.svg │ │ │ ├── SearchApi │ │ │ │ ├── SearchAPI.ts │ │ │ │ └── searchapi.svg │ │ │ ├── Searxng │ │ │ │ ├── SearXNG.svg │ │ │ │ └── Searxng.ts │ │ │ ├── SerpAPI │ │ │ │ ├── SerpAPI.ts │ │ │ │ └── serp.svg │ │ │ ├── Serper │ │ │ │ ├── Serper.ts │ │ │ │ └── serper.svg │ │ │ ├── StripeTool │ │ │ │ ├── StripeTool.ts │ │ │ │ └── stripe.png │ │ │ ├── TavilyAPI │ │ │ │ ├── TavilyAPI.ts │ │ │ │ └── tavily.svg │ │ │ ├── WebBrowser │ │ │ │ ├── WebBrowser.ts │ │ │ │ └── webBrowser.svg │ │ │ ├── WebScraperTool │ │ │ │ ├── WebScraperTool.ts │ │ │ │ └── webScraperTool.svg │ │ │ ├── WolframAlpha │ │ │ │ ├── WolframAlpha.ts │ │ │ │ └── wolframalpha.png │ │ │ └── WriteFile │ │ │ │ ├── WriteFile.ts │ │ │ │ └── writefile.svg │ │ ├── utilities │ │ │ ├── CustomFunction │ │ │ │ ├── CustomFunction.ts │ │ │ │ └── customfunction.svg │ │ │ ├── GetVariable │ │ │ │ ├── GetVariable.ts │ │ │ │ └── getvar.svg │ │ │ ├── IfElseFunction │ │ │ │ ├── IfElseFunction.ts │ │ │ │ └── ifelsefunction.svg │ │ │ ├── SetVariable │ │ │ │ ├── SetVariable.ts │ │ │ │ └── setvar.svg │ │ │ └── StickyNote │ │ │ │ ├── StickyNote.ts │ │ │ │ └── stickyNote.svg │ │ └── vectorstores │ │ │ ├── Astra │ │ │ ├── Astra.ts │ │ │ └── astra.svg │ │ │ ├── Chroma │ │ │ ├── Chroma.ts │ │ │ ├── chroma.svg │ │ │ └── core.ts │ │ │ ├── Couchbase │ │ │ ├── Couchbase.ts │ │ │ └── couchbase.svg │ │ │ ├── DocumentStoreVS │ │ │ ├── DocStoreVector.ts │ │ │ └── dstore.svg │ │ │ ├── Elasticsearch │ │ │ ├── Elasticsearch.ts │ │ │ └── elasticsearch.png │ │ │ ├── Faiss │ │ │ ├── Faiss.ts │ │ │ └── faiss.svg │ │ │ ├── InMemory │ │ │ ├── InMemoryVectorStore.ts │ │ │ └── memory.svg │ │ │ ├── Meilisearch │ │ │ ├── Meilisearch.png │ │ │ ├── Meilisearch.ts │ │ │ └── core.ts │ │ │ ├── Milvus │ │ │ ├── Milvus.ts │ │ │ └── milvus.svg │ │ │ ├── MongoDBAtlas │ │ │ ├── MongoDBAtlas.ts │ │ │ ├── core.ts │ │ │ └── mongodb.svg │ │ │ ├── OpenSearch │ │ │ ├── OpenSearch.ts │ │ │ └── opensearch.svg │ │ │ ├── Pinecone │ │ │ ├── Pinecone.ts │ │ │ ├── Pinecone_LlamaIndex.ts │ │ │ └── pinecone.svg │ │ │ ├── Postgres │ │ │ ├── Postgres.ts │ │ │ ├── README.md │ │ │ ├── driver │ │ │ │ ├── Base.ts │ │ │ │ ├── PGVector.ts │ │ │ │ └── TypeORM.ts │ │ │ ├── postgres.svg │ │ │ └── utils.ts │ │ │ ├── Qdrant │ │ │ ├── Qdrant.ts │ │ │ └── qdrant.png │ │ │ ├── Redis │ │ │ ├── Redis.ts │ │ │ ├── redis.svg │ │ │ └── utils.ts │ │ │ ├── SimpleStore │ │ │ ├── SimpleStore.ts │ │ │ └── simplevs.svg │ │ │ ├── Singlestore │ │ │ ├── Singlestore.ts │ │ │ └── singlestore.svg │ │ │ ├── Supabase │ │ │ ├── Supabase.ts │ │ │ └── supabase.svg │ │ │ ├── Upstash │ │ │ ├── Upstash.ts │ │ │ └── upstash.svg │ │ │ ├── Vectara │ │ │ ├── Vectara.ts │ │ │ ├── Vectara_Upload.ts │ │ │ └── vectara.png │ │ │ ├── VectorStoreUtils.ts │ │ │ ├── Weaviate │ │ │ ├── Weaviate.ts │ │ │ └── weaviate.png │ │ │ ├── Zep │ │ │ ├── Zep.ts │ │ │ └── zep.svg │ │ │ └── ZepCloud │ │ │ ├── ZepCloud.ts │ │ │ └── zep.svg │ ├── package.json │ ├── src │ │ ├── Interface.Evaluation.ts │ │ ├── Interface.ts │ │ ├── MetricsLogger.ts │ │ ├── agentflowv2Generator.ts │ │ ├── agents.ts │ │ ├── error.ts │ │ ├── followUpPrompts.ts │ │ ├── handler.ts │ │ ├── index.ts │ │ ├── indexing.ts │ │ ├── modelLoader.ts │ │ ├── multiModalUtils.ts │ │ ├── speechToText.ts │ │ ├── storageUtils.ts │ │ ├── utils.ts │ │ └── validator.ts │ └── tsconfig.json ├── server │ ├── .env.example │ ├── README-ZH.md │ ├── README.md │ ├── babel.config.js │ ├── bin │ │ ├── .gitattributes │ │ ├── dev │ │ ├── dev.cmd │ │ ├── run │ │ └── run.cmd │ ├── cypress.config.ts │ ├── cypress │ │ ├── e2e │ │ │ ├── 1-apikey │ │ │ │ └── apikey.cy.js │ │ │ └── 2-variables │ │ │ │ └── variables.cy.js │ │ ├── fixtures │ │ │ └── .keep │ │ └── support │ │ │ ├── commands.ts │ │ │ └── e2e.ts │ ├── gulpfile.ts │ ├── jest.config.js │ ├── marketplaces │ │ ├── agentflows │ │ │ ├── Agentic RAG.json │ │ │ ├── Branch Out Merge In.json │ │ │ ├── Customer Support Team Agents.json │ │ │ ├── Essay Writing & Grading.json │ │ │ ├── Human In Loop RAG.json │ │ │ ├── Lead Outreach.json │ │ │ ├── Multi Agents.json │ │ │ ├── Patient Concierge.json │ │ │ ├── Plan and Execute.json │ │ │ ├── Portfolio Management Team.json │ │ │ ├── Prompt Engineering Team.json │ │ │ ├── Software Team.json │ │ │ ├── Support Routing System.json │ │ │ └── Text to SQL.json │ │ ├── agentflowsv2 │ │ │ ├── Agentic RAG V2.json │ │ │ ├── Agents Handoff.json │ │ │ ├── Deep Research V2.json │ │ │ ├── Email Reply HITL Agent.json │ │ │ ├── Financial Research Agent.json │ │ │ ├── Iterations.json │ │ │ ├── Slack Agent.json │ │ │ └── Supervisor Worker.json │ │ ├── chatflows │ │ │ ├── API Agent.json │ │ │ ├── Advanced Structured Output Parser.json │ │ │ ├── Antonym.json │ │ │ ├── CSV Agent.json │ │ │ ├── Context Chat Engine.json │ │ │ ├── Conversation Chain.json │ │ │ ├── Conversational Agent.json │ │ │ ├── Conversational Retrieval QA Chain.json │ │ │ ├── Flowise Docs QnA.json │ │ │ ├── HuggingFace LLM Chain.json │ │ │ ├── IfElse.json │ │ │ ├── Image Generation.json │ │ │ ├── Input Moderation.json │ │ │ ├── LLM Chain.json │ │ │ ├── List Output Parser.json │ │ │ ├── Local QnA.json │ │ │ ├── Multi Prompt Chain.json │ │ │ ├── Multi Retrieval QA Chain.json │ │ │ ├── Multiple Documents QnA.json │ │ │ ├── Multiple VectorDB.json │ │ │ ├── OpenAI Assistant.json │ │ │ ├── Prompt Chaining with VectorStore.json │ │ │ ├── Prompt Chaining.json │ │ │ ├── Query Engine.json │ │ │ ├── ReAct Agent.json │ │ │ ├── Replicate LLM.json │ │ │ ├── SQL DB Chain.json │ │ │ ├── SQL Prompt.json │ │ │ ├── Simple Chat Engine.json │ │ │ ├── Structured Output Parser.json │ │ │ ├── SubQuestion Query Engine.json │ │ │ ├── Transcript Summarization.json │ │ │ ├── Translator.json │ │ │ ├── Vectara RAG Chain.json │ │ │ └── WebPage QnA.json │ │ └── tools │ │ │ ├── Add Hubspot Contact.json │ │ │ ├── Create Airtable Record.json │ │ │ ├── Get Current DateTime.json │ │ │ ├── Get Stock Mover.json │ │ │ ├── Make Webhook.json │ │ │ ├── Perplexity AI Search.json │ │ │ ├── Print or Export Text Document.json │ │ │ ├── Send Discord Message.json │ │ │ ├── Send Slack Message.json │ │ │ ├── Send Teams Message.json │ │ │ ├── SendGrid Email.json │ │ │ ├── Spider Web Scraper.json │ │ │ └── Spider Web Search & Scrape.json │ ├── nodemon.json │ ├── package.json │ ├── src │ │ ├── AbortControllerPool.ts │ │ ├── AppConfig.ts │ │ ├── CachePool.ts │ │ ├── DataSource.ts │ │ ├── IdentityManager.ts │ │ ├── Interface.DocumentStore.ts │ │ ├── Interface.Evaluation.ts │ │ ├── Interface.Metrics.ts │ │ ├── Interface.ts │ │ ├── NodesPool.ts │ │ ├── StripeManager.ts │ │ ├── UsageCacheManager.ts │ │ ├── commands │ │ │ ├── base.ts │ │ │ ├── start.ts │ │ │ └── worker.ts │ │ ├── controllers │ │ │ ├── agentflowv2-generator │ │ │ │ └── index.ts │ │ │ ├── apikey │ │ │ │ └── index.ts │ │ │ ├── assistants │ │ │ │ └── index.ts │ │ │ ├── attachments │ │ │ │ └── index.ts │ │ │ ├── chat-messages │ │ │ │ └── index.ts │ │ │ ├── chatflows │ │ │ │ └── index.ts │ │ │ ├── components-credentials │ │ │ │ └── index.ts │ │ │ ├── credentials │ │ │ │ └── index.ts │ │ │ ├── dataset │ │ │ │ └── index.ts │ │ │ ├── documentstore │ │ │ │ └── index.ts │ │ │ ├── evaluations │ │ │ │ └── index.ts │ │ │ ├── evaluators │ │ │ │ └── index.ts │ │ │ ├── executions │ │ │ │ └── index.ts │ │ │ ├── export-import │ │ │ │ └── index.ts │ │ │ ├── feedback │ │ │ │ └── index.ts │ │ │ ├── fetch-links │ │ │ │ └── index.ts │ │ │ ├── files │ │ │ │ └── index.ts │ │ │ ├── flow-configs │ │ │ │ └── index.ts │ │ │ ├── get-upload-file │ │ │ │ └── index.ts │ │ │ ├── get-upload-path │ │ │ │ └── index.ts │ │ │ ├── internal-predictions │ │ │ │ └── index.ts │ │ │ ├── leads │ │ │ │ └── index.ts │ │ │ ├── load-prompts │ │ │ │ └── index.ts │ │ │ ├── log │ │ │ │ └── index.ts │ │ │ ├── marketplaces │ │ │ │ └── index.ts │ │ │ ├── node-configs │ │ │ │ └── index.ts │ │ │ ├── node-icons │ │ │ │ └── index.ts │ │ │ ├── nodes │ │ │ │ └── index.ts │ │ │ ├── nvidia-nim │ │ │ │ └── index.ts │ │ │ ├── openai-assistants-vector-store │ │ │ │ └── index.ts │ │ │ ├── openai-assistants │ │ │ │ └── index.ts │ │ │ ├── openai-realtime │ │ │ │ └── index.ts │ │ │ ├── ping │ │ │ │ └── index.ts │ │ │ ├── predictions │ │ │ │ └── index.ts │ │ │ ├── pricing │ │ │ │ └── index.ts │ │ │ ├── prompts-lists │ │ │ │ └── index.ts │ │ │ ├── settings │ │ │ │ └── index.ts │ │ │ ├── stats │ │ │ │ └── index.ts │ │ │ ├── tools │ │ │ │ └── index.ts │ │ │ ├── upsert-history │ │ │ │ └── index.ts │ │ │ ├── validation │ │ │ │ └── index.ts │ │ │ ├── variables │ │ │ │ └── index.ts │ │ │ ├── vectors │ │ │ │ └── index.ts │ │ │ └── versions │ │ │ │ └── index.ts │ │ ├── database │ │ │ ├── entities │ │ │ │ ├── ApiKey.ts │ │ │ │ ├── Assistant.ts │ │ │ │ ├── ChatFlow.ts │ │ │ │ ├── ChatMessage.ts │ │ │ │ ├── ChatMessageFeedback.ts │ │ │ │ ├── Credential.ts │ │ │ │ ├── CustomTemplate.ts │ │ │ │ ├── Dataset.ts │ │ │ │ ├── DatasetRow.ts │ │ │ │ ├── DocumentStore.ts │ │ │ │ ├── DocumentStoreFileChunk.ts │ │ │ │ ├── Evaluation.ts │ │ │ │ ├── EvaluationRun.ts │ │ │ │ ├── Evaluator.ts │ │ │ │ ├── Execution.ts │ │ │ │ ├── Lead.ts │ │ │ │ ├── Tool.ts │ │ │ │ ├── UpsertHistory.ts │ │ │ │ ├── Variable.ts │ │ │ │ └── index.ts │ │ │ └── migrations │ │ │ │ ├── mariadb │ │ │ │ ├── 1693840429259-Init.ts │ │ │ │ ├── 1693997791471-ModifyChatFlow.ts │ │ │ │ ├── 1693999022236-ModifyChatMessage.ts │ │ │ │ ├── 1693999261583-ModifyCredential.ts │ │ │ │ ├── 1694001465232-ModifyTool.ts │ │ │ │ ├── 1694099200729-AddApiConfig.ts │ │ │ │ ├── 1694432361423-AddAnalytic.ts │ │ │ │ ├── 1694658767766-AddChatHistory.ts │ │ │ │ ├── 1699325775451-AddAssistantEntity.ts │ │ │ │ ├── 1699481607341-AddUsedToolsToChatMessage.ts │ │ │ │ ├── 1699900910291-AddCategoryToChatFlow.ts │ │ │ │ ├── 1700271021237-AddFileAnnotationsToChatMessage.ts │ │ │ │ ├── 1701788586491-AddFileUploadsToChatMessage.ts │ │ │ │ ├── 1702200925471-AddVariableEntity.ts │ │ │ │ ├── 1706364937060-AddSpeechToText.ts │ │ │ │ ├── 1707213626553-AddFeedback.ts │ │ │ │ ├── 1709814301358-AddUpsertHistoryEntity.ts │ │ │ │ ├── 1710832127079-AddLead.ts │ │ │ │ ├── 1711538023578-AddLeadToChatMessage.ts │ │ │ │ ├── 1711637331047-AddDocumentStore.ts │ │ │ │ ├── 1714548873039-AddEvaluation.ts │ │ │ │ ├── 1714548903384-AddDataset.ts │ │ │ │ ├── 1714679514451-AddAgentReasoningToChatMessage.ts │ │ │ │ ├── 1714808591644-AddEvaluator.ts │ │ │ │ ├── 1715861032479-AddVectorStoreConfigToDocStore.ts │ │ │ │ ├── 1716300000000-AddTypeToChatFlow.ts │ │ │ │ ├── 1720230151480-AddApiKey.ts │ │ │ │ ├── 1721078251523-AddActionToChatMessage.ts │ │ │ │ ├── 1722301395521-LongTextColumn.ts │ │ │ │ ├── 1725629836652-AddCustomTemplate.ts │ │ │ │ ├── 1726156258465-AddArtifactsToChatMessage.ts │ │ │ │ ├── 1726666318346-AddFollowUpPrompts.ts │ │ │ │ ├── 1733011290987-AddTypeToAssistant.ts │ │ │ │ ├── 1733752119696-AddSeqNoToDatasetRow.ts │ │ │ │ ├── 1738090872625-AddExecutionEntity.ts │ │ │ │ ├── 1743758056188-FixOpenSourceAssistantTable.ts │ │ │ │ ├── 1744964560174-AddErrorToEvaluationRun.ts │ │ │ │ ├── 1747902489801-ModifyExecutionDataColumnType.ts │ │ │ │ └── index.ts │ │ │ │ ├── mysql │ │ │ │ ├── 1693840429259-Init.ts │ │ │ │ ├── 1693997791471-ModifyChatFlow.ts │ │ │ │ ├── 1693999022236-ModifyChatMessage.ts │ │ │ │ ├── 1693999261583-ModifyCredential.ts │ │ │ │ ├── 1694001465232-ModifyTool.ts │ │ │ │ ├── 1694099200729-AddApiConfig.ts │ │ │ │ ├── 1694432361423-AddAnalytic.ts │ │ │ │ ├── 1694658767766-AddChatHistory.ts │ │ │ │ ├── 1699325775451-AddAssistantEntity.ts │ │ │ │ ├── 1699481607341-AddUsedToolsToChatMessage.ts │ │ │ │ ├── 1699900910291-AddCategoryToChatFlow.ts │ │ │ │ ├── 1700271021237-AddFileAnnotationsToChatMessage.ts │ │ │ │ ├── 1701788586491-AddFileUploadsToChatMessage.ts │ │ │ │ ├── 1702200925471-AddVariableEntity.ts │ │ │ │ ├── 1706364937060-AddSpeechToText.ts │ │ │ │ ├── 1707213626553-AddFeedback.ts │ │ │ │ ├── 1709814301358-AddUpsertHistoryEntity.ts │ │ │ │ ├── 1710832127079-AddLead.ts │ │ │ │ ├── 1711538023578-AddLeadToChatMessage.ts │ │ │ │ ├── 1711637331047-AddDocumentStore.ts │ │ │ │ ├── 1714548873039-AddEvaluation.ts │ │ │ │ ├── 1714548903384-AddDataset.ts │ │ │ │ ├── 1714679514451-AddAgentReasoningToChatMessage.ts │ │ │ │ ├── 1714808591644-AddEvaluator.ts │ │ │ │ ├── 1715861032479-AddVectorStoreConfigToDocStore.ts │ │ │ │ ├── 1716300000000-AddTypeToChatFlow.ts │ │ │ │ ├── 1720230151480-AddApiKey.ts │ │ │ │ ├── 1721078251523-AddActionToChatMessage.ts │ │ │ │ ├── 1722301395521-LongTextColumn.ts │ │ │ │ ├── 1725629836652-AddCustomTemplate.ts │ │ │ │ ├── 1726156258465-AddArtifactsToChatMessage.ts │ │ │ │ ├── 1726666302024-AddFollowUpPrompts.ts │ │ │ │ ├── 1733011290987-AddTypeToAssistant.ts │ │ │ │ ├── 1733752119696-AddSeqNoToDatasetRow.ts │ │ │ │ ├── 1738090872625-AddExecutionEntity.ts │ │ │ │ ├── 1743758056188-FixOpenSourceAssistantTable.ts │ │ │ │ ├── 1744964560174-AddErrorToEvaluationRun.ts │ │ │ │ ├── 1746437114935-FixErrorsColumnInEvaluationRun.ts │ │ │ │ ├── 1747902489801-ModifyExecutionDataColumnType.ts │ │ │ │ └── index.ts │ │ │ │ ├── postgres │ │ │ │ ├── 1693891895163-Init.ts │ │ │ │ ├── 1693995626941-ModifyChatFlow.ts │ │ │ │ ├── 1693996694528-ModifyChatMessage.ts │ │ │ │ ├── 1693997070000-ModifyCredential.ts │ │ │ │ ├── 1693997339912-ModifyTool.ts │ │ │ │ ├── 1694099183389-AddApiConfig.ts │ │ │ │ ├── 1694432361423-AddAnalytic.ts │ │ │ │ ├── 1694658756136-AddChatHistory.ts │ │ │ │ ├── 1699325775451-AddAssistantEntity.ts │ │ │ │ ├── 1699481607341-AddUsedToolsToChatMessage.ts │ │ │ │ ├── 1699900910291-AddCategoryToChatFlow.ts │ │ │ │ ├── 1700271021237-AddFileAnnotationsToChatMessage.ts │ │ │ │ ├── 1701788586491-AddFileUploadsToChatMessage.ts │ │ │ │ ├── 1702200925471-AddVariableEntity.ts │ │ │ │ ├── 1706364937060-AddSpeechToText.ts │ │ │ │ ├── 1707213601923-AddFeedback.ts │ │ │ │ ├── 1709814301358-AddUpsertHistoryEntity.ts │ │ │ │ ├── 1710497452584-FieldTypes.ts │ │ │ │ ├── 1710832137905-AddLead.ts │ │ │ │ ├── 1711538016098-AddLeadToChatMessage.ts │ │ │ │ ├── 1711637331047-AddDocumentStore.ts │ │ │ │ ├── 1714548873039-AddEvaluation.ts │ │ │ │ ├── 1714548903384-AddDataset.ts │ │ │ │ ├── 1714679514451-AddAgentReasoningToChatMessage.ts │ │ │ │ ├── 1714808591644-AddEvaluator.ts │ │ │ │ ├── 1715861032479-AddVectorStoreConfigToDocStore.ts │ │ │ │ ├── 1716300000000-AddTypeToChatFlow.ts │ │ │ │ ├── 1720230151480-AddApiKey.ts │ │ │ │ ├── 1721078251523-AddActionToChatMessage.ts │ │ │ │ ├── 1725629836652-AddCustomTemplate.ts │ │ │ │ ├── 1726156258465-AddArtifactsToChatMessage.ts │ │ │ │ ├── 1726666309552-AddFollowUpPrompts.ts │ │ │ │ ├── 1733011290987-AddTypeToAssistant.ts │ │ │ │ ├── 1733752119696-AddSeqNoToDatasetRow.ts │ │ │ │ ├── 1738090872625-AddExecutionEntity.ts │ │ │ │ ├── 1743758056188-FixOpenSourceAssistantTable.ts │ │ │ │ ├── 1744964560174-AddErrorToEvaluationRun.ts │ │ │ │ ├── 1748450230238-ModifyExecutionSessionIdFieldType.ts │ │ │ │ └── index.ts │ │ │ │ └── sqlite │ │ │ │ ├── 1693835579790-Init.ts │ │ │ │ ├── 1693920824108-ModifyChatFlow.ts │ │ │ │ ├── 1693921865247-ModifyChatMessage.ts │ │ │ │ ├── 1693923551694-ModifyCredential.ts │ │ │ │ ├── 1693924207475-ModifyTool.ts │ │ │ │ ├── 1694090982460-AddApiConfig.ts │ │ │ │ ├── 1694432361423-AddAnalytic.ts │ │ │ │ ├── 1694657778173-AddChatHistory.ts │ │ │ │ ├── 1699325775451-AddAssistantEntity.ts │ │ │ │ ├── 1699481607341-AddUsedToolsToChatMessage.ts │ │ │ │ ├── 1699900910291-AddCategoryToChatFlow.ts │ │ │ │ ├── 1700271021237-AddFileAnnotationsToChatMessage.ts │ │ │ │ ├── 1701788586491-AddFileUploadsToChatMessage.ts │ │ │ │ ├── 1702200925471-AddVariableEntity.ts │ │ │ │ ├── 1706364937060-AddSpeechToText.ts │ │ │ │ ├── 1707213619308-AddFeedback.ts │ │ │ │ ├── 1709814301358-AddUpsertHistoryEntity.ts │ │ │ │ ├── 1710832117612-AddLead.ts │ │ │ │ ├── 1711537986113-AddLeadToChatMessage.ts │ │ │ │ ├── 1711637331047-AddDocumentStore.ts │ │ │ │ ├── 1714548873039-AddEvaluation.ts │ │ │ │ ├── 1714548903384-AddDataset.ts │ │ │ │ ├── 1714679514451-AddAgentReasoningToChatMessage.ts │ │ │ │ ├── 1714808591644-AddEvaluator.ts │ │ │ │ ├── 1715861032479-AddVectorStoreConfigToDocStore.ts │ │ │ │ ├── 1716300000000-AddTypeToChatFlow.ts │ │ │ │ ├── 1720230151480-AddApiKey.ts │ │ │ │ ├── 1721078251523-AddActionToChatMessage.ts │ │ │ │ ├── 1725629836652-AddCustomTemplate.ts │ │ │ │ ├── 1726156258465-AddArtifactsToChatMessage.ts │ │ │ │ ├── 1726666294213-AddFollowUpPrompts.ts │ │ │ │ ├── 1733011290987-AddTypeToAssistant.ts │ │ │ │ ├── 1733752119696-AddSeqNoToDatasetRow.ts │ │ │ │ ├── 1738090872625-AddExecutionEntity.ts │ │ │ │ ├── 1743758056188-FixOpenSourceAssistantTable.ts │ │ │ │ ├── 1744964560174-AddErrorToEvaluationRun.ts │ │ │ │ └── index.ts │ │ ├── enterprise │ │ │ ├── Interface.Enterprise.ts │ │ │ ├── LICENSE.md │ │ │ ├── controllers │ │ │ │ ├── account.controller.ts │ │ │ │ ├── audit │ │ │ │ │ └── index.ts │ │ │ │ ├── auth │ │ │ │ │ └── index.ts │ │ │ │ ├── login-method.controller.ts │ │ │ │ ├── organization-user.controller.ts │ │ │ │ ├── organization.controller.ts │ │ │ │ ├── role.controller.ts │ │ │ │ ├── user.controller.ts │ │ │ │ ├── workspace-user.controller.ts │ │ │ │ └── workspace.controller.ts │ │ │ ├── database │ │ │ │ ├── entities │ │ │ │ │ ├── EnterpriseEntities.ts │ │ │ │ │ ├── login-method.entity.ts │ │ │ │ │ ├── organization-user.entity.ts │ │ │ │ │ ├── organization.entity.ts │ │ │ │ │ ├── role.entity.ts │ │ │ │ │ ├── user.entity.ts │ │ │ │ │ ├── workspace-user.entity.ts │ │ │ │ │ └── workspace.entity.ts │ │ │ │ └── migrations │ │ │ │ │ ├── mariadb │ │ │ │ │ ├── 1720230151482-AddAuthTables.ts │ │ │ │ │ ├── 1725437498242-AddWorkspace.ts │ │ │ │ │ ├── 1726654922034-AddWorkspaceShared.ts │ │ │ │ │ ├── 1726655750383-AddWorkspaceIdToCustomTemplate.ts │ │ │ │ │ ├── 1727798417345-AddOrganization.ts │ │ │ │ │ ├── 1729130948686-LinkWorkspaceId.ts │ │ │ │ │ ├── 1729133111652-LinkOrganizationId.ts │ │ │ │ │ ├── 1730519457880-AddSSOColumns.ts │ │ │ │ │ ├── 1734074497540-AddPersonalWorkspace.ts │ │ │ │ │ ├── 1737076223692-RefactorEnterpriseDatabase.ts │ │ │ │ │ ├── 1746862866554-ExecutionLinkWorkspaceId.ts │ │ │ │ │ └── mariaDbCustomFunctions.ts │ │ │ │ │ ├── mysql │ │ │ │ │ ├── 1720230151482-AddAuthTables.ts │ │ │ │ │ ├── 1720230151484-AddWorkspace.ts │ │ │ │ │ ├── 1726654922034-AddWorkspaceShared.ts │ │ │ │ │ ├── 1726655750383-AddWorkspaceIdToCustomTemplate.ts │ │ │ │ │ ├── 1727798417345-AddOrganization.ts │ │ │ │ │ ├── 1729130948686-LinkWorkspaceId.ts │ │ │ │ │ ├── 1729133111652-LinkOrganizationId.ts │ │ │ │ │ ├── 1730519457880-AddSSOColumns.ts │ │ │ │ │ ├── 1734074497540-AddPersonalWorkspace.ts │ │ │ │ │ ├── 1737076223692-RefactorEnterpriseDatabase.ts │ │ │ │ │ ├── 1746862866554-ExecutionLinkWorkspaceId.ts │ │ │ │ │ └── mysqlCustomFunctions.ts │ │ │ │ │ ├── postgres │ │ │ │ │ ├── 1720230151482-AddAuthTables.ts │ │ │ │ │ ├── 1720230151484-AddWorkspace.ts │ │ │ │ │ ├── 1726654922034-AddWorkspaceShared.ts │ │ │ │ │ ├── 1726655750383-AddWorkspaceIdToCustomTemplate.ts │ │ │ │ │ ├── 1727798417345-AddOrganization.ts │ │ │ │ │ ├── 1729130948686-LinkWorkspaceId.ts │ │ │ │ │ ├── 1729133111652-LinkOrganizationId.ts │ │ │ │ │ ├── 1730519457880-AddSSOColumns.ts │ │ │ │ │ ├── 1734074497540-AddPersonalWorkspace.ts │ │ │ │ │ ├── 1737076223692-RefactorEnterpriseDatabase.ts │ │ │ │ │ └── 1746862866554-ExecutionLinkWorkspaceId.ts │ │ │ │ │ └── sqlite │ │ │ │ │ ├── 1720230151482-AddAuthTables.ts │ │ │ │ │ ├── 1720230151484-AddWorkspace.ts │ │ │ │ │ ├── 1726654922034-AddWorkspaceShared.ts │ │ │ │ │ ├── 1726655750383-AddWorkspaceIdToCustomTemplate.ts │ │ │ │ │ ├── 1727798417345-AddOrganization.ts │ │ │ │ │ ├── 1729130948686-LinkWorkspaceId.ts │ │ │ │ │ ├── 1729133111652-LinkOrganizationId.ts │ │ │ │ │ ├── 1730519457880-AddSSOColumns.ts │ │ │ │ │ ├── 1734074497540-AddPersonalWorkspace.ts │ │ │ │ │ ├── 1737076223692-RefactorEnterpriseDatabase.ts │ │ │ │ │ ├── 1746862866554-ExecutionLinkWorkspaceId.ts │ │ │ │ │ └── sqlliteCustomFunctions.ts │ │ │ ├── emails │ │ │ │ ├── verify_email_cloud.hbs │ │ │ │ ├── verify_email_cloud.html │ │ │ │ ├── workspace_add_cloud.hbs │ │ │ │ ├── workspace_add_cloud.html │ │ │ │ ├── workspace_new_invite_cloud.hbs │ │ │ │ ├── workspace_new_invite_cloud.html │ │ │ │ ├── workspace_new_invite_enterprise.hbs │ │ │ │ ├── workspace_new_invite_enterprise.html │ │ │ │ ├── workspace_update_invite_cloud.hbs │ │ │ │ ├── workspace_update_invite_cloud.html │ │ │ │ ├── workspace_update_invite_enterprise.hbs │ │ │ │ ├── workspace_update_invite_enterprise.html │ │ │ │ ├── workspace_user_reset_password.hbs │ │ │ │ └── workspace_user_reset_password.html │ │ │ ├── middleware │ │ │ │ ├── passport │ │ │ │ │ ├── AuthStrategy.ts │ │ │ │ │ ├── SessionPersistance.ts │ │ │ │ │ └── index.ts │ │ │ │ └── prometheus │ │ │ │ │ └── index.ts │ │ │ ├── rbac │ │ │ │ ├── PermissionCheck.ts │ │ │ │ └── Permissions.ts │ │ │ ├── routes │ │ │ │ ├── account.route.ts │ │ │ │ ├── audit │ │ │ │ │ └── index.ts │ │ │ │ ├── auth │ │ │ │ │ └── index.ts │ │ │ │ ├── login-method.route.ts │ │ │ │ ├── organization-user.route.ts │ │ │ │ ├── organization.route.ts │ │ │ │ ├── role.route.ts │ │ │ │ ├── user.route.ts │ │ │ │ ├── workspace-user.route.ts │ │ │ │ └── workspace.route.ts │ │ │ ├── services │ │ │ │ ├── account.service.ts │ │ │ │ ├── audit │ │ │ │ │ └── index.ts │ │ │ │ ├── login-method.service.ts │ │ │ │ ├── organization-user.service.ts │ │ │ │ ├── organization.service.ts │ │ │ │ ├── role.service.ts │ │ │ │ ├── user.service.ts │ │ │ │ ├── workspace-user.service.ts │ │ │ │ └── workspace.service.ts │ │ │ ├── sso │ │ │ │ ├── Auth0SSO.ts │ │ │ │ ├── AzureSSO.ts │ │ │ │ ├── GithubSSO.ts │ │ │ │ ├── GoogleSSO.ts │ │ │ │ └── SSOBase.ts │ │ │ └── utils │ │ │ │ ├── ControllerServiceUtils.ts │ │ │ │ ├── encryption.util.ts │ │ │ │ ├── sendEmail.ts │ │ │ │ ├── tempTokenUtils.ts │ │ │ │ └── validation.util.ts │ │ ├── errors │ │ │ ├── internalFlowiseError │ │ │ │ └── index.ts │ │ │ └── utils.ts │ │ ├── index.ts │ │ ├── metrics │ │ │ ├── OpenTelemetry.ts │ │ │ └── Prometheus.ts │ │ ├── middlewares │ │ │ └── errors │ │ │ │ └── index.ts │ │ ├── queue │ │ │ ├── BaseQueue.ts │ │ │ ├── PredictionQueue.ts │ │ │ ├── QueueManager.ts │ │ │ ├── RedisEventPublisher.ts │ │ │ ├── RedisEventSubscriber.ts │ │ │ └── UpsertQueue.ts │ │ ├── routes │ │ │ ├── agentflowv2-generator │ │ │ │ └── index.ts │ │ │ ├── apikey │ │ │ │ └── index.ts │ │ │ ├── assistants │ │ │ │ └── index.ts │ │ │ ├── attachments │ │ │ │ └── index.ts │ │ │ ├── chat-messages │ │ │ │ └── index.ts │ │ │ ├── chatflows-streaming │ │ │ │ └── index.ts │ │ │ ├── chatflows-uploads │ │ │ │ └── index.ts │ │ │ ├── chatflows │ │ │ │ └── index.ts │ │ │ ├── components-credentials-icon │ │ │ │ └── index.ts │ │ │ ├── components-credentials │ │ │ │ └── index.ts │ │ │ ├── credentials │ │ │ │ └── index.ts │ │ │ ├── dataset │ │ │ │ └── index.ts │ │ │ ├── documentstore │ │ │ │ └── index.ts │ │ │ ├── evaluations │ │ │ │ └── index.ts │ │ │ ├── evaluator │ │ │ │ └── index.ts │ │ │ ├── executions │ │ │ │ └── index.ts │ │ │ ├── export-import │ │ │ │ └── index.ts │ │ │ ├── feedback │ │ │ │ └── index.ts │ │ │ ├── fetch-links │ │ │ │ └── index.ts │ │ │ ├── files │ │ │ │ └── index.ts │ │ │ ├── flow-config │ │ │ │ └── index.ts │ │ │ ├── get-upload-file │ │ │ │ └── index.ts │ │ │ ├── get-upload-path │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── internal-chat-messages │ │ │ │ └── index.ts │ │ │ ├── internal-predictions │ │ │ │ └── index.ts │ │ │ ├── leads │ │ │ │ └── index.ts │ │ │ ├── load-prompts │ │ │ │ └── index.ts │ │ │ ├── log │ │ │ │ └── index.ts │ │ │ ├── marketplaces │ │ │ │ └── index.ts │ │ │ ├── node-configs │ │ │ │ └── index.ts │ │ │ ├── node-custom-functions │ │ │ │ └── index.ts │ │ │ ├── node-icons │ │ │ │ └── index.ts │ │ │ ├── node-load-methods │ │ │ │ └── index.ts │ │ │ ├── nodes │ │ │ │ └── index.ts │ │ │ ├── nvidia-nim │ │ │ │ └── index.ts │ │ │ ├── openai-assistants-files │ │ │ │ └── index.ts │ │ │ ├── openai-assistants-vector-store │ │ │ │ └── index.ts │ │ │ ├── openai-assistants │ │ │ │ └── index.ts │ │ │ ├── openai-realtime │ │ │ │ └── index.ts │ │ │ ├── ping │ │ │ │ └── index.ts │ │ │ ├── predictions │ │ │ │ └── index.ts │ │ │ ├── pricing │ │ │ │ └── index.ts │ │ │ ├── prompts-lists │ │ │ │ └── index.ts │ │ │ ├── public-chatbots │ │ │ │ └── index.ts │ │ │ ├── public-chatflows │ │ │ │ └── index.ts │ │ │ ├── public-executions │ │ │ │ └── index.ts │ │ │ ├── settings │ │ │ │ └── index.ts │ │ │ ├── stats │ │ │ │ └── index.ts │ │ │ ├── tools │ │ │ │ └── index.ts │ │ │ ├── upsert-history │ │ │ │ └── index.ts │ │ │ ├── validation │ │ │ │ └── index.ts │ │ │ ├── variables │ │ │ │ └── index.ts │ │ │ ├── vectors │ │ │ │ └── index.ts │ │ │ ├── verify │ │ │ │ └── index.ts │ │ │ └── versions │ │ │ │ └── index.ts │ │ ├── services │ │ │ ├── agentflowv2-generator │ │ │ │ ├── index.ts │ │ │ │ └── prompt.ts │ │ │ ├── apikey │ │ │ │ └── index.ts │ │ │ ├── assistants │ │ │ │ └── index.ts │ │ │ ├── attachments │ │ │ │ └── index.ts │ │ │ ├── chat-messages │ │ │ │ └── index.ts │ │ │ ├── chatflows │ │ │ │ └── index.ts │ │ │ ├── components-credentials │ │ │ │ └── index.ts │ │ │ ├── credentials │ │ │ │ └── index.ts │ │ │ ├── dataset │ │ │ │ └── index.ts │ │ │ ├── documentstore │ │ │ │ └── index.ts │ │ │ ├── evaluations │ │ │ │ ├── CostCalculator.ts │ │ │ │ ├── EvaluatorRunner.ts │ │ │ │ ├── LLMEvaluationRunner.ts │ │ │ │ └── index.ts │ │ │ ├── evaluator │ │ │ │ └── index.ts │ │ │ ├── executions │ │ │ │ └── index.ts │ │ │ ├── export-import │ │ │ │ └── index.ts │ │ │ ├── feedback │ │ │ │ ├── index.ts │ │ │ │ └── validation.ts │ │ │ ├── fetch-links │ │ │ │ └── index.ts │ │ │ ├── flow-configs │ │ │ │ └── index.ts │ │ │ ├── leads │ │ │ │ └── index.ts │ │ │ ├── load-prompts │ │ │ │ └── index.ts │ │ │ ├── log │ │ │ │ └── index.ts │ │ │ ├── marketplaces │ │ │ │ └── index.ts │ │ │ ├── node-configs │ │ │ │ └── index.ts │ │ │ ├── nodes │ │ │ │ └── index.ts │ │ │ ├── openai-assistants-vector-store │ │ │ │ └── index.ts │ │ │ ├── openai-assistants │ │ │ │ └── index.ts │ │ │ ├── openai-realtime │ │ │ │ └── index.ts │ │ │ ├── predictions │ │ │ │ └── index.ts │ │ │ ├── prompts-lists │ │ │ │ └── index.ts │ │ │ ├── settings │ │ │ │ └── index.ts │ │ │ ├── stats │ │ │ │ └── index.ts │ │ │ ├── tools │ │ │ │ └── index.ts │ │ │ ├── upsert-history │ │ │ │ └── index.ts │ │ │ ├── validation │ │ │ │ └── index.ts │ │ │ ├── variables │ │ │ │ └── index.ts │ │ │ ├── vectors │ │ │ │ └── index.ts │ │ │ └── versions │ │ │ │ └── index.ts │ │ └── utils │ │ │ ├── SSEStreamer.ts │ │ │ ├── XSS.ts │ │ │ ├── addChatMesage.ts │ │ │ ├── addChatMessageFeedback.ts │ │ │ ├── addChatflowsCount.ts │ │ │ ├── apiKey.ts │ │ │ ├── buildAgentGraph.ts │ │ │ ├── buildAgentflow.ts │ │ │ ├── buildChatflow.ts │ │ │ ├── config.ts │ │ │ ├── constants.ts │ │ │ ├── createAttachment.ts │ │ │ ├── executeCustomNodeFunction.ts │ │ │ ├── fileRepository.ts │ │ │ ├── getChatMessage.ts │ │ │ ├── getChatMessageFeedback.ts │ │ │ ├── getRunningExpressApp.ts │ │ │ ├── getUploadsConfig.ts │ │ │ ├── hub.ts │ │ │ ├── index.ts │ │ │ ├── logger.ts │ │ │ ├── prompt.ts │ │ │ ├── quotaUsage.ts │ │ │ ├── rateLimit.ts │ │ │ ├── telemetry.ts │ │ │ ├── typeormDataSource.ts │ │ │ ├── updateChatMessageFeedback.ts │ │ │ ├── upsertVector.ts │ │ │ └── validateKey.ts │ ├── test │ │ ├── index.test.ts │ │ ├── routes │ │ │ └── v1 │ │ │ │ ├── organization-user.route.test.ts │ │ │ │ └── user.route.test.ts │ │ └── utils │ │ │ └── api-key.util.test.ts │ └── tsconfig.json └── ui │ ├── .env.example │ ├── .npmignore │ ├── README-ZH.md │ ├── README.md │ ├── craco.config.js │ ├── index.html │ ├── jsconfig.json │ ├── package.json │ ├── public │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ └── index.html │ ├── src │ ├── App.jsx │ ├── ErrorBoundary.jsx │ ├── api │ │ ├── account.api.js │ │ ├── apikey.js │ │ ├── assistants.js │ │ ├── attachments.js │ │ ├── audit.js │ │ ├── auth.js │ │ ├── chatflows.js │ │ ├── chatmessage.js │ │ ├── chatmessagefeedback.js │ │ ├── client.js │ │ ├── config.js │ │ ├── credentials.js │ │ ├── dataset.js │ │ ├── documentstore.js │ │ ├── evaluations.js │ │ ├── evaluators.js │ │ ├── executions.js │ │ ├── exportimport.js │ │ ├── feedback.js │ │ ├── files.js │ │ ├── lead.js │ │ ├── log.js │ │ ├── loginmethod.js │ │ ├── marketplaces.js │ │ ├── nodes.js │ │ ├── platformsettings.js │ │ ├── prediction.js │ │ ├── pricing.js │ │ ├── prompt.js │ │ ├── role.js │ │ ├── scraper.js │ │ ├── sso.js │ │ ├── tools.js │ │ ├── user.js │ │ ├── validation.js │ │ ├── variables.js │ │ ├── vectorstore.js │ │ └── workspace.js │ ├── assets │ │ ├── images │ │ │ ├── Exporting.gif │ │ │ ├── account.png │ │ │ ├── agentflow-generator.gif │ │ │ ├── agentgraph.png │ │ │ ├── agents_empty.svg │ │ │ ├── anthropic.svg │ │ │ ├── api_empty.svg │ │ │ ├── arize.png │ │ │ ├── assemblyai.png │ │ │ ├── assistant_empty.svg │ │ │ ├── auth0.svg │ │ │ ├── azure_openai.svg │ │ │ ├── cURL.svg │ │ │ ├── chathistory.png │ │ │ ├── chunks_empty.svg │ │ │ ├── contact_support.svg │ │ │ ├── credential_empty.svg │ │ │ ├── doc_store_details_empty.svg │ │ │ ├── doc_store_empty.svg │ │ │ ├── embed.svg │ │ │ ├── empty_datasets.svg │ │ │ ├── empty_evals.svg │ │ │ ├── empty_evaluators.svg │ │ │ ├── executions_empty.svg │ │ │ ├── fileAttachment.png │ │ │ ├── floppy-disc.png │ │ │ ├── flowise_dark.svg │ │ │ ├── flowise_logo.png │ │ │ ├── flowise_logo_dark.png │ │ │ ├── flowise_white.svg │ │ │ ├── github.svg │ │ │ ├── google-login-white.png │ │ │ ├── google.svg │ │ │ ├── groq.png │ │ │ ├── javascript.svg │ │ │ ├── key.svg │ │ │ ├── langchain.png │ │ │ ├── langfuse.png │ │ │ ├── langfuse.svg │ │ │ ├── langwatch.svg │ │ │ ├── leads_empty.svg │ │ │ ├── llamaindex.png │ │ │ ├── llmonitor.png │ │ │ ├── localai.png │ │ │ ├── logs_empty.svg │ │ │ ├── lunary.svg │ │ │ ├── message_empty.svg │ │ │ ├── microsoft-azure.svg │ │ │ ├── mistralai.svg │ │ │ ├── multiagent_supervisor.png │ │ │ ├── multiagent_worker.png │ │ │ ├── next-agent.gif │ │ │ ├── ollama.svg │ │ │ ├── openai.svg │ │ │ ├── opik.png │ │ │ ├── phoenix.png │ │ │ ├── prompt_empty.svg │ │ │ ├── python.svg │ │ │ ├── robot.png │ │ │ ├── roles_empty.svg │ │ │ ├── settings.svg │ │ │ ├── sharing.png │ │ │ ├── tool.svg │ │ │ ├── tools_empty.svg │ │ │ ├── unauthorized.svg │ │ │ ├── upsert_history_empty.svg │ │ │ ├── users_empty.svg │ │ │ ├── utilNodes.png │ │ │ ├── validate_empty.svg │ │ │ ├── variables_empty.svg │ │ │ ├── wave-sound.jpg │ │ │ ├── workflow_empty.svg │ │ │ └── workspaces_empty.svg │ │ └── scss │ │ │ ├── _themes-vars.module.scss │ │ │ └── style.scss │ ├── config.js │ ├── hooks │ │ ├── useApi.jsx │ │ ├── useAuth.jsx │ │ ├── useConfirm.jsx │ │ ├── useScriptRef.jsx │ │ └── useSearchShortcut.jsx │ ├── index.jsx │ ├── layout │ │ ├── AuthLayout │ │ │ └── index.jsx │ │ ├── MainLayout │ │ │ ├── Header │ │ │ │ ├── OrgWorkspaceBreadcrumbs │ │ │ │ │ └── index.jsx │ │ │ │ ├── ProfileSection │ │ │ │ │ ├── index.css │ │ │ │ │ └── index.jsx │ │ │ │ ├── WorkspaceSwitcher │ │ │ │ │ └── index.jsx │ │ │ │ └── index.jsx │ │ │ ├── LogoSection │ │ │ │ └── index.jsx │ │ │ ├── Sidebar │ │ │ │ ├── CloudMenuList.jsx │ │ │ │ ├── MenuList │ │ │ │ │ ├── NavCollapse │ │ │ │ │ │ └── index.jsx │ │ │ │ │ ├── NavGroup │ │ │ │ │ │ └── index.jsx │ │ │ │ │ ├── NavItem │ │ │ │ │ │ └── index.jsx │ │ │ │ │ └── index.jsx │ │ │ │ ├── TrialInfo.jsx │ │ │ │ └── index.jsx │ │ │ ├── ViewHeader.jsx │ │ │ └── index.jsx │ │ ├── MinimalLayout │ │ │ └── index.jsx │ │ ├── NavMotion.jsx │ │ └── NavigationScroll.jsx │ ├── menu-items │ │ ├── agentsettings.js │ │ ├── customassistant.js │ │ ├── dashboard.js │ │ ├── index.js │ │ └── settings.js │ ├── routes │ │ ├── AuthRoutes.jsx │ │ ├── CanvasRoutes.jsx │ │ ├── ChatbotRoutes.jsx │ │ ├── ExecutionRoutes.jsx │ │ ├── MainRoutes.jsx │ │ ├── RequireAuth.jsx │ │ └── index.jsx │ ├── serviceWorker.js │ ├── store │ │ ├── actions.js │ │ ├── constant.js │ │ ├── context │ │ │ ├── ConfigContext.jsx │ │ │ ├── ConfirmContext.jsx │ │ │ ├── ConfirmContextProvider.jsx │ │ │ ├── ErrorContext.jsx │ │ │ └── ReactFlowContext.jsx │ │ ├── index.jsx │ │ ├── reducer.jsx │ │ └── reducers │ │ │ ├── authSlice.js │ │ │ ├── canvasReducer.js │ │ │ ├── customizationReducer.js │ │ │ ├── dialogReducer.js │ │ │ └── notifierReducer.js │ ├── themes │ │ ├── compStyleOverride.js │ │ ├── index.js │ │ ├── palette.js │ │ └── typography.js │ ├── ui-component │ │ ├── array │ │ │ └── ArrayRenderer.jsx │ │ ├── button │ │ │ ├── AnimateButton.jsx │ │ │ ├── CopyToClipboardButton.jsx │ │ │ ├── FlowListMenu.jsx │ │ │ ├── ImageButton.js │ │ │ ├── RBACButtons.jsx │ │ │ ├── StyledButton.jsx │ │ │ ├── StyledFab.jsx │ │ │ ├── ThumbsDownButton.jsx │ │ │ └── ThumbsUpButton.jsx │ │ ├── cards │ │ │ ├── DocumentStoreCard.jsx │ │ │ ├── FollowUpPromptsCard.jsx │ │ │ ├── ItemCard.jsx │ │ │ ├── MainCard.jsx │ │ │ ├── NodeCardWrapper.jsx │ │ │ ├── Skeleton │ │ │ │ └── ChatflowCard.jsx │ │ │ ├── StarterPromptsCard.css │ │ │ ├── StarterPromptsCard.jsx │ │ │ └── StatsCard.jsx │ │ ├── checkbox │ │ │ └── Checkbox.jsx │ │ ├── dialog │ │ │ ├── AboutDialog.jsx │ │ │ ├── AdditionalParamsDialog.jsx │ │ │ ├── AgentflowGeneratorDialog.jsx │ │ │ ├── AllowedDomainsDialog.jsx │ │ │ ├── ChatFeedbackContentDialog.jsx │ │ │ ├── ChatFeedbackDialog.jsx │ │ │ ├── ChatflowConfigurationDialog.jsx │ │ │ ├── ConditionDialog.jsx │ │ │ ├── ConfirmDialog.jsx │ │ │ ├── ExpandRichInputDialog.jsx │ │ │ ├── ExpandTextDialog.css │ │ │ ├── ExpandTextDialog.jsx │ │ │ ├── ExportAsTemplateDialog.jsx │ │ │ ├── FormatPromptValuesDialog.jsx │ │ │ ├── InputHintDialog.jsx │ │ │ ├── InviteUsersDialog.jsx │ │ │ ├── ManageScrapedLinksDialog.jsx │ │ │ ├── NodeInfoDialog.jsx │ │ │ ├── NvidiaNIMDialog.jsx │ │ │ ├── PromptGeneratorDialog.jsx │ │ │ ├── PromptLangsmithHubDialog.jsx │ │ │ ├── SaveChatflowDialog.jsx │ │ │ ├── ShareWithWorkspaceDialog.jsx │ │ │ ├── SourceDocDialog.jsx │ │ │ ├── SpeechToTextDialog.jsx │ │ │ ├── StarterPromptsDialog.jsx │ │ │ ├── TagDialog.jsx │ │ │ ├── ViewLeadsDialog.jsx │ │ │ └── ViewMessagesDialog.jsx │ │ ├── dropdown │ │ │ ├── AsyncDropdown.jsx │ │ │ ├── Dropdown.jsx │ │ │ └── MultiDropdown.jsx │ │ ├── editor │ │ │ └── CodeEditor.jsx │ │ ├── extended │ │ │ ├── AllowedDomains.jsx │ │ │ ├── AnalyseFlow.jsx │ │ │ ├── Avatar.jsx │ │ │ ├── Breadcrumbs.jsx │ │ │ ├── ChatFeedback.jsx │ │ │ ├── Feedback.jsx │ │ │ ├── FileUpload.jsx │ │ │ ├── FollowUpPrompts.jsx │ │ │ ├── Leads.jsx │ │ │ ├── Logo.jsx │ │ │ ├── OverrideConfig.jsx │ │ │ ├── PostProcessing.jsx │ │ │ ├── RateLimit.jsx │ │ │ ├── Security.jsx │ │ │ ├── SpeechToText.jsx │ │ │ ├── StarterPrompts.jsx │ │ │ └── Transitions.jsx │ │ ├── file │ │ │ └── File.jsx │ │ ├── form │ │ │ └── settings.jsx │ │ ├── grid │ │ │ ├── DataGrid.jsx │ │ │ └── Grid.jsx │ │ ├── input │ │ │ ├── Input.jsx │ │ │ ├── RichInput.jsx │ │ │ ├── SuggestionList.jsx │ │ │ └── suggestionOption.js │ │ ├── json │ │ │ ├── JsonEditor.jsx │ │ │ ├── JsonViewer.jsx │ │ │ └── SelectVariable.jsx │ │ ├── loading │ │ │ ├── BackdropLoader.jsx │ │ │ ├── Loadable.jsx │ │ │ └── Loader.jsx │ │ ├── markdown │ │ │ ├── CodeBlock.jsx │ │ │ ├── Markdown.css │ │ │ └── MemoizedReactMarkdown.jsx │ │ ├── rbac │ │ │ └── available.jsx │ │ ├── slider │ │ │ └── InputSlider.jsx │ │ ├── subscription │ │ │ └── PricingDialog.jsx │ │ ├── switch │ │ │ └── Switch.jsx │ │ ├── table │ │ │ ├── ExecutionsListTable.jsx │ │ │ ├── FilesTable.jsx │ │ │ ├── FlowListTable.jsx │ │ │ ├── MarketplaceTable.jsx │ │ │ ├── Table.jsx │ │ │ ├── TableStyles.jsx │ │ │ └── ToolsListTable.jsx │ │ ├── tabs │ │ │ ├── Tab.jsx │ │ │ ├── TabPanel.jsx │ │ │ ├── TabsList.jsx │ │ │ └── tabColors.js │ │ ├── toolbar │ │ │ └── Toolbar.js │ │ └── tooltip │ │ │ ├── MoreItemsTooltip.jsx │ │ │ ├── NodeTooltip.jsx │ │ │ └── TooltipWithParser.jsx │ ├── utils │ │ ├── authUtils.js │ │ ├── errorHandler.js │ │ ├── exportImport.js │ │ ├── genericHelper.js │ │ ├── useNotifier.js │ │ ├── usePrompt.js │ │ └── validation.js │ └── views │ │ ├── account │ │ ├── UserProfile.jsx │ │ └── index.jsx │ │ ├── agentexecutions │ │ ├── ExecutionDetails.jsx │ │ ├── NodeExecutionDetails.jsx │ │ ├── PublicExecutionDetails.jsx │ │ ├── ShareExecutionDialog.jsx │ │ └── index.jsx │ │ ├── agentflows │ │ └── index.jsx │ │ ├── agentflowsv2 │ │ ├── AgentFlowEdge.jsx │ │ ├── AgentFlowNode.jsx │ │ ├── Canvas.jsx │ │ ├── ConfigInput.jsx │ │ ├── ConnectionLine.jsx │ │ ├── EditNodeDialog.jsx │ │ ├── IterationNode.jsx │ │ ├── MarketplaceCanvas.jsx │ │ ├── StickyNote.jsx │ │ └── index.css │ │ ├── apikey │ │ ├── APIKeyDialog.jsx │ │ ├── UploadJSONFileDialog.jsx │ │ └── index.jsx │ │ ├── assistants │ │ ├── custom │ │ │ ├── AddCustomAssistantDialog.jsx │ │ │ ├── CustomAssistantConfigurePreview.jsx │ │ │ ├── CustomAssistantLayout.jsx │ │ │ └── toolAgentFlow.js │ │ ├── index.jsx │ │ └── openai │ │ │ ├── AssistantDialog.jsx │ │ │ ├── AssistantVectorStoreDialog.jsx │ │ │ ├── DeleteConfirmDialog.jsx │ │ │ ├── LoadAssistantDialog.jsx │ │ │ └── OpenAIAssistantLayout.jsx │ │ ├── auth │ │ ├── expired.jsx │ │ ├── forgotPassword.jsx │ │ ├── login.jsx │ │ ├── loginActivity.jsx │ │ ├── register.jsx │ │ ├── resetPassword.jsx │ │ ├── signIn.jsx │ │ ├── ssoConfig.jsx │ │ ├── ssoSuccess.jsx │ │ ├── unauthorized.jsx │ │ └── verify-email.jsx │ │ ├── canvas │ │ ├── AddNodes.jsx │ │ ├── ButtonEdge.jsx │ │ ├── CanvasHeader.jsx │ │ ├── CanvasNode.jsx │ │ ├── CredentialInputHandler.jsx │ │ ├── NodeInputHandler.jsx │ │ ├── NodeOutputHandler.jsx │ │ ├── StickyNote.jsx │ │ ├── index.css │ │ └── index.jsx │ │ ├── chatbot │ │ └── index.jsx │ │ ├── chatflows │ │ ├── APICodeDialog.jsx │ │ ├── EmbedChat.jsx │ │ ├── ShareChatbot.jsx │ │ └── index.jsx │ │ ├── chatmessage │ │ ├── AgentExecutedDataCard.jsx │ │ ├── AgentReasoningCard.jsx │ │ ├── ChatExpandDialog.jsx │ │ ├── ChatInputHistory.js │ │ ├── ChatMessage.css │ │ ├── ChatMessage.jsx │ │ ├── ChatPopUp.jsx │ │ ├── ValidationPopUp.jsx │ │ ├── audio-recording.css │ │ └── audio-recording.js │ │ ├── credentials │ │ ├── AddEditCredentialDialog.jsx │ │ ├── CredentialInputHandler.jsx │ │ ├── CredentialListDialog.jsx │ │ └── index.jsx │ │ ├── datasets │ │ ├── AddEditDatasetDialog.jsx │ │ ├── AddEditDatasetRowDialog.jsx │ │ ├── DatasetItems.jsx │ │ ├── UploadCSVFileDialog.jsx │ │ └── index.jsx │ │ ├── docstore │ │ ├── AddDocStoreDialog.jsx │ │ ├── ComponentsListDialog.jsx │ │ ├── DeleteDocStoreDialog.jsx │ │ ├── DocStoreAPIDialog.jsx │ │ ├── DocStoreInputHandler.jsx │ │ ├── DocumentLoaderListDialog.jsx │ │ ├── DocumentStoreDetail.jsx │ │ ├── DocumentStoreStatus.jsx │ │ ├── ExpandedChunkDialog.jsx │ │ ├── LoaderConfigPreviewChunks.jsx │ │ ├── ShowStoredChunks.jsx │ │ ├── UpsertHistoryDetailsDialog.jsx │ │ ├── UpsertHistorySideDrawer.jsx │ │ ├── VectorStoreConfigure.jsx │ │ ├── VectorStoreQuery.jsx │ │ └── index.jsx │ │ ├── evaluations │ │ ├── ChartLatency.jsx │ │ ├── ChartPassPrnt.jsx │ │ ├── ChartTokens.jsx │ │ ├── CreateEvaluationDialog.jsx │ │ ├── EvalsResultDialog.jsx │ │ ├── EvaluationResult.jsx │ │ ├── EvaluationResultSideDrawer.jsx │ │ ├── EvaluationResultVersionsSideDrawer.jsx │ │ ├── MetricsItemCard.jsx │ │ └── index.jsx │ │ ├── evaluators │ │ ├── AddEditEvaluatorDialog.jsx │ │ ├── SamplePromptDialog.jsx │ │ ├── evaluationPrompts.js │ │ ├── evaluatorConstant.js │ │ └── index.jsx │ │ ├── files │ │ └── index.jsx │ │ ├── marketplaces │ │ ├── MarketplaceCanvas.jsx │ │ ├── MarketplaceCanvasHeader.jsx │ │ ├── MarketplaceCanvasNode.jsx │ │ └── index.jsx │ │ ├── organization │ │ └── index.jsx │ │ ├── roles │ │ ├── CreateEditRoleDialog.css │ │ ├── CreateEditRoleDialog.jsx │ │ └── index.jsx │ │ ├── serverlogs │ │ └── index.jsx │ │ ├── settings │ │ └── index.jsx │ │ ├── tools │ │ ├── HowToUseFunctionDialog.jsx │ │ ├── PasteJSONDialog.jsx │ │ ├── ToolDialog.jsx │ │ └── index.jsx │ │ ├── users │ │ ├── EditUserDialog.jsx │ │ └── index.jsx │ │ ├── variables │ │ ├── AddEditVariableDialog.jsx │ │ ├── HowToUseVariablesDialog.jsx │ │ └── index.jsx │ │ ├── vectorstore │ │ ├── UpsertHistoryDialog.jsx │ │ ├── UpsertResultDialog.jsx │ │ ├── VectorStoreDialog.jsx │ │ └── VectorStorePopUp.jsx │ │ └── workspace │ │ ├── AddEditWorkspaceDialog.jsx │ │ ├── WorkspaceUsers.jsx │ │ └── index.jsx │ └── vite.config.js ├── pnpm-lock.yaml ├── pnpm-workspace.yaml └── turbo.json /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | build 4 | 5 | **/node_modules 6 | **/build 7 | **/dist 8 | 9 | packages/server/.env 10 | packages/ui/.env 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '[FEATURE]' 5 | labels: '' 6 | assignees: '' 7 | --- 8 | 9 | **Describe the feature you'd like** 10 | A clear and concise description of what you would like Flowise to have. 11 | 12 | **Additional context** 13 | Add any other context or screenshots about the feature request here. 14 | -------------------------------------------------------------------------------- /.github/workflows/test_docker_build.yml: -------------------------------------------------------------------------------- 1 | name: Test Docker Build 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | pull_request: 9 | branches: 10 | - '*' 11 | workflow_dispatch: 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | env: 16 | PUPPETEER_SKIP_DOWNLOAD: true 17 | steps: 18 | - uses: actions/checkout@v4 19 | - run: docker build --no-cache -t flowise . 20 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | pnpm quick # prettify 5 | pnpm lint-staged # eslint lint(also include prettify but prettify support more file extensions than eslint, so run prettify first) 6 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers = true 2 | strict-peer-dependencies = false 3 | prefer-workspace-packages = true 4 | link-workspace-packages = deep 5 | hoist = true 6 | shamefully-hoist = true 7 | -------------------------------------------------------------------------------- /assets/Demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/assets/Demo.png -------------------------------------------------------------------------------- /assets/FloWiseAI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/assets/FloWiseAI.png -------------------------------------------------------------------------------- /assets/FloWiseAI_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/assets/FloWiseAI_black.png -------------------------------------------------------------------------------- /assets/FloWiseAI_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/assets/FloWiseAI_dark.png -------------------------------------------------------------------------------- /assets/FloWiseAI_primary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/assets/FloWiseAI_primary.png -------------------------------------------------------------------------------- /images/flowise.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/images/flowise.gif -------------------------------------------------------------------------------- /images/flowise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/images/flowise.png -------------------------------------------------------------------------------- /images/flowise_agentflow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/images/flowise_agentflow.gif -------------------------------------------------------------------------------- /metrics/otel/compose.yaml: -------------------------------------------------------------------------------- 1 | version: "2" 2 | services: 3 | otel-collector: 4 | image: otel/opentelemetry-collector-contrib 5 | command: ["--config=/etc/otelcol-contrib/config.yaml", "--feature-gates=-exporter.datadogexporter.DisableAPMStats", "${OTELCOL_ARGS}"] 6 | volumes: 7 | - ./otel.config.yml:/etc/otelcol-contrib/config.yaml 8 | ports: 9 | - 1888:1888 # pprof extension 10 | - 8888:8888 # Prometheus metrics exposed by the Collector 11 | - 8889:8889 # Prometheus exporter metrics 12 | - 13133:13133 # health_check extension 13 | - 4317:4317 # OTLP gRPC receiver 14 | - 4318:4318 # OTLP http receiver 15 | - 55679:55679 # zpages extension 16 | -------------------------------------------------------------------------------- /metrics/prometheus/prometheus.config.yml: -------------------------------------------------------------------------------- 1 | global: 2 | scrape_interval: 5s 3 | scrape_configs: 4 | - job_name: "FlowiseAI" 5 | static_configs: 6 | - targets: ["localhost:8080","localhost:3000"] 7 | 8 | metrics_path: /api/v1/metrics/ 9 | scheme: http -------------------------------------------------------------------------------- /packages/api-documentation/README-ZH.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Flowise API 文档 4 | 5 | [English](./README.md) | 中文 6 | 7 | 这是 Flowise 公共 API 的列表,允许用户以编程方式执行与 GUI 中相同的许多任务。 8 | 9 | 独立运行: 10 | 11 | 1. 启动 Flowise 服务器: 12 | ```sh 13 | cd Flowise 14 | pnpm start 15 | ``` 16 | 2. 启动 API 文档服务器: 17 | ```sh 18 | cd packages/api-documentation 19 | pnpm start 20 | ``` 21 | 22 | 开发模式下运行: 23 | 24 | ```sh 25 | cd Flowise 26 | pnpm dev 27 | ``` 28 | 29 | 文档将在此地址提供:http://localhost:6655/api-docs 30 | 31 | ## 许可证 32 | 33 | 此存储库中的源代码根据 Apache 2.0 许可证 提供 34 | -------------------------------------------------------------------------------- /packages/api-documentation/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignore": ["**/*.spec.ts", ".git", "node_modules"], 3 | "watch": ["src"], 4 | "exec": "ts-node ./src/index.ts", 5 | "ext": "ts, yml" 6 | } 7 | -------------------------------------------------------------------------------- /packages/api-documentation/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "flowise-api", 3 | "version": "1.0.2", 4 | "description": "Flowise API documentation server", 5 | "scripts": { 6 | "build": "tsc", 7 | "start": "node dist/index.js", 8 | "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0" 9 | }, 10 | "license": "SEE LICENSE IN LICENSE.md", 11 | "dependencies": { 12 | "swagger-jsdoc": "^6.2.8", 13 | "swagger-ui-express": "^5.0.0" 14 | }, 15 | "devDependencies": { 16 | "@types/swagger-jsdoc": "^6.0.1", 17 | "@types/swagger-ui-express": "^4.1.3", 18 | "tsc-watch": "^6.0.4" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/api-documentation/src/index.ts: -------------------------------------------------------------------------------- 1 | import express, { Request, Response } from 'express' 2 | import swaggerUi from 'swagger-ui-express' 3 | import { swaggerDocs, swaggerExplorerOptions } from './configs/swagger.config' 4 | 5 | const app = express() 6 | const port = 6655 7 | 8 | app.get('/', (req: Request, res: Response) => { 9 | res.redirect('/api-docs') 10 | }) 11 | 12 | app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocs, swaggerExplorerOptions)) 13 | 14 | app.listen(port, () => { 15 | // eslint-disable-next-line no-console 16 | console.log(`Flowise API documentation server listening on port ${port}`) 17 | }) 18 | -------------------------------------------------------------------------------- /packages/components/README-ZH.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 流式组件 4 | 5 | [English](./README.md) | 中文 6 | 7 | Flowise 的应用集成。包含节点和凭据。 8 | 9 | ![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true) 10 | 11 | 安装: 12 | 13 | ```bash 14 | npm i flowise-components 15 | ``` 16 | 17 | ## 许可证 18 | 19 | 此存储库中的源代码在[Apache License Version 2.0 许可证](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md)下提供。 20 | -------------------------------------------------------------------------------- /packages/components/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Flowise Components 4 | 5 | English | [中文](./README-ZH.md) 6 | 7 | Apps integration for Flowise. Contain Nodes and Credentials. 8 | 9 | ![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true) 10 | 11 | Install: 12 | 13 | ```bash 14 | npm i flowise-components 15 | ``` 16 | 17 | ## License 18 | 19 | Source code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md). 20 | -------------------------------------------------------------------------------- /packages/components/credentials/AlibabaApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class AlibabaApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'Alibaba API' 11 | this.name = 'AlibabaApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'Alibaba Api Key', 16 | name: 'alibabaApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: AlibabaApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/AnthropicApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class AnthropicApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'Anthropic API' 11 | this.name = 'anthropicApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'Anthropic Api Key', 16 | name: 'anthropicApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: AnthropicApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/AssemblyAI.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class AssemblyAIApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'AssemblyAI API' 11 | this.name = 'assemblyAIApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'AssemblyAI Api Key', 16 | name: 'assemblyAIApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: AssemblyAIApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/ChatflowApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class ChatflowApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'Chatflow API' 11 | this.name = 'chatflowApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'Chatflow Api Key', 16 | name: 'chatflowApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: ChatflowApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/CohereApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class CohereApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'Cohere API' 11 | this.name = 'cohereApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'Cohere Api Key', 16 | name: 'cohereApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: CohereApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/ComposioApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class ComposioApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'Composio API' 11 | this.name = 'composioApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'Composio API Key', 16 | name: 'composioApi', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: ComposioApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/DeepseekApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeCredential, INodeParams } from '../src/Interface' 2 | 3 | class DeepseekApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'DeepseekAI API' 11 | this.name = 'deepseekApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'DeepseekAI API Key', 16 | name: 'deepseekApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: DeepseekApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/E2B.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class E2BApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'E2B API' 11 | this.name = 'E2BApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'E2B Api Key', 16 | name: 'e2bApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: E2BApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/FireworksApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class FireworksApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'Fireworks API' 11 | this.name = 'fireworksApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'Fireworks Api Key', 16 | name: 'fireworksApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: FireworksApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/GroqApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class GroqApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'Groq API' 11 | this.name = 'groqApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'Groq Api Key', 16 | name: 'groqApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: GroqApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/LitellmApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class LitellmApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'Litellm API' 11 | this.name = 'litellmApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'API Key', 16 | name: 'litellmApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: LitellmApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/LocalAIApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class LocalAIApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'LocalAI API' 11 | this.name = 'localAIApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'LocalAI Api Key', 16 | name: 'localAIApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: LocalAIApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/OpenAIApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class OpenAIApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'OpenAI API' 11 | this.name = 'openAIApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'OpenAI Api Key', 16 | name: 'openAIApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: OpenAIApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/QdrantApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class QdrantApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | description: string 8 | inputs: INodeParams[] 9 | 10 | constructor() { 11 | this.label = 'Qdrant API' 12 | this.name = 'qdrantApi' 13 | this.version = 1.0 14 | this.inputs = [ 15 | { 16 | label: 'Qdrant API Key', 17 | name: 'qdrantApiKey', 18 | type: 'password' 19 | } 20 | ] 21 | } 22 | } 23 | 24 | module.exports = { credClass: QdrantApi } 25 | -------------------------------------------------------------------------------- /packages/components/credentials/ReplicateApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class ReplicateApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'Replicate API' 11 | this.name = 'replicateApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'Replicate Api Key', 16 | name: 'replicateApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: ReplicateApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/SerpApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class SerpApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | description: string 8 | inputs: INodeParams[] 9 | 10 | constructor() { 11 | this.label = 'Serp API' 12 | this.name = 'serpApi' 13 | this.version = 1.0 14 | this.inputs = [ 15 | { 16 | label: 'Serp Api Key', 17 | name: 'serpApiKey', 18 | type: 'password' 19 | } 20 | ] 21 | } 22 | } 23 | 24 | module.exports = { credClass: SerpApi } 25 | -------------------------------------------------------------------------------- /packages/components/credentials/SerperApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class SerperApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | description: string 8 | inputs: INodeParams[] 9 | 10 | constructor() { 11 | this.label = 'Serper API' 12 | this.name = 'serperApi' 13 | this.version = 1.0 14 | this.inputs = [ 15 | { 16 | label: 'Serper Api Key', 17 | name: 'serperApiKey', 18 | type: 'password' 19 | } 20 | ] 21 | } 22 | } 23 | 24 | module.exports = { credClass: SerperApi } 25 | -------------------------------------------------------------------------------- /packages/components/credentials/TogetherAIApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class TogetherAIApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | inputs: INodeParams[] 8 | 9 | constructor() { 10 | this.label = 'TogetherAI API' 11 | this.name = 'togetherAIApi' 12 | this.version = 1.0 13 | this.inputs = [ 14 | { 15 | label: 'TogetherAI Api Key', 16 | name: 'togetherAIApiKey', 17 | type: 'password' 18 | } 19 | ] 20 | } 21 | } 22 | 23 | module.exports = { credClass: TogetherAIApi } 24 | -------------------------------------------------------------------------------- /packages/components/credentials/XaiApi.credential.ts: -------------------------------------------------------------------------------- 1 | import { INodeParams, INodeCredential } from '../src/Interface' 2 | 3 | class XaiApi implements INodeCredential { 4 | label: string 5 | name: string 6 | version: number 7 | description: string 8 | inputs: INodeParams[] 9 | 10 | constructor() { 11 | this.label = 'Xai API' 12 | this.name = 'xaiApi' 13 | this.version = 1.0 14 | this.inputs = [ 15 | { 16 | label: 'X AI API Key', 17 | name: 'xaiApiKey', 18 | type: 'password' 19 | } 20 | ] 21 | } 22 | } 23 | 24 | module.exports = { credClass: XaiApi } 25 | -------------------------------------------------------------------------------- /packages/components/gulpfile.ts: -------------------------------------------------------------------------------- 1 | const { src, dest } = require('gulp') 2 | 3 | function copyIcons() { 4 | return src(['nodes/**/*.{jpg,png,svg}']).pipe(dest('dist/nodes')) 5 | } 6 | 7 | exports.default = copyIcons 8 | -------------------------------------------------------------------------------- /packages/components/nodes/agentflow/Interface.Agentflow.ts: -------------------------------------------------------------------------------- 1 | export interface ILLMMessage { 2 | role: 'system' | 'assistant' | 'user' | 'tool' | 'developer' 3 | content: string 4 | } 5 | 6 | export interface IStructuredOutput { 7 | key: string 8 | type: 'string' | 'stringArray' | 'number' | 'boolean' | 'enum' | 'jsonArray' 9 | enumValues?: string 10 | description?: string 11 | jsonSchema?: string 12 | } 13 | 14 | export interface IFlowState { 15 | key: string 16 | value: string 17 | } 18 | -------------------------------------------------------------------------------- /packages/components/nodes/agents/AirtableAgent/airtable.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/agents/BabyAGI/babyagi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/components/nodes/agents/ConversationalAgent/agent.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/components/nodes/agents/ConversationalRetrievalToolAgent/toolAgent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/agents/ConversationalRetrievalToolAgent/toolAgent.png -------------------------------------------------------------------------------- /packages/components/nodes/agents/LlamaIndexAgents/AnthropicAgent/Anthropic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/agents/ReActAgentChat/agent.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/components/nodes/agents/ReActAgentLLM/agent.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/components/nodes/agents/ToolAgent/toolAgent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/agents/ToolAgent/toolAgent.png -------------------------------------------------------------------------------- /packages/components/nodes/agents/XMLAgent/xmlagent.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/analytic/Arize/arize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/analytic/Arize/arize.png -------------------------------------------------------------------------------- /packages/components/nodes/analytic/LangSmith/langchain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/analytic/LangSmith/langchain.png -------------------------------------------------------------------------------- /packages/components/nodes/analytic/Opik/opik.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/analytic/Opik/opik.png -------------------------------------------------------------------------------- /packages/components/nodes/analytic/Phoenix/phoenix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/analytic/Phoenix/phoenix.png -------------------------------------------------------------------------------- /packages/components/nodes/chains/LLMChain/chain.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/chains/VectaraChain/vectara.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/chains/VectaraChain/vectara.png -------------------------------------------------------------------------------- /packages/components/nodes/chatmodels/ChatAnthropic/Anthropic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/chatmodels/ChatCerebras/cerebras.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/chatmodels/ChatCerebras/cerebras.png -------------------------------------------------------------------------------- /packages/components/nodes/chatmodels/ChatFireworks/Fireworks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/chatmodels/ChatFireworks/Fireworks.png -------------------------------------------------------------------------------- /packages/components/nodes/chatmodels/ChatIBMWatsonx/ibm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/chatmodels/ChatIBMWatsonx/ibm.png -------------------------------------------------------------------------------- /packages/components/nodes/chatmodels/ChatLitellm/litellm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/chatmodels/ChatLitellm/litellm.jpg -------------------------------------------------------------------------------- /packages/components/nodes/chatmodels/ChatLocalAI/localai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/chatmodels/ChatLocalAI/localai.png -------------------------------------------------------------------------------- /packages/components/nodes/chatmodels/ChatNemoGuardrails/readme.md: -------------------------------------------------------------------------------- 1 | Parameters: 2 | 3 | config_id 4 | baseUrl 5 | 6 | ``` 7 | /v1/chat/completions 8 | ``` 9 | 10 | ```json 11 | { 12 | "config_id": "bedrock", 13 | "messages": [ 14 | { 15 | "role": "user", 16 | "content": "Hello! What can you do for me?" 17 | } 18 | ] 19 | } 20 | ``` 21 | -------------------------------------------------------------------------------- /packages/components/nodes/chatmodels/ChatOpenRouter/openRouter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/chatmodels/ChatTogetherAI/togetherai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/chatmodels/ChatTogetherAI/togetherai.png -------------------------------------------------------------------------------- /packages/components/nodes/chatmodels/ChatXAI/xai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/chatmodels/ChatXAI/xai.png -------------------------------------------------------------------------------- /packages/components/nodes/chatmodels/Groq/groq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/chatmodels/Groq/groq.png -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/Airtable/airtable.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/Cheerio/cheerio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/CustomDocumentLoader/customDocLoader.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/DocumentStore/dstore.svg: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/Epub/epub.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/Figma/figma.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/File/file.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/FireCrawl/firecrawl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/documentloaders/FireCrawl/firecrawl.png -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/Folder/folder.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/PlainText/plaintext.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/S3Directory/s3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/S3File/s3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/documentloaders/Text/Txt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/components/nodes/embeddings/IBMWatsonxEmbedding/ibm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/embeddings/IBMWatsonxEmbedding/ibm.png -------------------------------------------------------------------------------- /packages/components/nodes/embeddings/LocalAIEmbedding/localai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/embeddings/LocalAIEmbedding/localai.png -------------------------------------------------------------------------------- /packages/components/nodes/embeddings/TogetherAIEmbedding/togetherai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/embeddings/TogetherAIEmbedding/togetherai.png -------------------------------------------------------------------------------- /packages/components/nodes/embeddings/VoyageAIEmbedding/voyageai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/embeddings/VoyageAIEmbedding/voyageai.png -------------------------------------------------------------------------------- /packages/components/nodes/engine/ChatEngine/chat-engine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/engine/ChatEngine/chat-engine.png -------------------------------------------------------------------------------- /packages/components/nodes/engine/ChatEngine/context-chat-engine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/engine/ChatEngine/context-chat-engine.png -------------------------------------------------------------------------------- /packages/components/nodes/engine/EngineUtils.ts: -------------------------------------------------------------------------------- 1 | import { Metadata, NodeWithScore } from 'llamaindex' 2 | 3 | export const reformatSourceDocuments = (sourceNodes: NodeWithScore[]) => { 4 | const sourceDocuments = [] 5 | for (const node of sourceNodes) { 6 | sourceDocuments.push({ 7 | pageContent: (node.node as any).text, 8 | metadata: node.node.metadata 9 | }) 10 | } 11 | return sourceDocuments 12 | } 13 | -------------------------------------------------------------------------------- /packages/components/nodes/engine/QueryEngine/query-engine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/engine/QueryEngine/query-engine.png -------------------------------------------------------------------------------- /packages/components/nodes/engine/SubQuestionQueryEngine/subQueryEngine.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/llms/Fireworks/fireworks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/llms/Fireworks/fireworks.png -------------------------------------------------------------------------------- /packages/components/nodes/llms/IBMWatsonx/ibm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/llms/IBMWatsonx/ibm.png -------------------------------------------------------------------------------- /packages/components/nodes/llms/Replicate/replicate.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/components/nodes/llms/TogetherAI/togetherai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/llms/TogetherAI/togetherai.png -------------------------------------------------------------------------------- /packages/components/nodes/memory/AgentMemory/MySQLAgentMemory/mysql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/memory/AgentMemory/MySQLAgentMemory/mysql.png -------------------------------------------------------------------------------- /packages/components/nodes/memory/AgentMemory/SQLiteAgentMemory/sqlite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/memory/AgentMemory/SQLiteAgentMemory/sqlite.png -------------------------------------------------------------------------------- /packages/components/nodes/memory/AgentMemory/agentmemory.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/memory/MongoDBMemory/mongodb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/moderation/SimplePromptModeration/moderation.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/components/nodes/multiagents/Supervisor/supervisor.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/multiagents/Worker/worker.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/prompts/ChatPromptTemplate/prompt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/prompts/FewShotPromptTemplate/prompt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/prompts/PromptLangfuse/prompt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/prompts/PromptTemplate/prompt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/recordmanager/MySQLRecordManager/mysql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/recordmanager/MySQLRecordManager/mysql.png -------------------------------------------------------------------------------- /packages/components/nodes/recordmanager/SQLiteRecordManager/sqlite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/recordmanager/SQLiteRecordManager/sqlite.png -------------------------------------------------------------------------------- /packages/components/nodes/responsesynthesizer/CompactRefine/compactrefine.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/responsesynthesizer/Refine/refine.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/responsesynthesizer/SimpleResponseBuilder/simplerb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/responsesynthesizer/TreeSummarize/treesummarize.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/responsesynthesizer/base.ts: -------------------------------------------------------------------------------- 1 | export class ResponseSynthesizerClass { 2 | type: string 3 | textQAPromptTemplate?: any 4 | refinePromptTemplate?: any 5 | 6 | constructor(params: { type: string; textQAPromptTemplate?: any; refinePromptTemplate?: any }) { 7 | this.type = params.type 8 | this.textQAPromptTemplate = params.textQAPromptTemplate 9 | this.refinePromptTemplate = params.refinePromptTemplate 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/components/nodes/retrievers/CustomRetriever/customRetriever.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/retrievers/EmbeddingsFilterRetriever/compressionRetriever.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/components/nodes/retrievers/ExtractMetadataRetriever/dynamicMetadataRetriever.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/retrievers/LLMFilterRetriever/llmFilterRetriever.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/retrievers/MultiQueryRetriever/multiQueryRetriever.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/retrievers/PromptRetriever/promptretriever.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/retrievers/RRFRetriever/rrfRetriever.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/retrievers/SimilarityThresholdRetriever/similaritythreshold.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/components/nodes/retrievers/VectorStoreRetriever/vectorretriever.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/components/nodes/retrievers/VoyageAIRetriever/voyageai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/retrievers/VoyageAIRetriever/voyageai.png -------------------------------------------------------------------------------- /packages/components/nodes/sequentialagents/Agent/agent.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/sequentialagents/Agent/seqAgent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/sequentialagents/Agent/seqAgent.png -------------------------------------------------------------------------------- /packages/components/nodes/sequentialagents/Condition/condition.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/sequentialagents/ConditionAgent/condition.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/sequentialagents/End/end.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/sequentialagents/ExecuteFlow/executeflow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/sequentialagents/LLMNode/llmNode.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/sequentialagents/Loop/loop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/sequentialagents/Start/start.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/sequentialagents/State/state.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/sequentialagents/ToolNode/toolNode.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/speechtotext/assemblyai/assemblyai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/speechtotext/assemblyai/assemblyai.png -------------------------------------------------------------------------------- /packages/components/nodes/textsplitters/CharacterTextSplitter/textsplitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/textsplitters/HtmlToMarkdownTextSplitter/htmlToMarkdownTextSplitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/textsplitters/MarkdownTextSplitter/markdownTextSplitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/textsplitters/RecursiveCharacterTextSplitter/textsplitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/textsplitters/TokenTextSplitter/tiktoken.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/tools/Calculator/calculator.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/components/nodes/tools/ChainTool/chaintool.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/components/nodes/tools/ChatflowTool/chatflowTool.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/tools/CodeInterpreterE2B/e2b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/tools/CodeInterpreterE2B/e2b.png -------------------------------------------------------------------------------- /packages/components/nodes/tools/CurrentDateTime/currentDateTime.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/tools/ExaSearch/exa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/components/nodes/tools/MCP/CustomMCP/customMCP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/tools/MCP/CustomMCP/customMCP.png -------------------------------------------------------------------------------- /packages/components/nodes/tools/MCP/Supergateway/supermachine-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/tools/MCP/Supergateway/supermachine-logo.png -------------------------------------------------------------------------------- /packages/components/nodes/tools/QueryEngineTool/queryEngineTool.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/tools/ReadFile/readfile.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/components/nodes/tools/Serper/serper.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/components/nodes/tools/StripeTool/stripe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/tools/StripeTool/stripe.png -------------------------------------------------------------------------------- /packages/components/nodes/tools/WolframAlpha/wolframalpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/tools/WolframAlpha/wolframalpha.png -------------------------------------------------------------------------------- /packages/components/nodes/tools/WriteFile/writefile.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/components/nodes/utilities/GetVariable/getvar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/components/nodes/utilities/IfElseFunction/ifelsefunction.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/components/nodes/utilities/SetVariable/setvar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/components/nodes/utilities/StickyNote/stickyNote.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/components/nodes/vectorstores/Chroma/chroma.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/components/nodes/vectorstores/DocumentStoreVS/dstore.svg: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /packages/components/nodes/vectorstores/Elasticsearch/elasticsearch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/vectorstores/Elasticsearch/elasticsearch.png -------------------------------------------------------------------------------- /packages/components/nodes/vectorstores/Meilisearch/Meilisearch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/vectorstores/Meilisearch/Meilisearch.png -------------------------------------------------------------------------------- /packages/components/nodes/vectorstores/MongoDBAtlas/mongodb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/vectorstores/Qdrant/qdrant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/vectorstores/Qdrant/qdrant.png -------------------------------------------------------------------------------- /packages/components/nodes/vectorstores/SimpleStore/simplevs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/components/nodes/vectorstores/Vectara/vectara.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/vectorstores/Vectara/vectara.png -------------------------------------------------------------------------------- /packages/components/nodes/vectorstores/Weaviate/weaviate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/components/nodes/vectorstores/Weaviate/weaviate.png -------------------------------------------------------------------------------- /packages/components/src/index.ts: -------------------------------------------------------------------------------- 1 | import dotenv from 'dotenv' 2 | import path from 'path' 3 | 4 | const envPath = path.join(__dirname, '..', '..', '.env') 5 | dotenv.config({ path: envPath, override: true }) 6 | 7 | export * from './Interface' 8 | export * from './utils' 9 | export * from './speechToText' 10 | export * from './storageUtils' 11 | export * from './handler' 12 | export * from '../evaluation/EvaluationRunner' 13 | export * from './followUpPrompts' 14 | export * from './validator' 15 | export * from './agentflowv2Generator' 16 | -------------------------------------------------------------------------------- /packages/server/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: '../../babel.config.js' 3 | } 4 | -------------------------------------------------------------------------------- /packages/server/bin/.gitattributes: -------------------------------------------------------------------------------- 1 | dev eol=lf 2 | run eol=lf -------------------------------------------------------------------------------- /packages/server/bin/dev: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const oclif = require('@oclif/core') 4 | 5 | const path = require('path') 6 | const project = path.join(__dirname, '..', 'tsconfig.json') 7 | 8 | // In dev mode -> use ts-node and dev plugins 9 | process.env.NODE_ENV = 'development' 10 | 11 | require('ts-node').register({ project }) 12 | 13 | // In dev mode, always show stack traces 14 | oclif.settings.debug = true 15 | 16 | // Start the CLI 17 | oclif.run().then(oclif.flush).catch(oclif.Errors.handle) 18 | -------------------------------------------------------------------------------- /packages/server/bin/dev.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | node "%~dp0\dev" %* -------------------------------------------------------------------------------- /packages/server/bin/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | const oclif = require('@oclif/core') 4 | 5 | oclif.run().then(require('@oclif/core/flush')).catch(require('@oclif/core/handle')) 6 | -------------------------------------------------------------------------------- /packages/server/bin/run.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | node "%~dp0\run" %* -------------------------------------------------------------------------------- /packages/server/cypress.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'cypress' 2 | 3 | export default defineConfig({ 4 | e2e: { 5 | setupNodeEvents() { 6 | // implement node event listeners here 7 | } 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /packages/server/cypress/fixtures/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/server/cypress/fixtures/.keep -------------------------------------------------------------------------------- /packages/server/gulpfile.ts: -------------------------------------------------------------------------------- 1 | import { dest, src } from 'gulp' 2 | 3 | function copyEmailTemplates() { 4 | return src(['src/enterprise/emails/*.hbs']).pipe(dest('dist/enterprise/emails')) 5 | } 6 | 7 | exports.default = copyEmailTemplates 8 | -------------------------------------------------------------------------------- /packages/server/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "ignore": ["**/*.spec.ts", ".git", "node_modules"], 3 | "watch": ["commands", "index.ts", "src"], 4 | "exec": "pnpm start", 5 | "ext": "ts" 6 | } 7 | -------------------------------------------------------------------------------- /packages/server/src/AppConfig.ts: -------------------------------------------------------------------------------- 1 | export const appConfig = { 2 | showCommunityNodes: process.env.SHOW_COMMUNITY_NODES ? process.env.SHOW_COMMUNITY_NODES.toLowerCase() === 'true' : false 3 | // todo: add more config options here like database, log, storage, credential and allow modification from UI 4 | } 5 | -------------------------------------------------------------------------------- /packages/server/src/controllers/attachments/index.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response, NextFunction } from 'express' 2 | import attachmentsService from '../../services/attachments' 3 | 4 | const createAttachment = async (req: Request, res: Response, next: NextFunction) => { 5 | try { 6 | const apiResponse = await attachmentsService.createAttachment(req) 7 | return res.json(apiResponse) 8 | } catch (error) { 9 | next(error) 10 | } 11 | } 12 | 13 | export default { 14 | createAttachment 15 | } 16 | -------------------------------------------------------------------------------- /packages/server/src/controllers/get-upload-path/index.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response, NextFunction } from 'express' 2 | import { getStoragePath } from 'flowise-components' 3 | 4 | const getPathForUploads = async (req: Request, res: Response, next: NextFunction) => { 5 | try { 6 | const apiResponse = { 7 | storagePath: getStoragePath() 8 | } 9 | return res.json(apiResponse) 10 | } catch (error) { 11 | next(error) 12 | } 13 | } 14 | 15 | export default { 16 | getPathForUploads 17 | } 18 | -------------------------------------------------------------------------------- /packages/server/src/controllers/log/index.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response, NextFunction } from 'express' 2 | import logService from '../../services/log' 3 | 4 | // Get logs 5 | const getLogs = async (req: Request, res: Response, next: NextFunction) => { 6 | try { 7 | const apiResponse = await logService.getLogs(req.query?.startDate as string, req.query?.endDate as string) 8 | res.send(apiResponse) 9 | } catch (error) { 10 | next(error) 11 | } 12 | } 13 | 14 | export default { 15 | getLogs 16 | } 17 | -------------------------------------------------------------------------------- /packages/server/src/controllers/ping/index.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response, NextFunction } from 'express' 2 | 3 | const getPing = async (req: Request, res: Response, next: NextFunction) => { 4 | try { 5 | return res.status(200).send('pong') 6 | } catch (error) { 7 | next(error) 8 | } 9 | } 10 | 11 | export default { 12 | getPing 13 | } 14 | -------------------------------------------------------------------------------- /packages/server/src/controllers/prompts-lists/index.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response, NextFunction } from 'express' 2 | import promptsListsService from '../../services/prompts-lists' 3 | 4 | // Prompt from Hub 5 | const createPromptsList = async (req: Request, res: Response, next: NextFunction) => { 6 | try { 7 | const apiResponse = await promptsListsService.createPromptsList(req.body) 8 | return res.json(apiResponse) 9 | } catch (error) { 10 | next(error) 11 | } 12 | } 13 | 14 | export default { 15 | createPromptsList 16 | } 17 | -------------------------------------------------------------------------------- /packages/server/src/controllers/settings/index.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response, NextFunction } from 'express' 2 | import settingsService from '../../services/settings' 3 | 4 | const getSettingsList = async (req: Request, res: Response, next: NextFunction) => { 5 | try { 6 | const apiResponse = await settingsService.getSettings() 7 | return res.json(apiResponse) 8 | } catch (error) { 9 | next(error) 10 | } 11 | } 12 | 13 | export default { 14 | getSettingsList 15 | } 16 | -------------------------------------------------------------------------------- /packages/server/src/controllers/versions/index.ts: -------------------------------------------------------------------------------- 1 | import { Request, Response, NextFunction } from 'express' 2 | import versionsService from '../../services/versions' 3 | 4 | const getVersion = async (req: Request, res: Response, next: NextFunction) => { 5 | try { 6 | const apiResponse = await versionsService.getVersion() 7 | return res.json(apiResponse) 8 | } catch (error) { 9 | next(error) 10 | } 11 | } 12 | 13 | export default { 14 | getVersion 15 | } 16 | -------------------------------------------------------------------------------- /packages/server/src/database/entities/ApiKey.ts: -------------------------------------------------------------------------------- 1 | import { Column, Entity, PrimaryColumn, UpdateDateColumn } from 'typeorm' 2 | import { IApiKey } from '../../Interface' 3 | 4 | @Entity('apikey') 5 | export class ApiKey implements IApiKey { 6 | @PrimaryColumn({ type: 'varchar', length: 20 }) 7 | id: string 8 | 9 | @Column({ type: 'text' }) 10 | apiKey: string 11 | 12 | @Column({ type: 'text' }) 13 | apiSecret: string 14 | 15 | @Column({ type: 'text' }) 16 | keyName: string 17 | 18 | @Column({ type: 'timestamp' }) 19 | @UpdateDateColumn() 20 | updatedDate: Date 21 | 22 | @Column({ nullable: true, type: 'text' }) 23 | workspaceId?: string 24 | } 25 | -------------------------------------------------------------------------------- /packages/server/src/database/entities/Dataset.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | import { Entity, Column, CreateDateColumn, UpdateDateColumn, PrimaryGeneratedColumn } from 'typeorm' 3 | import { IAssistant, IDataset } from '../../Interface' 4 | 5 | @Entity() 6 | export class Dataset implements IDataset { 7 | @PrimaryGeneratedColumn('uuid') 8 | id: string 9 | 10 | @Column({ type: 'text' }) 11 | name: string 12 | 13 | @Column({ type: 'text' }) 14 | description: string 15 | 16 | @CreateDateColumn() 17 | createdDate: Date 18 | 19 | @UpdateDateColumn() 20 | updatedDate: Date 21 | 22 | @Column({ nullable: true, type: 'text' }) 23 | workspaceId?: string 24 | } 25 | -------------------------------------------------------------------------------- /packages/server/src/database/entities/Evaluator.ts: -------------------------------------------------------------------------------- 1 | import { Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm' 2 | import { IEvaluator } from '../../Interface' 3 | 4 | //1714808591644 5 | 6 | @Entity() 7 | export class Evaluator implements IEvaluator { 8 | @PrimaryGeneratedColumn('uuid') 9 | id: string 10 | 11 | @Column() 12 | name: string 13 | 14 | @Column() 15 | type: string 16 | 17 | @Column() 18 | config: string 19 | 20 | @CreateDateColumn() 21 | createdDate: Date 22 | 23 | @UpdateDateColumn() 24 | updatedDate: Date 25 | 26 | @Column({ nullable: true, type: 'text' }) 27 | workspaceId?: string 28 | } 29 | -------------------------------------------------------------------------------- /packages/server/src/database/entities/Lead.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn } from 'typeorm' 3 | import { ILead } from '../../Interface' 4 | 5 | @Entity() 6 | export class Lead implements ILead { 7 | @PrimaryGeneratedColumn('uuid') 8 | id: string 9 | 10 | @Column() 11 | name?: string 12 | 13 | @Column() 14 | email?: string 15 | 16 | @Column() 17 | phone?: string 18 | 19 | @Column() 20 | chatflowid: string 21 | 22 | @Column() 23 | chatId: string 24 | 25 | @CreateDateColumn() 26 | createdDate: Date 27 | } 28 | -------------------------------------------------------------------------------- /packages/server/src/database/entities/UpsertHistory.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | import { Entity, Column, PrimaryGeneratedColumn, Index, CreateDateColumn } from 'typeorm' 3 | import { IUpsertHistory } from '../../Interface' 4 | 5 | @Entity() 6 | export class UpsertHistory implements IUpsertHistory { 7 | @PrimaryGeneratedColumn('uuid') 8 | id: string 9 | 10 | @Index() 11 | @Column() 12 | chatflowid: string 13 | 14 | @Column() 15 | result: string 16 | 17 | @Column() 18 | flowData: string 19 | 20 | @CreateDateColumn() 21 | date: Date 22 | } 23 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1693997791471-ModifyChatFlow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyChatFlow1693997791471 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE \`chat_flow\` MODIFY \`chatbotConfig\` TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE \`chat_flow\` MODIFY \`chatbotConfig\` VARCHAR;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1693999022236-ModifyChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyChatMessage1693999022236 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE \`chat_message\` MODIFY \`sourceDocuments\` TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE \`chat_message\` MODIFY \`sourceDocuments\` VARCHAR;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1693999261583-ModifyCredential.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyCredential1693999261583 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE \`credential\` MODIFY \`encryptedData\` TEXT NOT NULL;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE \`credential\` MODIFY \`encryptedData\` VARCHAR NOT NULL;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1694001465232-ModifyTool.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyTool1694001465232 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE \`tool\` MODIFY \`schema\` TEXT, MODIFY \`func\` TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE \`tool\` MODIFY \`schema\` VARCHAR, MODIFY \`func\` VARCHAR;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1694099200729-AddApiConfig.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddApiConfig1694099200729 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_flow', 'apiConfig') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_flow\` ADD COLUMN \`apiConfig\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_flow\` DROP COLUMN \`apiConfig\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1694432361423-AddAnalytic.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddAnalytic1694432361423 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_flow', 'analytic') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_flow\` ADD COLUMN \`analytic\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_flow\` DROP COLUMN \`analytic\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1699481607341-AddUsedToolsToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddUsedToolsToChatMessage1699481607341 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_message', 'usedTools') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`usedTools\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`usedTools\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1699900910291-AddCategoryToChatFlow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddCategoryToChatFlow1699900910291 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_flow', 'category') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_flow\` ADD COLUMN \`category\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_flow\` DROP COLUMN \`category\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1701788586491-AddFileUploadsToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddFileUploadsToChatMessage1701788586491 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_message', 'fileUploads') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`fileUploads\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`fileUploads\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1706364937060-AddSpeechToText.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddSpeechToText1706364937060 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_flow', 'speechToText') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_flow\` ADD COLUMN \`speechToText\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_flow\` DROP COLUMN \`speechToText\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1711538023578-AddLeadToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddLeadToChatMessage1711538023578 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_message', 'leadEmail') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`leadEmail\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`leadEmail\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1716300000000-AddTypeToChatFlow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddTypeToChatFlow1716300000000 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_flow', 'type') 6 | if (!columnExists) await queryRunner.query(`ALTER TABLE \`chat_flow\` ADD COLUMN \`type\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_flow\` DROP COLUMN \`type\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1721078251523-AddActionToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddActionToChatMessage1721078251523 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_message', 'action') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`action\` LONGTEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`action\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1726156258465-AddArtifactsToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddArtifactsToChatMessage1726156258465 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_message', 'artifacts') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`artifacts\` LONGTEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`artifacts\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1733752119696-AddSeqNoToDatasetRow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddSeqNoToDatasetRow1733752119696 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('dataset_row', 'sequence_no') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`dataset_row\` ADD COLUMN \`sequence_no\` INT DEFAULT -1;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE "dataset_row" DROP COLUMN "sequence_no";`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1744964560174-AddErrorToEvaluationRun.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddErrorToEvaluationRun1744964560174 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('evaluation_run', 'errors') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`evaluation_run\` ADD COLUMN \`errors\` LONGTEXT NULL DEFAULT '[]';`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE "evaluation_run" DROP COLUMN "errors";`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mariadb/1747902489801-ModifyExecutionDataColumnType.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyExecutionDataColumnType1747902489801 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | queryRunner.query(`ALTER TABLE \`execution\` MODIFY COLUMN \`executionData\` LONGTEXT NOT NULL;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | queryRunner.query(`ALTER TABLE \`execution\` MODIFY COLUMN \`executionData\` TEXT NOT NULL;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1693997791471-ModifyChatFlow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyChatFlow1693997791471 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE \`chat_flow\` MODIFY \`chatbotConfig\` TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE \`chat_flow\` MODIFY \`chatbotConfig\` VARCHAR;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1693999022236-ModifyChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyChatMessage1693999022236 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE \`chat_message\` MODIFY \`sourceDocuments\` TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE \`chat_message\` MODIFY \`sourceDocuments\` VARCHAR;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1693999261583-ModifyCredential.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyCredential1693999261583 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE \`credential\` MODIFY \`encryptedData\` TEXT NOT NULL;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE \`credential\` MODIFY \`encryptedData\` VARCHAR NOT NULL;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1694001465232-ModifyTool.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyTool1694001465232 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE \`tool\` MODIFY \`schema\` TEXT, MODIFY \`func\` TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE \`tool\` MODIFY \`schema\` VARCHAR, MODIFY \`func\` VARCHAR;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1694099200729-AddApiConfig.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddApiConfig1694099200729 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_flow', 'apiConfig') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_flow\` ADD COLUMN \`apiConfig\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_flow\` DROP COLUMN \`apiConfig\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1694432361423-AddAnalytic.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddAnalytic1694432361423 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_flow', 'analytic') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_flow\` ADD COLUMN \`analytic\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_flow\` DROP COLUMN \`analytic\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1699481607341-AddUsedToolsToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddUsedToolsToChatMessage1699481607341 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_message', 'usedTools') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`usedTools\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`usedTools\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1699900910291-AddCategoryToChatFlow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddCategoryToChatFlow1699900910291 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_flow', 'category') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_flow\` ADD COLUMN \`category\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_flow\` DROP COLUMN \`category\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1701788586491-AddFileUploadsToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddFileUploadsToChatMessage1701788586491 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_message', 'fileUploads') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`fileUploads\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`fileUploads\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1706364937060-AddSpeechToText.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddSpeechToText1706364937060 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_flow', 'speechToText') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_flow\` ADD COLUMN \`speechToText\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_flow\` DROP COLUMN \`speechToText\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1711538023578-AddLeadToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddLeadToChatMessage1711538023578 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_message', 'leadEmail') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`leadEmail\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`leadEmail\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1716300000000-AddTypeToChatFlow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddTypeToChatFlow1716300000000 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_flow', 'type') 6 | if (!columnExists) await queryRunner.query(`ALTER TABLE \`chat_flow\` ADD COLUMN \`type\` TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_flow\` DROP COLUMN \`type\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1721078251523-AddActionToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddActionToChatMessage1721078251523 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_message', 'action') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`action\` LONGTEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`action\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1726156258465-AddArtifactsToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddArtifactsToChatMessage1726156258465 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_message', 'artifacts') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`chat_message\` ADD COLUMN \`artifacts\` LONGTEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE \`chat_message\` DROP COLUMN \`artifacts\`;`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1733752119696-AddSeqNoToDatasetRow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddSeqNoToDatasetRow1733752119696 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('dataset_row', 'sequence_no') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`dataset_row\` ADD COLUMN \`sequence_no\` INT DEFAULT -1;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE "dataset_row" DROP COLUMN "sequence_no";`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1744964560174-AddErrorToEvaluationRun.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddErrorToEvaluationRun1744964560174 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('evaluation_run', 'errors') 6 | if (!columnExists) queryRunner.query(`ALTER TABLE \`evaluation_run\` ADD COLUMN \`errors\` LONGTEXT NULL DEFAULT ('[]');`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE "evaluation_run" DROP COLUMN "errors";`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/mysql/1747902489801-ModifyExecutionDataColumnType.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyExecutionDataColumnType1747902489801 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | queryRunner.query(`ALTER TABLE \`execution\` MODIFY COLUMN \`executionData\` LONGTEXT NOT NULL;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | queryRunner.query(`ALTER TABLE \`execution\` MODIFY COLUMN \`executionData\` TEXT NOT NULL;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1693995626941-ModifyChatFlow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyChatFlow1693995626941 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_flow" ALTER COLUMN "chatbotConfig" TYPE TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_flow" ALTER COLUMN "chatbotConfig" TYPE VARCHAR;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1693996694528-ModifyChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyChatMessage1693996694528 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_message" ALTER COLUMN "sourceDocuments" TYPE TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_message" ALTER COLUMN "sourceDocuments" TYPE VARCHAR;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1693997070000-ModifyCredential.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyCredential1693997070000 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "credential" ALTER COLUMN "encryptedData" TYPE TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "credential" ALTER COLUMN "encryptedData" TYPE VARCHAR;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1693997339912-ModifyTool.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class ModifyTool1693997339912 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "tool" ALTER COLUMN "schema" TYPE TEXT, ALTER COLUMN "func" TYPE TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "tool" ALTER COLUMN "schema" TYPE VARCHAR, ALTER COLUMN "func" TYPE VARCHAR;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1694099183389-AddApiConfig.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddApiConfig1694099183389 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_flow" ADD COLUMN IF NOT EXISTS "apiConfig" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_flow" DROP COLUMN "apiConfig";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1694432361423-AddAnalytic.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddAnalytic1694432361423 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_flow" ADD COLUMN IF NOT EXISTS "analytic" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_flow" DROP COLUMN "analytic";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1699481607341-AddUsedToolsToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddUsedToolsToChatMessage1699481607341 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN IF NOT EXISTS "usedTools" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "usedTools";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1699900910291-AddCategoryToChatFlow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddCategoryToChatFlow1699900910291 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_flow" ADD COLUMN IF NOT EXISTS "category" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_flow" DROP COLUMN "category";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1700271021237-AddFileAnnotationsToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddFileAnnotationsToChatMessage1700271021237 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN IF NOT EXISTS "fileAnnotations" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "fileAnnotations";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1701788586491-AddFileUploadsToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddFileUploadsToChatMessage1701788586491 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN IF NOT EXISTS "fileUploads" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "fileUploads";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1706364937060-AddSpeechToText.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddSpeechToText1706364937060 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_flow" ADD COLUMN IF NOT EXISTS "speechToText" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_flow" DROP COLUMN "speechToText";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1711538016098-AddLeadToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddLeadToChatMessage1711538016098 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN IF NOT EXISTS "leadEmail" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "leadEmail";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1714679514451-AddAgentReasoningToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddAgentReasoningToChatMessage1714679514451 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN IF NOT EXISTS "agentReasoning" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "agentReasoning";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1716300000000-AddTypeToChatFlow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddTypeToChatFlow1716300000000 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_flow" ADD COLUMN IF NOT EXISTS "type" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_flow" DROP COLUMN "type";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1721078251523-AddActionToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddActionToChatMessage1721078251523 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN IF NOT EXISTS "action" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "action";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1726156258465-AddArtifactsToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddArtifactsToChatMessage1726156258465 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN IF NOT EXISTS "artifacts" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "artifacts";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1733752119696-AddSeqNoToDatasetRow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddSeqNoToDatasetRow1733752119696 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "dataset_row" ADD COLUMN IF NOT EXISTS "sequence_no" integer DEFAULT -1;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "dataset_row" DROP COLUMN "sequence_no";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/postgres/1744964560174-AddErrorToEvaluationRun.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddErrorToEvaluationRun1744964560174 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "evaluation_run" ADD COLUMN IF NOT EXISTS "errors" TEXT NULL DEFAULT '[]';`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "evaluation_run" DROP COLUMN "errors";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/sqlite/1694090982460-AddApiConfig.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddApiConfig1694090982460 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_flow" ADD COLUMN "apiConfig" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_flow" DROP COLUMN "apiConfig";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/sqlite/1694432361423-AddAnalytic.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddAnalytic1694432361423 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_flow" ADD COLUMN "analytic" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_flow" DROP COLUMN "analytic";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/sqlite/1699900910291-AddCategoryToChatFlow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddCategoryToChatFlow1699900910291 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_flow" ADD COLUMN "category" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_flow" DROP COLUMN "category";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/sqlite/1706364937060-AddSpeechToText.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddSpeechToText1706364937060 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_flow" ADD COLUMN "speechToText" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_flow" DROP COLUMN "speechToText";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/sqlite/1711537986113-AddLeadToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddLeadToChatMessage1711537986113 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN "leadEmail" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "leadEmail";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/sqlite/1714679514451-AddAgentReasoningToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddAgentReasoningToChatMessage1714679514451 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN "agentReasoning" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "agentReasoning";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/sqlite/1716300000000-AddTypeToChatFlow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddTypeToChatFlow1716300000000 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | const columnExists = await queryRunner.hasColumn('chat_flow', 'type') 6 | if (!columnExists) await queryRunner.query(`ALTER TABLE "chat_flow"ADD COLUMN "type" TEXT;`) 7 | } 8 | 9 | public async down(queryRunner: QueryRunner): Promise { 10 | await queryRunner.query(`ALTER TABLE "chat_flow" DROP COLUMN "type";`) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/sqlite/1721078251523-AddActionToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddActionToChatMessage1721078251523 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN "action" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "action";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/sqlite/1726156258465-AddArtifactsToChatMessage.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddArtifactsToChatMessage1726156258465 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "chat_message" ADD COLUMN "artifacts" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "chat_message" DROP COLUMN "artifacts";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/sqlite/1733752119696-AddSeqNoToDatasetRow.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddSeqNoToDatasetRow1733752119696 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "dataset_row" ADD COLUMN "sequence_no" integer DEFAULT -1;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "dataset_row" DROP COLUMN "sequence_no";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/database/migrations/sqlite/1744964560174-AddErrorToEvaluationRun.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddErrorToEvaluationRun1744964560174 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "evaluation_run" ADD COLUMN "errors" TEXT NULL DEFAULT '[]';`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "evaluation_run" DROP COLUMN "errors";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/enterprise/controllers/auth/index.ts: -------------------------------------------------------------------------------- 1 | import { NextFunction, Request, Response } from 'express' 2 | import { getRunningExpressApp } from '../../../utils/getRunningExpressApp' 3 | 4 | const getAllPermissions = async (req: Request, res: Response, next: NextFunction) => { 5 | try { 6 | const appServer = getRunningExpressApp() 7 | return res.json(appServer.identityManager.getPermissions()) 8 | } catch (error) { 9 | next(error) 10 | } 11 | } 12 | 13 | export default { 14 | getAllPermissions 15 | } 16 | -------------------------------------------------------------------------------- /packages/server/src/enterprise/database/migrations/mariadb/1726655750383-AddWorkspaceIdToCustomTemplate.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddWorkspaceIdToCustomTemplate1726655750383 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE \`custom_template\` ADD COLUMN \`workspaceId\` varchar(36);`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE \`custom_template\` DROP COLUMN \`workspaceId\`;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/enterprise/database/migrations/mysql/1726655750383-AddWorkspaceIdToCustomTemplate.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddWorkspaceIdToCustomTemplate1726655750383 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE \`custom_template\` ADD COLUMN \`workspaceId\` varchar(36);`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE \`custom_template\` DROP COLUMN \`workspaceId\`;`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/enterprise/database/migrations/postgres/1726655750383-AddWorkspaceIdToCustomTemplate.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddWorkspaceIdToCustomTemplate1726655750383 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "custom_template" ADD COLUMN IF NOT EXISTS "workspaceId" varchar;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "custom_template" DROP COLUMN "workspaceId";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/enterprise/database/migrations/sqlite/1726655750383-AddWorkspaceIdToCustomTemplate.ts: -------------------------------------------------------------------------------- 1 | import { MigrationInterface, QueryRunner } from 'typeorm' 2 | 3 | export class AddWorkspaceIdToCustomTemplate1726655750383 implements MigrationInterface { 4 | public async up(queryRunner: QueryRunner): Promise { 5 | await queryRunner.query(`ALTER TABLE "custom_template" ADD COLUMN "workspaceId" TEXT;`) 6 | } 7 | 8 | public async down(queryRunner: QueryRunner): Promise { 9 | await queryRunner.query(`ALTER TABLE "custom_template" DROP COLUMN "workspaceId";`) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/enterprise/routes/audit/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import auditController from '../../controllers/audit' 3 | import { checkPermission } from '../../rbac/PermissionCheck' 4 | const router = express.Router() 5 | 6 | router.post(['/', '/login-activity'], checkPermission('loginActivity:view'), auditController.fetchLoginActivity) 7 | router.post(['/', '/login-activity/delete'], checkPermission('loginActivity:delete'), auditController.deleteLoginActivity) 8 | 9 | export default router 10 | -------------------------------------------------------------------------------- /packages/server/src/enterprise/routes/auth/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import authController from '../../controllers/auth' 3 | const router = express.Router() 4 | 5 | // RBAC 6 | router.get(['/', '/permissions'], authController.getAllPermissions) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/enterprise/routes/role.route.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import { RoleController } from '../controllers/role.controller' 3 | import { checkPermission } from '../rbac/PermissionCheck' 4 | 5 | const router = express.Router() 6 | const roleController = new RoleController() 7 | 8 | router.get('/', roleController.read) 9 | 10 | router.post('/', checkPermission('roles:manage'), roleController.create) 11 | 12 | router.put('/', checkPermission('roles:manage'), roleController.update) 13 | 14 | router.delete('/', checkPermission('roles:manage'), roleController.delete) 15 | 16 | export default router 17 | -------------------------------------------------------------------------------- /packages/server/src/enterprise/routes/user.route.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import { UserController } from '../controllers/user.controller' 3 | 4 | const router = express.Router() 5 | const userController = new UserController() 6 | 7 | router.get('/', userController.read) 8 | router.get('/test', userController.test) 9 | 10 | router.post('/', userController.create) 11 | 12 | router.put('/', userController.update) 13 | 14 | export default router 15 | -------------------------------------------------------------------------------- /packages/server/src/enterprise/utils/ControllerServiceUtils.ts: -------------------------------------------------------------------------------- 1 | import { Equal } from 'typeorm' 2 | import { Request } from 'express' 3 | 4 | export const getWorkspaceSearchOptions = (workspaceId?: string) => { 5 | return workspaceId ? { workspaceId: Equal(workspaceId) } : {} 6 | } 7 | 8 | export const getWorkspaceSearchOptionsFromReq = (req: Request) => { 9 | const workspaceId = req.user?.activeWorkspaceId 10 | return workspaceId ? { workspaceId: Equal(workspaceId) } : {} 11 | } 12 | -------------------------------------------------------------------------------- /packages/server/src/errors/internalFlowiseError/index.ts: -------------------------------------------------------------------------------- 1 | export class InternalFlowiseError extends Error { 2 | statusCode: number 3 | constructor(statusCode: number, message: string) { 4 | super(message) 5 | this.statusCode = statusCode 6 | // capture the stack trace of the error from anywhere in the application 7 | Error.captureStackTrace(this, this.constructor) 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/server/src/routes/agentflowv2-generator/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import agentflowv2GeneratorController from '../../controllers/agentflowv2-generator' 3 | const router = express.Router() 4 | 5 | router.post('/generate', agentflowv2GeneratorController.generateAgentflowv2) 6 | 7 | export default router 8 | -------------------------------------------------------------------------------- /packages/server/src/routes/attachments/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import attachmentsController from '../../controllers/attachments' 3 | import { getMulterStorage } from '../../utils' 4 | 5 | const router = express.Router() 6 | 7 | // CREATE 8 | router.post('/:chatflowId/:chatId', getMulterStorage().array('files'), attachmentsController.createAttachment) 9 | 10 | export default router 11 | -------------------------------------------------------------------------------- /packages/server/src/routes/chat-messages/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import chatMessageController from '../../controllers/chat-messages' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | router.post(['/', '/:id'], chatMessageController.createChatMessage) 7 | 8 | // READ 9 | router.get(['/', '/:id'], chatMessageController.getAllChatMessages) 10 | 11 | // UPDATE 12 | router.put(['/abort/', '/abort/:chatflowid/:chatid'], chatMessageController.abortChatMessage) 13 | 14 | // DELETE 15 | router.delete(['/', '/:id'], chatMessageController.removeAllChatMessages) 16 | 17 | export default router 18 | -------------------------------------------------------------------------------- /packages/server/src/routes/chatflows-streaming/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import chatflowsController from '../../controllers/chatflows' 3 | 4 | const router = express.Router() 5 | 6 | // READ 7 | router.get(['/', '/:id'], chatflowsController.checkIfChatflowIsValidForStreaming) 8 | 9 | export default router 10 | -------------------------------------------------------------------------------- /packages/server/src/routes/chatflows-uploads/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import chatflowsController from '../../controllers/chatflows' 3 | 4 | const router = express.Router() 5 | 6 | // READ 7 | router.get(['/', '/:id'], chatflowsController.checkIfChatflowIsValidForUploads) 8 | 9 | export default router 10 | -------------------------------------------------------------------------------- /packages/server/src/routes/components-credentials-icon/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import componentsCredentialsController from '../../controllers/components-credentials' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | 7 | // READ 8 | router.get(['/', '/:name'], componentsCredentialsController.getSingleComponentsCredentialIcon) 9 | 10 | // UPDATE 11 | 12 | // DELETE 13 | 14 | export default router 15 | -------------------------------------------------------------------------------- /packages/server/src/routes/components-credentials/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import componentsCredentialsController from '../../controllers/components-credentials' 3 | const router = express.Router() 4 | 5 | // READ 6 | router.get('/', componentsCredentialsController.getAllComponentsCredentials) 7 | router.get(['/', '/:name'], componentsCredentialsController.getComponentByName) 8 | 9 | export default router 10 | -------------------------------------------------------------------------------- /packages/server/src/routes/export-import/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import exportImportController from '../../controllers/export-import' 3 | import { checkPermission } from '../../enterprise/rbac/PermissionCheck' 4 | const router = express.Router() 5 | 6 | router.post('/export', checkPermission('workspace:export'), exportImportController.exportData) 7 | 8 | router.post('/import', checkPermission('workspace:import'), exportImportController.importData) 9 | 10 | export default router 11 | -------------------------------------------------------------------------------- /packages/server/src/routes/feedback/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import feedbackController from '../../controllers/feedback' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | router.post(['/', '/:id'], feedbackController.createChatMessageFeedbackForChatflow) 7 | 8 | // READ 9 | router.get(['/', '/:id'], feedbackController.getAllChatMessageFeedback) 10 | 11 | // UPDATE 12 | router.put(['/', '/:id'], feedbackController.updateChatMessageFeedbackForChatflow) 13 | 14 | export default router 15 | -------------------------------------------------------------------------------- /packages/server/src/routes/fetch-links/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import fetchLinksController from '../../controllers/fetch-links' 3 | const router = express.Router() 4 | 5 | // READ 6 | router.get('/', fetchLinksController.getAllLinks) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/routes/files/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import filesController from '../../controllers/files' 3 | const router = express.Router() 4 | 5 | // READ 6 | router.get('/', filesController.getAllFiles) 7 | 8 | // DELETE 9 | router.delete('/', filesController.deleteFile) 10 | 11 | export default router 12 | -------------------------------------------------------------------------------- /packages/server/src/routes/flow-config/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import flowConfigsController from '../../controllers/flow-configs' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | 7 | // READ 8 | router.get(['/', '/:id'], flowConfigsController.getSingleFlowConfig) 9 | 10 | // UPDATE 11 | 12 | // DELETE 13 | 14 | export default router 15 | -------------------------------------------------------------------------------- /packages/server/src/routes/get-upload-file/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import getUploadFileController from '../../controllers/get-upload-file' 3 | const router = express.Router() 4 | 5 | // READ 6 | router.get('/', getUploadFileController.streamUploadedFile) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/routes/get-upload-path/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import getUploadPathController from '../../controllers/get-upload-path' 3 | const router = express.Router() 4 | 5 | // READ 6 | router.get('/', getUploadPathController.getPathForUploads) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/routes/internal-chat-messages/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import chatMessagesController from '../../controllers/chat-messages' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | 7 | // READ 8 | router.get(['/', '/:id'], chatMessagesController.getAllInternalChatMessages) 9 | 10 | // UPDATE 11 | 12 | // DELETE 13 | 14 | export default router 15 | -------------------------------------------------------------------------------- /packages/server/src/routes/internal-predictions/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import internalPredictionsController from '../../controllers/internal-predictions' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | router.post(['/', '/:id'], internalPredictionsController.createInternalPrediction) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/routes/leads/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import leadsController from '../../controllers/leads' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | router.post('/', leadsController.createLeadInChatflow) 7 | 8 | // READ 9 | router.get(['/', '/:id'], leadsController.getAllLeadsForChatflow) 10 | 11 | export default router 12 | -------------------------------------------------------------------------------- /packages/server/src/routes/load-prompts/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import loadPromptsController from '../../controllers/load-prompts' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | router.post('/', loadPromptsController.createPrompt) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/routes/log/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import logController from '../../controllers/log' 3 | import { checkAnyPermission } from '../../enterprise/rbac/PermissionCheck' 4 | const router = express.Router() 5 | 6 | // READ 7 | router.get('/', checkAnyPermission('logs:view'), logController.getLogs) 8 | 9 | export default router 10 | -------------------------------------------------------------------------------- /packages/server/src/routes/node-configs/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import nodeConfigsController from '../../controllers/node-configs' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | router.post('/', nodeConfigsController.getAllNodeConfigs) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/routes/node-custom-functions/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import nodesRouter from '../../controllers/nodes' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | 7 | // READ 8 | router.post('/', nodesRouter.executeCustomFunction) 9 | 10 | // UPDATE 11 | 12 | // DELETE 13 | 14 | export default router 15 | -------------------------------------------------------------------------------- /packages/server/src/routes/node-icons/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import nodesController from '../../controllers/nodes' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | 7 | // READ 8 | router.get(['/', '/:name'], nodesController.getSingleNodeIcon) 9 | 10 | // UPDATE 11 | 12 | // DELETE 13 | 14 | export default router 15 | -------------------------------------------------------------------------------- /packages/server/src/routes/node-load-methods/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import nodesRouter from '../../controllers/nodes' 3 | const router = express.Router() 4 | 5 | router.post(['/', '/:name'], nodesRouter.getSingleNodeAsyncOptions) 6 | 7 | export default router 8 | -------------------------------------------------------------------------------- /packages/server/src/routes/nodes/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import nodesController from '../../controllers/nodes' 3 | const router = express.Router() 4 | 5 | // READ 6 | router.get('/', nodesController.getAllNodes) 7 | router.get(['/', '/:name'], nodesController.getNodeByName) 8 | router.get('/category/:name', nodesController.getNodesByCategory) 9 | 10 | export default router 11 | -------------------------------------------------------------------------------- /packages/server/src/routes/openai-assistants-files/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import openaiAssistantsController from '../../controllers/openai-assistants' 3 | import { getMulterStorage } from '../../utils' 4 | 5 | const router = express.Router() 6 | 7 | router.post('/download/', openaiAssistantsController.getFileFromAssistant) 8 | router.post('/upload/', getMulterStorage().array('files'), openaiAssistantsController.uploadAssistantFiles) 9 | 10 | export default router 11 | -------------------------------------------------------------------------------- /packages/server/src/routes/openai-assistants/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import openaiAssistantsController from '../../controllers/openai-assistants' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | 7 | // READ 8 | router.get('/', openaiAssistantsController.getAllOpenaiAssistants) 9 | router.get(['/', '/:id'], openaiAssistantsController.getSingleOpenaiAssistant) 10 | 11 | // UPDATE 12 | 13 | // DELETE 14 | 15 | export default router 16 | -------------------------------------------------------------------------------- /packages/server/src/routes/openai-realtime/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import openaiRealTimeController from '../../controllers/openai-realtime' 3 | 4 | const router = express.Router() 5 | 6 | // GET 7 | router.get(['/', '/:id'], openaiRealTimeController.getAgentTools) 8 | 9 | // EXECUTE 10 | router.post(['/', '/:id'], openaiRealTimeController.executeAgentTool) 11 | 12 | export default router 13 | -------------------------------------------------------------------------------- /packages/server/src/routes/ping/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import pingController from '../../controllers/ping' 3 | const router = express.Router() 4 | 5 | // GET 6 | router.get('/', pingController.getPing) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/routes/predictions/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import predictionsController from '../../controllers/predictions' 3 | import { getMulterStorage } from '../../utils' 4 | 5 | const router = express.Router() 6 | 7 | // CREATE 8 | router.post( 9 | ['/', '/:id'], 10 | getMulterStorage().array('files'), 11 | predictionsController.getRateLimiterMiddleware, 12 | predictionsController.createPrediction 13 | ) 14 | 15 | export default router 16 | -------------------------------------------------------------------------------- /packages/server/src/routes/pricing/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import pricingController from '../../controllers/pricing' 3 | const router = express.Router() 4 | 5 | // GET 6 | router.get('/', pricingController.getPricing) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/routes/prompts-lists/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import promptsListController from '../../controllers/prompts-lists' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | router.post('/', promptsListController.createPromptsList) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/routes/public-chatbots/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import chatflowsController from '../../controllers/chatflows' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | 7 | // READ 8 | router.get(['/', '/:id'], chatflowsController.getSinglePublicChatbotConfig) 9 | 10 | // UPDATE 11 | 12 | // DELETE 13 | 14 | export default router 15 | -------------------------------------------------------------------------------- /packages/server/src/routes/public-chatflows/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import chatflowsController from '../../controllers/chatflows' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | 7 | // READ 8 | router.get(['/', '/:id'], chatflowsController.getSinglePublicChatflow) 9 | 10 | // UPDATE 11 | 12 | // DELETE 13 | 14 | export default router 15 | -------------------------------------------------------------------------------- /packages/server/src/routes/public-executions/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import executionController from '../../controllers/executions' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | 7 | // READ 8 | router.get(['/', '/:id'], executionController.getPublicExecutionById) 9 | 10 | // UPDATE 11 | 12 | // DELETE 13 | 14 | export default router 15 | -------------------------------------------------------------------------------- /packages/server/src/routes/settings/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import settingsController from '../../controllers/settings' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | router.get('/', settingsController.getSettingsList) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/routes/stats/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import statsController from '../../controllers/stats' 3 | 4 | const router = express.Router() 5 | 6 | // READ 7 | router.get(['/', '/:id'], statsController.getChatflowStats) 8 | 9 | export default router 10 | -------------------------------------------------------------------------------- /packages/server/src/routes/upsert-history/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import upsertHistoryController from '../../controllers/upsert-history' 3 | const router = express.Router() 4 | 5 | // CREATE 6 | 7 | // READ 8 | router.get(['/', '/:id'], upsertHistoryController.getAllUpsertHistory) 9 | 10 | // PATCH 11 | router.patch('/', upsertHistoryController.patchDeleteUpsertHistory) 12 | 13 | // DELETE 14 | 15 | export default router 16 | -------------------------------------------------------------------------------- /packages/server/src/routes/validation/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import validationController from '../../controllers/validation' 3 | const router = express.Router() 4 | 5 | // READ 6 | router.get('/:id', validationController.checkFlowValidation) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/routes/vectors/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import vectorsController from '../../controllers/vectors' 3 | import { getMulterStorage } from '../../utils' 4 | 5 | const router = express.Router() 6 | 7 | // CREATE 8 | router.post( 9 | ['/upsert/', '/upsert/:id'], 10 | getMulterStorage().array('files'), 11 | vectorsController.getRateLimiterMiddleware, 12 | vectorsController.upsertVectorMiddleware 13 | ) 14 | router.post(['/internal-upsert/', '/internal-upsert/:id'], getMulterStorage().array('files'), vectorsController.createInternalUpsert) 15 | 16 | export default router 17 | -------------------------------------------------------------------------------- /packages/server/src/routes/verify/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import apikeyController from '../../controllers/apikey' 3 | const router = express.Router() 4 | 5 | // READ 6 | router.get(['/apikey/', '/apikey/:apikey'], apikeyController.verifyApiKey) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/routes/versions/index.ts: -------------------------------------------------------------------------------- 1 | import express from 'express' 2 | import versionsController from '../../controllers/versions' 3 | const router = express.Router() 4 | 5 | // READ 6 | router.get('/', versionsController.getVersion) 7 | 8 | export default router 9 | -------------------------------------------------------------------------------- /packages/server/src/utils/getRunningExpressApp.ts: -------------------------------------------------------------------------------- 1 | import * as Server from '../index' 2 | 3 | export const getRunningExpressApp = function () { 4 | const runningExpressInstance = Server.getInstance() 5 | if ( 6 | typeof runningExpressInstance === 'undefined' || 7 | typeof runningExpressInstance.nodesPool === 'undefined' || 8 | typeof runningExpressInstance.telemetry === 'undefined' 9 | ) { 10 | throw new Error(`Error: getRunningExpressApp failed!`) 11 | } 12 | return runningExpressInstance 13 | } 14 | -------------------------------------------------------------------------------- /packages/server/src/utils/typeormDataSource.ts: -------------------------------------------------------------------------------- 1 | import { DataSource } from 'typeorm' 2 | import { getDataSource } from '../DataSource' 3 | 4 | export const dataSource: DataSource = getDataSource() 5 | -------------------------------------------------------------------------------- /packages/server/test/utils/api-key.util.test.ts: -------------------------------------------------------------------------------- 1 | import { generateAPIKey } from '../../src/utils/apiKey' 2 | 3 | export function apiKeyTest() { 4 | describe('Api Key', () => { 5 | it('should be able to generate a new api key', () => { 6 | const apiKey = generateAPIKey() 7 | expect(typeof apiKey === 'string').toEqual(true) 8 | }) 9 | }) 10 | } 11 | -------------------------------------------------------------------------------- /packages/ui/.env.example: -------------------------------------------------------------------------------- 1 | VITE_PORT=8080 2 | 3 | # VITE_API_BASE_URL=http://localhost:3000 4 | # VITE_UI_BASE_URL=http://localhost:3000 -------------------------------------------------------------------------------- /packages/ui/.npmignore: -------------------------------------------------------------------------------- 1 | /tests 2 | /src 3 | /public 4 | !build 5 | 6 | yarn-debug.log* 7 | yarn-error.log* 8 | 9 | .eslintrc 10 | .prettierignore 11 | .prettierrc 12 | jsconfig.json 13 | 14 | -------------------------------------------------------------------------------- /packages/ui/README-ZH.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 流程界面 4 | 5 | [English](./README.md) | 中文 6 | 7 | Flowise 的 React 前端界面。 8 | 9 | ![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true) 10 | 11 | 安装: 12 | 13 | ```bash 14 | npm i flowise-ui 15 | ``` 16 | 17 | ## 许可证 18 | 19 | 本仓库中的源代码在[Apache License Version 2.0 许可证](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md)下提供。 20 | -------------------------------------------------------------------------------- /packages/ui/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Flowise UI 4 | 5 | English | [中文](./README-ZH.md) 6 | 7 | React frontend ui for Flowise. 8 | 9 | ![Flowise](https://github.com/FlowiseAI/Flowise/blob/main/images/flowise_agentflow.gif?raw=true) 10 | 11 | Install: 12 | 13 | ```bash 14 | npm i flowise-ui 15 | ``` 16 | 17 | ## License 18 | 19 | Source code in this repository is made available under the [Apache License Version 2.0](https://github.com/FlowiseAI/Flowise/blob/master/LICENSE.md). 20 | -------------------------------------------------------------------------------- /packages/ui/craco.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | webpack: { 3 | configure: { 4 | module: { 5 | rules: [ 6 | { 7 | test: /\.m?js$/, 8 | resolve: { 9 | fullySpecified: false 10 | } 11 | } 12 | ] 13 | }, 14 | ignoreWarnings: [/Failed to parse source map/] // Ignore warnings about source maps 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/ui/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "commonjs", 5 | "paths": { 6 | "@/*": ["./src/*"] 7 | } 8 | }, 9 | "include": ["src/**/*"], 10 | "exclude": ["node_modules"] 11 | } 12 | -------------------------------------------------------------------------------- /packages/ui/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/public/favicon-16x16.png -------------------------------------------------------------------------------- /packages/ui/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/public/favicon-32x32.png -------------------------------------------------------------------------------- /packages/ui/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/public/favicon.ico -------------------------------------------------------------------------------- /packages/ui/src/api/apikey.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getAllAPIKeys = () => client.get('/apikey') 4 | 5 | const createNewAPI = (body) => client.post(`/apikey`, body) 6 | 7 | const updateAPI = (id, body) => client.put(`/apikey/${id}`, body) 8 | 9 | const deleteAPI = (id) => client.delete(`/apikey/${id}`) 10 | 11 | const importAPI = (body) => client.post(`/apikey/import`, body) 12 | 13 | export default { 14 | getAllAPIKeys, 15 | createNewAPI, 16 | updateAPI, 17 | deleteAPI, 18 | importAPI 19 | } 20 | -------------------------------------------------------------------------------- /packages/ui/src/api/attachments.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const createAttachment = (chatflowid, chatid, formData) => 4 | client.post(`/attachments/${chatflowid}/${chatid}`, formData, { 5 | headers: { 'Content-Type': 'multipart/form-data' } 6 | }) 7 | 8 | export default { 9 | createAttachment 10 | } 11 | -------------------------------------------------------------------------------- /packages/ui/src/api/audit.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const fetchLoginActivity = (body) => client.post(`/audit/login-activity`, body) 4 | const deleteLoginActivity = (body) => client.post(`/audit/login-activity/delete`, body) 5 | 6 | export default { 7 | fetchLoginActivity, 8 | deleteLoginActivity 9 | } 10 | -------------------------------------------------------------------------------- /packages/ui/src/api/auth.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | // auth 4 | const resolveLogin = (body) => client.post(`/auth/resolve`, body) 5 | const login = (body) => client.post(`/auth/login`, body) 6 | 7 | // permissions 8 | const getAllPermissions = () => client.get(`/auth/permissions`) 9 | 10 | export default { 11 | resolveLogin, 12 | login, 13 | getAllPermissions 14 | } 15 | -------------------------------------------------------------------------------- /packages/ui/src/api/chatmessagefeedback.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const addFeedback = (id, body) => client.post(`/feedback/${id}`, body) 4 | const updateFeedback = (id, body) => client.put(`/feedback/${id}`, body) 5 | 6 | export default { 7 | addFeedback, 8 | updateFeedback 9 | } 10 | -------------------------------------------------------------------------------- /packages/ui/src/api/config.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getConfig = (id) => client.get(`/flow-config/${id}`) 4 | const getNodeConfig = (body) => client.post(`/node-config`, body) 5 | 6 | export default { 7 | getConfig, 8 | getNodeConfig 9 | } 10 | -------------------------------------------------------------------------------- /packages/ui/src/api/evaluators.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getAllEvaluators = () => client.get('/evaluators') 4 | 5 | //evaluators 6 | const createEvaluator = (body) => client.post(`/evaluators`, body) 7 | const getEvaluator = (id) => client.get(`/evaluators/${id}`) 8 | const updateEvaluator = (id, body) => client.put(`/evaluators/${id}`, body) 9 | const deleteEvaluator = (id) => client.delete(`/evaluators/${id}`) 10 | 11 | export default { 12 | getAllEvaluators, 13 | createEvaluator, 14 | getEvaluator, 15 | updateEvaluator, 16 | deleteEvaluator 17 | } 18 | -------------------------------------------------------------------------------- /packages/ui/src/api/executions.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getAllExecutions = (params = {}) => client.get('/executions', { params }) 4 | const deleteExecutions = (executionIds) => client.delete('/executions', { data: { executionIds } }) 5 | const getExecutionById = (executionId) => client.get(`/executions/${executionId}`) 6 | const getExecutionByIdPublic = (executionId) => client.get(`/public-executions/${executionId}`) 7 | const updateExecution = (executionId, body) => client.put(`/executions/${executionId}`, body) 8 | 9 | export default { 10 | getAllExecutions, 11 | deleteExecutions, 12 | getExecutionById, 13 | getExecutionByIdPublic, 14 | updateExecution 15 | } 16 | -------------------------------------------------------------------------------- /packages/ui/src/api/exportimport.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const exportData = (body) => client.post('/export-import/export', body) 4 | const importData = (body) => client.post('/export-import/import', body) 5 | 6 | export default { 7 | exportData, 8 | importData 9 | } 10 | -------------------------------------------------------------------------------- /packages/ui/src/api/feedback.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getStatsFromChatflow = (id, params) => client.get(`/stats/${id}`, { params: { ...params } }) 4 | 5 | export default { 6 | getStatsFromChatflow 7 | } 8 | -------------------------------------------------------------------------------- /packages/ui/src/api/files.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getAllFiles = () => client.get('/files') 4 | 5 | const deleteFile = (path) => client.delete(`/files`, { params: { path } }) 6 | 7 | export default { 8 | getAllFiles, 9 | deleteFile 10 | } 11 | -------------------------------------------------------------------------------- /packages/ui/src/api/lead.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getLeads = (id) => client.get(`/leads/${id}`) 4 | const addLead = (body) => client.post(`/leads/`, body) 5 | 6 | export default { 7 | getLeads, 8 | addLead 9 | } 10 | -------------------------------------------------------------------------------- /packages/ui/src/api/log.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getLogs = (startDate, endDate) => client.get(`/logs?startDate=${startDate}&endDate=${endDate}`) 4 | 5 | export default { 6 | getLogs 7 | } 8 | -------------------------------------------------------------------------------- /packages/ui/src/api/loginmethod.js: -------------------------------------------------------------------------------- 1 | import client from '@/api/client' 2 | 3 | // TODO: use this endpoint but without the org id because org id will be null 4 | const getLoginMethods = (organizationId) => client.get(`/loginmethod?organizationId=${organizationId}`) 5 | // TODO: don't use this endpoint. 6 | const getDefaultLoginMethods = () => client.get(`/loginmethod/default`) 7 | const updateLoginMethods = (body) => client.put(`/loginmethod`, body) 8 | 9 | const testLoginMethod = (body) => client.post(`/loginmethod/test`, body) 10 | 11 | export default { 12 | getLoginMethods, 13 | updateLoginMethods, 14 | testLoginMethod, 15 | getDefaultLoginMethods 16 | } 17 | -------------------------------------------------------------------------------- /packages/ui/src/api/nodes.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getAllNodes = () => client.get('/nodes') 4 | 5 | const getSpecificNode = (name) => client.get(`/nodes/${name}`) 6 | const getNodesByCategory = (name) => client.get(`/nodes/category/${name}`) 7 | 8 | const executeCustomFunctionNode = (body) => client.post(`/node-custom-function`, body) 9 | 10 | const executeNodeLoadMethod = (name, body) => client.post(`/node-load-method/${name}`, body) 11 | 12 | export default { 13 | getAllNodes, 14 | getSpecificNode, 15 | executeCustomFunctionNode, 16 | getNodesByCategory, 17 | executeNodeLoadMethod 18 | } 19 | -------------------------------------------------------------------------------- /packages/ui/src/api/platformsettings.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getSettings = () => client.get('/settings') 4 | 5 | export default { 6 | getSettings 7 | } 8 | -------------------------------------------------------------------------------- /packages/ui/src/api/prediction.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const sendMessageAndGetPrediction = (id, input) => client.post(`/internal-prediction/${id}`, input) 4 | const sendMessageAndStreamPrediction = (id, input) => client.post(`/internal-prediction/stream/${id}`, input) 5 | const sendMessageAndGetPredictionPublic = (id, input) => client.post(`/prediction/${id}`, input) 6 | 7 | export default { 8 | sendMessageAndGetPrediction, 9 | sendMessageAndStreamPrediction, 10 | sendMessageAndGetPredictionPublic 11 | } 12 | -------------------------------------------------------------------------------- /packages/ui/src/api/pricing.js: -------------------------------------------------------------------------------- 1 | import client from '@/api/client' 2 | 3 | const getPricingPlans = (body) => client.get(`/pricing`, body) 4 | 5 | export default { 6 | getPricingPlans 7 | } 8 | -------------------------------------------------------------------------------- /packages/ui/src/api/prompt.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getAvailablePrompts = (body) => client.post(`/prompts-list`, body) 4 | const getPrompt = (body) => client.post(`/load-prompt`, body) 5 | 6 | export default { 7 | getAvailablePrompts, 8 | getPrompt 9 | } 10 | -------------------------------------------------------------------------------- /packages/ui/src/api/scraper.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const fetchLinks = (url, relativeLinksMethod, relativeLinksLimit) => 4 | client.get(`/fetch-links?url=${encodeURIComponent(url)}&relativeLinksMethod=${relativeLinksMethod}&limit=${relativeLinksLimit}`) 5 | 6 | export default { 7 | fetchLinks 8 | } 9 | -------------------------------------------------------------------------------- /packages/ui/src/api/sso.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const ssoLogin = (providerName) => client.get(`/${providerName}/login`) 4 | 5 | export default { 6 | ssoLogin 7 | } 8 | -------------------------------------------------------------------------------- /packages/ui/src/api/tools.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getAllTools = () => client.get('/tools') 4 | 5 | const getSpecificTool = (id) => client.get(`/tools/${id}`) 6 | 7 | const createNewTool = (body) => client.post(`/tools`, body) 8 | 9 | const updateTool = (id, body) => client.put(`/tools/${id}`, body) 10 | 11 | const deleteTool = (id) => client.delete(`/tools/${id}`) 12 | 13 | export default { 14 | getAllTools, 15 | getSpecificTool, 16 | createNewTool, 17 | updateTool, 18 | deleteTool 19 | } 20 | -------------------------------------------------------------------------------- /packages/ui/src/api/validation.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const checkValidation = (id) => client.get(`/validation/${id}`) 4 | 5 | export default { 6 | checkValidation 7 | } 8 | -------------------------------------------------------------------------------- /packages/ui/src/api/variables.js: -------------------------------------------------------------------------------- 1 | import client from './client' 2 | 3 | const getAllVariables = () => client.get('/variables') 4 | 5 | const createVariable = (body) => client.post(`/variables`, body) 6 | 7 | const updateVariable = (id, body) => client.put(`/variables/${id}`, body) 8 | 9 | const deleteVariable = (id) => client.delete(`/variables/${id}`) 10 | 11 | export default { 12 | getAllVariables, 13 | createVariable, 14 | updateVariable, 15 | deleteVariable 16 | } 17 | -------------------------------------------------------------------------------- /packages/ui/src/assets/images/Exporting.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/Exporting.gif -------------------------------------------------------------------------------- /packages/ui/src/assets/images/account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/account.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/agentflow-generator.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/agentflow-generator.gif -------------------------------------------------------------------------------- /packages/ui/src/assets/images/agentgraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/agentgraph.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/anthropic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/ui/src/assets/images/arize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/arize.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/assemblyai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/assemblyai.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/auth0.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/ui/src/assets/images/cURL.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/ui/src/assets/images/chathistory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/chathistory.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/fileAttachment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/fileAttachment.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/floppy-disc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/floppy-disc.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/flowise_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/flowise_logo.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/flowise_logo_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/flowise_logo_dark.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/google-login-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/google-login-white.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/groq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/groq.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/langchain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/langchain.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/langfuse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/langfuse.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/llamaindex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/llamaindex.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/llmonitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/llmonitor.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/localai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/localai.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/microsoft-azure.svg: -------------------------------------------------------------------------------- 1 | MS-SymbolLockup -------------------------------------------------------------------------------- /packages/ui/src/assets/images/multiagent_supervisor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/multiagent_supervisor.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/multiagent_worker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/multiagent_worker.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/next-agent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/next-agent.gif -------------------------------------------------------------------------------- /packages/ui/src/assets/images/opik.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/opik.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/phoenix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/phoenix.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/robot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/robot.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/sharing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/sharing.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/tool.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/ui/src/assets/images/utilNodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/utilNodes.png -------------------------------------------------------------------------------- /packages/ui/src/assets/images/wave-sound.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlowiseAI/Flowise/63ff703e7a223bdb37d8fe0dcf0a06800adc2755/packages/ui/src/assets/images/wave-sound.jpg -------------------------------------------------------------------------------- /packages/ui/src/config.js: -------------------------------------------------------------------------------- 1 | const config = { 2 | // basename: only at build time to set, and Don't add '/' at end off BASENAME for breadcrumbs, also Don't put only '/' use blank('') instead, 3 | basename: '', 4 | defaultPath: '/chatflows', 5 | // You can specify multiple fallback fonts 6 | fontFamily: `'Inter', 'Roboto', 'Arial', sans-serif`, 7 | borderRadius: 12 8 | } 9 | 10 | export default config 11 | -------------------------------------------------------------------------------- /packages/ui/src/hooks/useScriptRef.jsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from 'react' 2 | 3 | // ==============================|| ELEMENT REFERENCE HOOKS ||============================== // 4 | 5 | const useScriptRef = () => { 6 | const scripted = useRef(true) 7 | 8 | useEffect( 9 | () => () => { 10 | scripted.current = false 11 | }, 12 | [] 13 | ) 14 | 15 | return scripted 16 | } 17 | 18 | export default useScriptRef 19 | -------------------------------------------------------------------------------- /packages/ui/src/layout/MainLayout/Header/ProfileSection/index.css: -------------------------------------------------------------------------------- 1 | .ps__rail-x { 2 | display: none !important; 3 | } 4 | .ps__thumb-x { 5 | display: none !important; 6 | } 7 | -------------------------------------------------------------------------------- /packages/ui/src/layout/MainLayout/LogoSection/index.jsx: -------------------------------------------------------------------------------- 1 | import { Link } from 'react-router-dom' 2 | 3 | // material-ui 4 | import { ButtonBase } from '@mui/material' 5 | 6 | // project imports 7 | import config from '@/config' 8 | import Logo from '@/ui-component/extended/Logo' 9 | 10 | // ==============================|| MAIN LOGO ||============================== // 11 | 12 | const LogoSection = () => ( 13 | 14 | 15 | 16 | ) 17 | 18 | export default LogoSection 19 | -------------------------------------------------------------------------------- /packages/ui/src/layout/MinimalLayout/index.jsx: -------------------------------------------------------------------------------- 1 | import { Outlet } from 'react-router-dom' 2 | 3 | // ==============================|| MINIMAL LAYOUT ||============================== // 4 | 5 | const MinimalLayout = () => ( 6 | <> 7 | 8 | 9 | ) 10 | 11 | export default MinimalLayout 12 | -------------------------------------------------------------------------------- /packages/ui/src/menu-items/index.js: -------------------------------------------------------------------------------- 1 | import dashboard from './dashboard' 2 | 3 | // ==============================|| MENU ITEMS ||============================== // 4 | 5 | export const menuItems = { 6 | items: [dashboard] 7 | } 8 | -------------------------------------------------------------------------------- /packages/ui/src/routes/ChatbotRoutes.jsx: -------------------------------------------------------------------------------- 1 | import { lazy } from 'react' 2 | 3 | // project imports 4 | import Loadable from '@/ui-component/loading/Loadable' 5 | import MinimalLayout from '@/layout/MinimalLayout' 6 | 7 | // canvas routing 8 | const ChatbotFull = Loadable(lazy(() => import('@/views/chatbot'))) 9 | 10 | // ==============================|| CANVAS ROUTING ||============================== // 11 | 12 | const ChatbotRoutes = { 13 | path: '/', 14 | element: , 15 | children: [ 16 | { 17 | path: '/chatbot/:id', 18 | element: 19 | } 20 | ] 21 | } 22 | 23 | export default ChatbotRoutes 24 | -------------------------------------------------------------------------------- /packages/ui/src/routes/index.jsx: -------------------------------------------------------------------------------- 1 | import { useRoutes } from 'react-router-dom' 2 | 3 | // routes 4 | import MainRoutes from './MainRoutes' 5 | import CanvasRoutes from './CanvasRoutes' 6 | import ChatbotRoutes from './ChatbotRoutes' 7 | import config from '@/config' 8 | import AuthRoutes from '@/routes/AuthRoutes' 9 | import ExecutionRoutes from './ExecutionRoutes' 10 | 11 | // ==============================|| ROUTING RENDER ||============================== // 12 | 13 | export default function ThemeRoutes() { 14 | return useRoutes([MainRoutes, AuthRoutes, CanvasRoutes, ChatbotRoutes, ExecutionRoutes], config.basename) 15 | } 16 | -------------------------------------------------------------------------------- /packages/ui/src/store/context/ConfirmContext.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | const ConfirmContext = React.createContext() 4 | 5 | export default ConfirmContext 6 | -------------------------------------------------------------------------------- /packages/ui/src/store/context/ConfirmContextProvider.jsx: -------------------------------------------------------------------------------- 1 | import { useReducer } from 'react' 2 | import PropTypes from 'prop-types' 3 | import alertReducer, { initialState } from '../reducers/dialogReducer' 4 | import ConfirmContext from './ConfirmContext' 5 | 6 | const ConfirmContextProvider = ({ children }) => { 7 | const [state, dispatch] = useReducer(alertReducer, initialState) 8 | 9 | return {children} 10 | } 11 | 12 | ConfirmContextProvider.propTypes = { 13 | children: PropTypes.any 14 | } 15 | 16 | export default ConfirmContextProvider 17 | -------------------------------------------------------------------------------- /packages/ui/src/store/index.jsx: -------------------------------------------------------------------------------- 1 | import { createStore } from 'redux' 2 | import reducer from './reducer' 3 | 4 | // ==============================|| REDUX - MAIN STORE ||============================== // 5 | 6 | const store = createStore(reducer) 7 | const persister = 'Free' 8 | 9 | export { store, persister } 10 | -------------------------------------------------------------------------------- /packages/ui/src/ui-component/button/StyledFab.jsx: -------------------------------------------------------------------------------- 1 | import { styled } from '@mui/material/styles' 2 | import { Fab } from '@mui/material' 3 | 4 | export const StyledFab = styled(Fab)(({ theme, color = 'primary' }) => ({ 5 | color: 'white', 6 | backgroundColor: theme.palette[color].main, 7 | '&:hover': { 8 | backgroundColor: theme.palette[color].main, 9 | backgroundImage: `linear-gradient(rgb(0 0 0/10%) 0 0)` 10 | } 11 | })) 12 | -------------------------------------------------------------------------------- /packages/ui/src/ui-component/cards/StarterPromptsCard.css: -------------------------------------------------------------------------------- 1 | .button-container { 2 | display: flex; 3 | flex-wrap: wrap; 4 | overflow-x: auto; 5 | -webkit-overflow-scrolling: touch; /* For momentum scroll on mobile devices */ 6 | scrollbar-width: none; /* For Firefox */ 7 | } 8 | 9 | .button { 10 | flex: 0 0 auto; /* Don't grow, don't shrink, base width on content */ 11 | } 12 | -------------------------------------------------------------------------------- /packages/ui/src/ui-component/dialog/ExpandTextDialog.css: -------------------------------------------------------------------------------- 1 | .editor__textarea { 2 | outline: 0; 3 | } 4 | .editor__textarea::placeholder { 5 | color: rgba(120, 120, 120, 0.5); 6 | } 7 | -------------------------------------------------------------------------------- /packages/ui/src/ui-component/loading/BackdropLoader.jsx: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types' 2 | import { Backdrop, CircularProgress } from '@mui/material' 3 | 4 | export const BackdropLoader = ({ open }) => { 5 | return ( 6 |
7 | theme.zIndex.drawer + 1 }} open={open}> 8 | 9 | 10 |
11 | ) 12 | } 13 | 14 | BackdropLoader.propTypes = { 15 | open: PropTypes.bool 16 | } 17 | -------------------------------------------------------------------------------- /packages/ui/src/ui-component/loading/Loadable.jsx: -------------------------------------------------------------------------------- 1 | import { Suspense } from 'react' 2 | 3 | // project imports 4 | import Loader from './Loader' 5 | 6 | // ==============================|| LOADABLE - LAZY LOADING ||============================== // 7 | 8 | const Loadable = (Component) => 9 | function WithLoader(props) { 10 | return ( 11 | }> 12 | 13 | 14 | ) 15 | } 16 | 17 | export default Loadable 18 | -------------------------------------------------------------------------------- /packages/ui/src/ui-component/loading/Loader.jsx: -------------------------------------------------------------------------------- 1 | // material-ui 2 | import LinearProgress from '@mui/material/LinearProgress' 3 | import { styled } from '@mui/material/styles' 4 | 5 | // styles 6 | const LoaderWrapper = styled('div')({ 7 | position: 'fixed', 8 | top: 0, 9 | left: 0, 10 | zIndex: 1301, 11 | width: '100%' 12 | }) 13 | 14 | // ==============================|| LOADER ||============================== // 15 | const Loader = () => ( 16 | 17 | 18 | 19 | ) 20 | 21 | export default Loader 22 | -------------------------------------------------------------------------------- /packages/ui/src/ui-component/markdown/Markdown.css: -------------------------------------------------------------------------------- 1 | .react-markdown table { 2 | border-spacing: 0 !important; 3 | border-collapse: collapse !important; 4 | border-color: inherit !important; 5 | display: block !important; 6 | width: max-content !important; 7 | max-width: 100% !important; 8 | overflow: auto !important; 9 | } 10 | 11 | .react-markdown tbody, 12 | .react-markdown td, 13 | .react-markdown tfoot, 14 | .react-markdown th, 15 | .react-markdown thead, 16 | .react-markdown tr { 17 | border-color: inherit !important; 18 | border-style: solid !important; 19 | border-width: 1px !important; 20 | padding: 10px !important; 21 | } 22 | -------------------------------------------------------------------------------- /packages/ui/src/ui-component/rbac/available.jsx: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types' 2 | import { useAuth } from '@/hooks/useAuth' 3 | 4 | export const Available = ({ permission, children }) => { 5 | const { hasPermission } = useAuth() 6 | if (hasPermission(permission)) { 7 | return children 8 | } 9 | } 10 | 11 | Available.propTypes = { 12 | permission: PropTypes.string, 13 | children: PropTypes.element 14 | } 15 | -------------------------------------------------------------------------------- /packages/ui/src/ui-component/tabs/TabPanel.jsx: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types' 2 | import { Box } from '@mui/material' 3 | 4 | export const TabPanel = (props) => { 5 | const { children, value, index, ...other } = props 6 | return ( 7 | 10 | ) 11 | } 12 | 13 | TabPanel.propTypes = { 14 | children: PropTypes.node, 15 | index: PropTypes.number.isRequired, 16 | value: PropTypes.number.isRequired 17 | } 18 | -------------------------------------------------------------------------------- /packages/ui/src/ui-component/tabs/TabsList.jsx: -------------------------------------------------------------------------------- 1 | import { styled } from '@mui/system' 2 | import { TabsList as BaseTabsList } from '@mui/base/TabsList' 3 | import { blue } from './tabColors' 4 | 5 | export const TabsList = styled(BaseTabsList)( 6 | ({ theme, ...props }) => ` 7 | min-width: 400px; 8 | background-color: ${props.sx?.backgroundColor || blue[500]}; 9 | border-radius: 20px; 10 | margin-top: 16px; 11 | margin-bottom: 16px; 12 | display: flex; 13 | align-items: center; 14 | justify-content: center; 15 | align-content: space-between; 16 | box-shadow: 0px 4px 6px ${theme.palette.mode === 'dark' ? 'rgba(0,0,0, 0.4)' : 'rgba(0,0,0, 0.2)'}; 17 | ` 18 | ) 19 | -------------------------------------------------------------------------------- /packages/ui/src/ui-component/tabs/tabColors.js: -------------------------------------------------------------------------------- 1 | export const blue = { 2 | 50: '#F0F7FF', 3 | 100: '#C2E0FF', 4 | 200: '#80BFFF', 5 | 300: '#66B2FF', 6 | 400: '#3399FF', 7 | 500: '#007FFF', 8 | 600: '#0072E5', 9 | 700: '#0059B2', 10 | 800: '#004C99', 11 | 900: '#003A75' 12 | } 13 | -------------------------------------------------------------------------------- /packages/ui/src/ui-component/tooltip/NodeTooltip.jsx: -------------------------------------------------------------------------------- 1 | import { styled } from '@mui/material/styles' 2 | import Tooltip, { tooltipClasses } from '@mui/material/Tooltip' 3 | 4 | const NodeTooltip = styled(({ className, ...props }) => )(({ theme }) => ({ 5 | [`& .${tooltipClasses.tooltip}`]: { 6 | backgroundColor: theme.palette.nodeToolTip.background, 7 | color: theme.palette.nodeToolTip.color, 8 | boxShadow: theme.shadows[1] 9 | } 10 | })) 11 | 12 | export default NodeTooltip 13 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'packages/*' 3 | -------------------------------------------------------------------------------- /turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://turbo.build/schema.json", 3 | "pipeline": { 4 | "build": { 5 | "dependsOn": ["^build"], 6 | "outputs": ["dist/**"] 7 | }, 8 | "test": {}, 9 | "dev": { 10 | "cache": false 11 | } 12 | } 13 | } 14 | --------------------------------------------------------------------------------