diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8dd33335a..35365219c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -121,7 +121,7 @@ Flowise has 3 different modules in a single mono repository. Flowise support different environment variables to configure your instance. You can specify the following variables in the `.env` file inside `packages/server` folder. Read [more](https://docs.flowiseai.com/environment-variables) | Variable | Description | Type | Default | -| ---------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------ |-------------------------------------| +| ---------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------ | ----------------------------------- | | PORT | The HTTP port Flowise runs on | Number | 3000 | | CORS_ORIGINS | The allowed origins for all cross-origin HTTP calls | String | | | IFRAME_ORIGINS | The allowed origins for iframe src embedding | String | | @@ -133,7 +133,7 @@ Flowise support different environment variables to configure your instance. You | LOG_PATH | Location where log files are stored | String | `your-path/Flowise/logs` | | LOG_LEVEL | Different levels of logs | Enum String: `error`, `info`, `verbose`, `debug` | `info` | | LOG_JSON_SPACES | Spaces to beautify JSON logs | | 2 | -| APIKEY_STORAGE_TYPE | To store api keys on a JSON file or database. Default is `json` | Enum String: `json`, `db` | `json` | +| APIKEY_STORAGE_TYPE | To store api keys on a JSON file or database. Default is `json` | Enum String: `json`, `db` | `json` | | APIKEY_PATH | Location where api keys are saved when `APIKEY_STORAGE_TYPE` is `json` | String | `your-path/Flowise/packages/server` | | TOOL_FUNCTION_BUILTIN_DEP | NodeJS built-in modules to be used for Tool Function | String | | | TOOL_FUNCTION_EXTERNAL_DEP | External modules to be used for Tool Function | String | | @@ -157,6 +157,7 @@ Flowise support different environment variables to configure your instance. You | S3_STORAGE_SECRET_ACCESS_KEY | AWS Secret Key | String | | | S3_STORAGE_REGION | Region for S3 bucket | String | | | S3_ENDPOINT_URL | Custom Endpoint for S3 | String | | +| SHOW_COMMUNITY_NODES | Show nodes created by community | Boolean | | You can also specify the env variables when using `npx`. For example: diff --git a/docker/.env.example b/docker/.env.example index 9013d7281..e429df91a 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -50,3 +50,4 @@ BLOB_STORAGE_PATH=/root/.flowise/storage # S3_ENDPOINT_URL= # APIKEY_STORAGE_TYPE=json (json | db) +# SHOW_COMMUNITY_NODES=true \ No newline at end of file diff --git a/i18n/CONTRIBUTING-ZH.md b/i18n/CONTRIBUTING-ZH.md index af518ce41..00bc49029 100644 --- a/i18n/CONTRIBUTING-ZH.md +++ b/i18n/CONTRIBUTING-ZH.md @@ -150,6 +150,7 @@ Flowise 支持不同的环境变量来配置您的实例。您可以在 `package | S3_STORAGE_SECRET_ACCESS_KEY | AWS 密钥 (Secret Key) | 字符串 | | | S3_STORAGE_REGION | S3 存储地区 | 字符串 | | | S3_ENDPOINT_URL | S3 端点 URL | 字符串 | | +| SHOW_COMMUNITY_NODES | 显示由社区创建的节点 | 布尔值 | | 您也可以在使用 `npx` 时指定环境变量。例如: diff --git a/packages/components/src/Interface.ts b/packages/components/src/Interface.ts index 817801053..baa3d3b09 100644 --- a/packages/components/src/Interface.ts +++ b/packages/components/src/Interface.ts @@ -117,6 +117,7 @@ export interface INodeProperties { badge?: string deprecateMessage?: string hideOutput?: boolean + author?: string } export interface INode extends INodeProperties { diff --git a/packages/server/.env.example b/packages/server/.env.example index 701298048..c6e034c96 100644 --- a/packages/server/.env.example +++ b/packages/server/.env.example @@ -50,3 +50,4 @@ PORT=3000 # S3_ENDPOINT_URL= # APIKEY_STORAGE_TYPE=json (json | db) +# SHOW_COMMUNITY_NODES=true diff --git a/packages/server/src/AppConfig.ts b/packages/server/src/AppConfig.ts index b96e3ac17..fa3919aae 100644 --- a/packages/server/src/AppConfig.ts +++ b/packages/server/src/AppConfig.ts @@ -1,6 +1,7 @@ export const appConfig = { apiKeys: { storageType: process.env.APIKEY_STORAGE_TYPE ? process.env.APIKEY_STORAGE_TYPE.toLowerCase() : 'json' - } + }, + showCommunityNodes: process.env.SHOW_COMMUNITY_NODES ? process.env.SHOW_COMMUNITY_NODES.toLowerCase() === 'true' : false // todo: add more config options here like database, log, storage, credential and allow modification from UI } diff --git a/packages/server/src/NodesPool.ts b/packages/server/src/NodesPool.ts index 82c97f2a5..16604c345 100644 --- a/packages/server/src/NodesPool.ts +++ b/packages/server/src/NodesPool.ts @@ -5,6 +5,7 @@ import { getNodeModulesPackagePath } from './utils' import { promises } from 'fs' import { ICommonObject } from 'flowise-components' import logger from './utils/logger' +import { appConfig } from './AppConfig' export class NodesPool { componentNodes: IComponentNodes = {} @@ -57,7 +58,14 @@ export class NodesPool { } const skipCategories = ['Analytic', 'SpeechToText'] - if (!skipCategories.includes(newNodeInstance.category)) { + const conditionOne = !skipCategories.includes(newNodeInstance.category) + + const isCommunityNodesAllowed = appConfig.showCommunityNodes + const isAuthorPresent = newNodeInstance.author + let conditionTwo = true + if (!isCommunityNodesAllowed && isAuthorPresent) conditionTwo = false + + if (conditionOne && conditionTwo) { this.componentNodes[newNodeInstance.name] = newNodeInstance } } diff --git a/packages/server/src/commands/start.ts b/packages/server/src/commands/start.ts index 7d7a2e630..a31c37c8e 100644 --- a/packages/server/src/commands/start.ts +++ b/packages/server/src/commands/start.ts @@ -54,7 +54,8 @@ export default class Start extends Command { S3_STORAGE_ACCESS_KEY_ID: Flags.string(), S3_STORAGE_SECRET_ACCESS_KEY: Flags.string(), S3_STORAGE_REGION: Flags.string(), - S3_ENDPOINT_URL: Flags.string() + S3_ENDPOINT_URL: Flags.string(), + SHOW_COMMUNITY_NODES: Flags.string() } async stopProcess() { @@ -97,6 +98,7 @@ export default class Start extends Command { if (flags.DEBUG) process.env.DEBUG = flags.DEBUG if (flags.NUMBER_OF_PROXIES) process.env.NUMBER_OF_PROXIES = flags.NUMBER_OF_PROXIES if (flags.DISABLE_CHATFLOW_REUSE) process.env.DISABLE_CHATFLOW_REUSE = flags.DISABLE_CHATFLOW_REUSE + if (flags.SHOW_COMMUNITY_NODES) process.env.SHOW_COMMUNITY_NODES = flags.SHOW_COMMUNITY_NODES // Authorization if (flags.FLOWISE_USERNAME) process.env.FLOWISE_USERNAME = flags.FLOWISE_USERNAME diff --git a/packages/ui/src/views/canvas/AddNodes.jsx b/packages/ui/src/views/canvas/AddNodes.jsx index 141eddfc2..08ba0cdd5 100644 --- a/packages/ui/src/views/canvas/AddNodes.jsx +++ b/packages/ui/src/views/canvas/AddNodes.jsx @@ -491,35 +491,49 @@ const AddNodes = ({ nodesData, node, isAgentCanvas }) => { - {node.label} -   - {node.badge && ( - +
+ {node.label} +   + {node.badge && ( + + )} +
+ {node.author && ( + + > + By {node.author} + )} - + } secondary={node.description} />