From d06a18c1b5be41d3e9abb9cc42962b28d51d5470 Mon Sep 17 00:00:00 2001 From: mamadoudicko Date: Wed, 6 Dec 2023 13:12:49 +0100 Subject: [PATCH 1/8] feat: add feature flag on agent creation --- .../hooks/useKnowledgeSourceLabel.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts index 686841283bae..09242da9a1c3 100644 --- a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts @@ -1,3 +1,4 @@ +import { useFeatureIsOn } from "@growthbook/growthbook-react"; import { useTranslation } from "react-i18next"; import { BrainType } from "@/lib/types/brainConfig"; @@ -5,6 +6,7 @@ import { BrainType } from "@/lib/types/brainConfig"; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export const useKnowledgeSourceLabel = () => { const { t } = useTranslation(["translation", "brain", "config"]); + const isAgentBrainActivated = useFeatureIsOn("agent-brain"); const knowledgeSourceOptions: { label: string; @@ -18,11 +20,14 @@ export const useKnowledgeSourceLabel = () => { label: t("knowledge_source_api", { ns: "brain" }), value: "api", }, - { + ]; + + if (isAgentBrainActivated) { + knowledgeSourceOptions.push({ label: t("knowledge_source_chatflow", { ns: "brain" }), value: "chatflow", - }, - ]; + }); + } return { knowledgeSourceOptions, From fc25c79ff6d757a4bbc4370614e23e8033dee525 Mon Sep 17 00:00:00 2001 From: mamadoudicko Date: Wed, 6 Dec 2023 13:23:08 +0100 Subject: [PATCH 2/8] feat: add checkbox component --- frontend/lib/components/ui/Checkbox.tsx | 26 +++++++++++++++++++++++++ frontend/package.json | 1 + frontend/yarn.lock | 15 ++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 frontend/lib/components/ui/Checkbox.tsx diff --git a/frontend/lib/components/ui/Checkbox.tsx b/frontend/lib/components/ui/Checkbox.tsx new file mode 100644 index 000000000000..f0a7735212eb --- /dev/null +++ b/frontend/lib/components/ui/Checkbox.tsx @@ -0,0 +1,26 @@ +import * as CheckboxPrimitive from "@radix-ui/react-checkbox"; +import * as React from "react"; +import { LuCheck } from "react-icons/lu"; + +import { cn } from "@/lib/utils"; + +export const Checkbox = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + + +)); +Checkbox.displayName = CheckboxPrimitive.Root.displayName; diff --git a/frontend/package.json b/frontend/package.json index 373a8dac021f..48ec2df4c1db 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -23,6 +23,7 @@ "@growthbook/growthbook-react": "^0.17.0", "@june-so/analytics-next": "^2.0.0", "@radix-ui/react-accordion": "^1.1.2", + "@radix-ui/react-checkbox": "^1.0.4", "@radix-ui/react-dialog": "^1.0.3", "@radix-ui/react-popover": "^1.0.6", "@radix-ui/react-radio-group": "^1.1.3", diff --git a/frontend/yarn.lock b/frontend/yarn.lock index d02a52704685..801fd4591ebf 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -816,6 +816,21 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-primitive" "1.0.3" +"@radix-ui/react-checkbox@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-1.0.4.tgz#98f22c38d5010dd6df4c5744cac74087e3275f4b" + integrity sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-presence" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-controllable-state" "1.0.1" + "@radix-ui/react-use-previous" "1.0.1" + "@radix-ui/react-use-size" "1.0.1" + "@radix-ui/react-collapsible@1.0.3": version "1.0.3" resolved "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.0.3.tgz" From 76d5eea685e319ea82b61c40806931cd274eb18b Mon Sep 17 00:00:00 2001 From: mamadoudicko Date: Wed, 6 Dec 2023 14:40:11 +0100 Subject: [PATCH 3/8] feat: update CreateBrainInput add connected_brains_ids --- frontend/lib/api/brain/types.ts | 1 + frontend/lib/config/defaultBrainConfig.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/frontend/lib/api/brain/types.ts b/frontend/lib/api/brain/types.ts index 534ccb559238..4ff492a39105 100644 --- a/frontend/lib/api/brain/types.ts +++ b/frontend/lib/api/brain/types.ts @@ -49,6 +49,7 @@ export type CreateBrainInput = { brain_type?: BrainType; brain_definition?: Omit; brain_secrets_values?: Record; + connected_brains_ids?: UUID[]; }; export type UpdateBrainInput = Partial; diff --git a/frontend/lib/config/defaultBrainConfig.ts b/frontend/lib/config/defaultBrainConfig.ts index 78dcbc982122..dfc75a32ae1d 100644 --- a/frontend/lib/config/defaultBrainConfig.ts +++ b/frontend/lib/config/defaultBrainConfig.ts @@ -23,6 +23,7 @@ export const addBrainDefaultValues: CreateBrainInput = { }, secrets: [], }, + connected_brains_ids: [], }; export const defaultModel: Model = "gpt-3.5-turbo"; From 06b0b215979b599fd909293820b9ac78470248ae Mon Sep 17 00:00:00 2001 From: mamadoudicko Date: Wed, 6 Dec 2023 14:41:31 +0100 Subject: [PATCH 4/8] feat: add brain composition --- .../BrainKnowledgeStep/BrainKnowledgeStep.tsx | 3 +- .../ConnectableBrain/ConnectableBrain.tsx | 35 +++++++++++++++++++ .../hooks/useConnectableBrain.ts | 35 +++++++++++++++++++ .../CompositeBrainConnections.tsx | 24 +++++++++++++ .../hooks/useBrainKnowledgeStep.ts | 4 ++- frontend/public/locales/en/brain.json | 1 + frontend/public/locales/es/brain.json | 1 + frontend/public/locales/fr/brain.json | 1 + frontend/public/locales/pt-br/brain.json | 1 + frontend/public/locales/ru/brain.json | 1 + frontend/public/locales/zh-cn/brain.json | 1 + 11 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/components/CompositeBrainConnections/Components/ConnectableBrain/ConnectableBrain.tsx create mode 100644 frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/components/CompositeBrainConnections/Components/ConnectableBrain/hooks/useConnectableBrain.ts create mode 100644 frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/components/CompositeBrainConnections/CompositeBrainConnections.tsx diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/BrainKnowledgeStep.tsx b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/BrainKnowledgeStep.tsx index 7912c49f83c9..e40d45822b72 100644 --- a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/BrainKnowledgeStep.tsx +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/BrainKnowledgeStep.tsx @@ -6,6 +6,7 @@ import { ApiRequestDefinition } from "@/lib/components/ApiRequestDefinition"; import Button from "@/lib/components/ui/Button"; import { BrainType } from "@/lib/types/brainConfig"; +import { CompositeBrainConnections } from "./components/CompositeBrainConnections/CompositeBrainConnections"; import { KnowledgeToFeedInput } from "./components/KnowledgeToFeedInput"; import { useBrainCreationHandler } from "./hooks/useBrainCreationHandler"; import { useBrainKnowledgeStep } from "./hooks/useBrainKnowledgeStep"; @@ -30,7 +31,7 @@ export const BrainKnowledgeStep = ({ const brainTypeToKnowledgeComponent: Record = { doc: , api: , - chatflow:
Coming soon
, + chatflow: , }; if (currentStep !== "KNOWLEDGE" || brainType === undefined) { diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/components/CompositeBrainConnections/Components/ConnectableBrain/ConnectableBrain.tsx b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/components/CompositeBrainConnections/Components/ConnectableBrain/ConnectableBrain.tsx new file mode 100644 index 000000000000..fc97513bc632 --- /dev/null +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/components/CompositeBrainConnections/Components/ConnectableBrain/ConnectableBrain.tsx @@ -0,0 +1,35 @@ +import { Checkbox } from "@/lib/components/ui/Checkbox"; +import { MinimalBrainForUser } from "@/lib/context/BrainProvider/types"; + +import { useConnectableBrain } from "./hooks/useConnectableBrain"; + +type ConnectableBrainProps = { + brain: MinimalBrainForUser; +}; + +export const ConnectableBrain = ({ + brain, +}: ConnectableBrainProps): JSX.Element => { + const { onCheckedChange } = useConnectableBrain(); + + return ( +
+ + onCheckedChange({ + brainId: brain.id, + checked, + }) + } + id={`connected_brains_ids-${brain.id}`} + /> + +
+ ); +}; diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/components/CompositeBrainConnections/Components/ConnectableBrain/hooks/useConnectableBrain.ts b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/components/CompositeBrainConnections/Components/ConnectableBrain/hooks/useConnectableBrain.ts new file mode 100644 index 000000000000..17ea322e1850 --- /dev/null +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/components/CompositeBrainConnections/Components/ConnectableBrain/hooks/useConnectableBrain.ts @@ -0,0 +1,35 @@ +import { CheckedState } from "@radix-ui/react-checkbox"; +import { UUID } from "crypto"; +import { useFormContext } from "react-hook-form"; + +import { CreateBrainProps } from "@/lib/components/AddBrainModal/types"; + +// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types +export const useConnectableBrain = () => { + const { setValue, getValues } = useFormContext(); + + const onCheckedChange = ({ + checked, + brainId, + }: { + checked: CheckedState; + brainId: UUID; + }) => { + if (checked === "indeterminate") { + return; + } + const connected_brains_ids = getValues("connected_brains_ids") ?? []; + if (checked) { + setValue("connected_brains_ids", [...connected_brains_ids, brainId]); + } else { + setValue( + "connected_brains_ids", + connected_brains_ids.filter((id) => id !== brainId) + ); + } + }; + + return { + onCheckedChange, + }; +}; diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/components/CompositeBrainConnections/CompositeBrainConnections.tsx b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/components/CompositeBrainConnections/CompositeBrainConnections.tsx new file mode 100644 index 000000000000..91bffefe0f72 --- /dev/null +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/components/CompositeBrainConnections/CompositeBrainConnections.tsx @@ -0,0 +1,24 @@ +import { useTranslation } from "react-i18next"; + +import { useBrainContext } from "@/lib/context/BrainProvider/hooks/useBrainContext"; + +import { ConnectableBrain } from "./Components/ConnectableBrain/ConnectableBrain"; + +export const CompositeBrainConnections = (): JSX.Element => { + const { allBrains } = useBrainContext(); + const sortedBrains = allBrains.sort((a, b) => a.name.localeCompare(b.name)); + const { t } = useTranslation("brain"); + + return ( +
+

+ {t("composite_brain_composition_invitation")} +

+
+ {sortedBrains.map((brain) => ( + + ))} +
+
+ ); +}; diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts index 81dcf0325698..04abe1f79b44 100644 --- a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts @@ -7,13 +7,15 @@ export const useBrainKnowledgeStep = () => { const { watch } = useFormContext(); const brainType = watch("brain_type"); const url = watch("brain_definition.url"); + const compositeBrainConnections = watch("connected_brains_ids") ?? []; const isApiBrain = brainType === "api"; const isChatflowBrain = brainType === "chatflow"; const isApiBrainDefinitionsFilled = url !== ""; const isSubmitButtonDisabled = - isChatflowBrain || (isApiBrain && !isApiBrainDefinitionsFilled); + (isChatflowBrain && compositeBrainConnections.length === 0) || + (isApiBrain && !isApiBrainDefinitionsFilled); return { brainType, diff --git a/frontend/public/locales/en/brain.json b/frontend/public/locales/en/brain.json index e2f8e718a1d4..fa433f0a33a6 100644 --- a/frontend/public/locales/en/brain.json +++ b/frontend/public/locales/en/brain.json @@ -13,6 +13,7 @@ "shareBrainUsers": "Users with access", "shareBrainLink": "Click to copy link to share your brain", "copiedToClipboard": "Copied to clipboard", + "composite_brain_composition_invitation": "Connect your new brain to other existing brains from your library by selecting them.", "inviteUsers": "Add new users", "usersInvited": "Users successfully invited", "errorSendingInvitation": "An error occurred while sending invitations", diff --git a/frontend/public/locales/es/brain.json b/frontend/public/locales/es/brain.json index 2e1285b80c4f..b8c7f322890f 100644 --- a/frontend/public/locales/es/brain.json +++ b/frontend/public/locales/es/brain.json @@ -6,6 +6,7 @@ "brainNamePlaceholder": "Ejemplo: Anotaciones de historia", "brainUndefined": "Cerebro no definido", "copiedToClipboard": "Copiado al portapeles", + "composite_brain_composition_invitation": "Conecta tu nuevo cerebro a otros cerebros existentes de tu biblioteca seleccionándolos.", "defaultBrain": "Cerebro por defecto", "errorCreatingBrain": "Error al crear cerebro", "errorFetchingBrainUsers": "Error al obtener usuarios del cerebro", diff --git a/frontend/public/locales/fr/brain.json b/frontend/public/locales/fr/brain.json index 65cad6e12246..44b0d8319af7 100644 --- a/frontend/public/locales/fr/brain.json +++ b/frontend/public/locales/fr/brain.json @@ -6,6 +6,7 @@ "brainNamePlaceholder": "Ex. Notes d'histoire", "brainUndefined": "Cerveau non défini", "copiedToClipboard": "Copié dans le presse-papier", + "composite_brain_composition_invitation":"Connectez votre nouveau cerveau à d'autres cerveaux existants de votre librairie en les sélectionnant.", "defaultBrain": "Cerveau par défaut", "errorCreatingBrain": "Une erreur s'est produite lors de la création d'un cerveau", "errorFetchingBrainUsers": "Une erreur s'est produite lors de la récupération des utilisateurs du cerveau", diff --git a/frontend/public/locales/pt-br/brain.json b/frontend/public/locales/pt-br/brain.json index 9e14d8e6cd8e..8b74afbc1e9d 100644 --- a/frontend/public/locales/pt-br/brain.json +++ b/frontend/public/locales/pt-br/brain.json @@ -13,6 +13,7 @@ "shareBrainUsers": "Usuários com acesso", "shareBrainLink": "Clique para copiar o link de compartilhamento", "copiedToClipboard": "Copiado para a área de transferência", + "composite_brain_composition_invitation": "Conecte seu novo cérebro a outros cérebros existentes em sua biblioteca selecionando-os.", "inviteUsers": "Adicionar novos usuários", "usersInvited": "Usuários convidados com sucesso", "errorSendingInvitation": "Um erro ocorreu ao enviar o(s) convite(s)", diff --git a/frontend/public/locales/ru/brain.json b/frontend/public/locales/ru/brain.json index 1f9bb6692676..28078f0d1261 100644 --- a/frontend/public/locales/ru/brain.json +++ b/frontend/public/locales/ru/brain.json @@ -13,6 +13,7 @@ "shareBrainUsers": "Пользователи с доступом", "shareBrainLink": "Нажмите, чтобы скопировать ссылку для совместного использования мозга", "copiedToClipboard": "Скопировано в буфер обмена", + "composite_brain_composition_invitation": "Подключите свой новый мозг к другим существующим мозгам из вашей библиотеки, выбрав их.", "inviteUsers": "Добавить новых пользователей", "usersInvited": "Пользователи успешно приглашены", "errorSendingInvitation": "Ошибка при отправке приглашений", diff --git a/frontend/public/locales/zh-cn/brain.json b/frontend/public/locales/zh-cn/brain.json index c105d17f876c..d6105dcf0482 100644 --- a/frontend/public/locales/zh-cn/brain.json +++ b/frontend/public/locales/zh-cn/brain.json @@ -13,6 +13,7 @@ "shareBrainUsers": "具有访问权限的用户", "shareBrainLink": "点击复制链接来分享大脑", "copiedToClipboard": "已复制到剪贴板", + "composite_brain_composition_invitation": "通过选择将您的新大脑连接到现有的其他大脑来进行组合。", "inviteUsers": "添加新用户", "usersInvited": "已成功邀请用户", "errorSendingInvitation": "发送邀请时发生错误", From 32010e939c46a04fc277a2d2ed3d88a4c3435ef6 Mon Sep 17 00:00:00 2001 From: mamadoudicko Date: Wed, 6 Dec 2023 14:59:25 +0100 Subject: [PATCH 5/8] feat: add composite brain creation --- .../components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts index 75d8becb911f..428e12e727c2 100644 --- a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts @@ -49,6 +49,7 @@ export const useBrainCreationApi = ({ brain_secrets_values, status, brain_type, + connected_brains_ids, } = getValues(); const createdBrainId = await createBrainApi({ @@ -59,6 +60,8 @@ export const useBrainCreationApi = ({ brain_definition: brain_type === "api" ? brain_definition : undefined, brain_secrets_values: brain_type === "api" ? brain_secrets_values : undefined, + connected_brains_ids: + brain_type === "chatflow" ? connected_brains_ids : undefined, }); if (createdBrainId === undefined) { From 8bc88332cd0391b74f27caf61361feee35f3e2c2 Mon Sep 17 00:00:00 2001 From: mamadoudicko Date: Wed, 6 Dec 2023 15:02:13 +0100 Subject: [PATCH 6/8] feat: rename chatflow to composite --- .../components/BrainKnowledgeStep/BrainKnowledgeStep.tsx | 2 +- .../components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts | 2 +- .../BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts | 2 +- .../BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts | 2 +- frontend/lib/types/brainConfig.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/BrainKnowledgeStep.tsx b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/BrainKnowledgeStep.tsx index e40d45822b72..f34d3c73619e 100644 --- a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/BrainKnowledgeStep.tsx +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/BrainKnowledgeStep.tsx @@ -31,7 +31,7 @@ export const BrainKnowledgeStep = ({ const brainTypeToKnowledgeComponent: Record = { doc: , api: , - chatflow: , + composite: , }; if (currentStep !== "KNOWLEDGE" || brainType === undefined) { diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts index 428e12e727c2..6c17a1595eed 100644 --- a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts @@ -61,7 +61,7 @@ export const useBrainCreationApi = ({ brain_secrets_values: brain_type === "api" ? brain_secrets_values : undefined, connected_brains_ids: - brain_type === "chatflow" ? connected_brains_ids : undefined, + brain_type === "composite" ? connected_brains_ids : undefined, }); if (createdBrainId === undefined) { diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts index 04abe1f79b44..f2ceee365d96 100644 --- a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts @@ -9,7 +9,7 @@ export const useBrainKnowledgeStep = () => { const url = watch("brain_definition.url"); const compositeBrainConnections = watch("connected_brains_ids") ?? []; const isApiBrain = brainType === "api"; - const isChatflowBrain = brainType === "chatflow"; + const isChatflowBrain = brainType === "composite"; const isApiBrainDefinitionsFilled = url !== ""; diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts index 09242da9a1c3..6e3a6691d7d8 100644 --- a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts @@ -25,7 +25,7 @@ export const useKnowledgeSourceLabel = () => { if (isAgentBrainActivated) { knowledgeSourceOptions.push({ label: t("knowledge_source_chatflow", { ns: "brain" }), - value: "chatflow", + value: "composite", }); } diff --git a/frontend/lib/types/brainConfig.ts b/frontend/lib/types/brainConfig.ts index b4bec2e9f4e7..4a85d1d23e72 100644 --- a/frontend/lib/types/brainConfig.ts +++ b/frontend/lib/types/brainConfig.ts @@ -6,7 +6,7 @@ export const brainStatuses = ["private", "public"] as const; export type BrainStatus = (typeof brainStatuses)[number]; -export const brainTypes = ["doc", "api", "chatflow"] as const; +export const brainTypes = ["doc", "api", "composite"] as const; export type BrainType = (typeof brainTypes)[number]; From 6a84da409ab833b462228dd350fde518b0b01b37 Mon Sep 17 00:00:00 2001 From: mamadoudicko Date: Wed, 6 Dec 2023 15:06:04 +0100 Subject: [PATCH 7/8] feat: add toast when brain creation fails --- .../BrainKnowledgeStep/hooks/useBrainCreationApi.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts index 6c17a1595eed..1b3c9b8915e3 100644 --- a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainCreationApi.ts @@ -95,6 +95,12 @@ export const useBrainCreationApi = ({ text: t("brainCreated", { ns: "brain" }), }); }, + onError: () => { + publish({ + variant: "danger", + text: t("errorCreatingBrain", { ns: "brain" }), + }); + }, }); return { From 8db68257d5cbd08641feb95277cf4d916a123a5f Mon Sep 17 00:00:00 2001 From: mamadoudicko Date: Wed, 6 Dec 2023 15:51:03 +0100 Subject: [PATCH 8/8] feat: rename chatflow to composite brain --- .../BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts | 4 ++-- .../BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts | 6 +++--- frontend/public/locales/en/brain.json | 2 +- frontend/public/locales/es/brain.json | 2 +- frontend/public/locales/fr/brain.json | 2 +- frontend/public/locales/pt-br/brain.json | 2 +- frontend/public/locales/ru/brain.json | 2 +- frontend/public/locales/zh-cn/brain.json | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts index f2ceee365d96..be2418cdec0a 100644 --- a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainKnowledgeStep/hooks/useBrainKnowledgeStep.ts @@ -9,12 +9,12 @@ export const useBrainKnowledgeStep = () => { const url = watch("brain_definition.url"); const compositeBrainConnections = watch("connected_brains_ids") ?? []; const isApiBrain = brainType === "api"; - const isChatflowBrain = brainType === "composite"; + const isCompositeBrain = brainType === "composite"; const isApiBrainDefinitionsFilled = url !== ""; const isSubmitButtonDisabled = - (isChatflowBrain && compositeBrainConnections.length === 0) || + (isCompositeBrain && compositeBrainConnections.length === 0) || (isApiBrain && !isApiBrainDefinitionsFilled); return { diff --git a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts index 6e3a6691d7d8..6ece3dcf55e6 100644 --- a/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts +++ b/frontend/lib/components/AddBrainModal/components/AddBrainSteps/components/BrainTypeSelectionStep/hooks/useKnowledgeSourceLabel.ts @@ -6,7 +6,7 @@ import { BrainType } from "@/lib/types/brainConfig"; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export const useKnowledgeSourceLabel = () => { const { t } = useTranslation(["translation", "brain", "config"]); - const isAgentBrainActivated = useFeatureIsOn("agent-brain"); + const isCompositeBrainActivated = useFeatureIsOn("agent-brain"); const knowledgeSourceOptions: { label: string; @@ -22,9 +22,9 @@ export const useKnowledgeSourceLabel = () => { }, ]; - if (isAgentBrainActivated) { + if (isCompositeBrainActivated) { knowledgeSourceOptions.push({ - label: t("knowledge_source_chatflow", { ns: "brain" }), + label: t("knowledge_source_composite_brain", { ns: "brain" }), value: "composite", }); } diff --git a/frontend/public/locales/en/brain.json b/frontend/public/locales/en/brain.json index fa433f0a33a6..1055a8c3d87b 100644 --- a/frontend/public/locales/en/brain.json +++ b/frontend/public/locales/en/brain.json @@ -51,7 +51,7 @@ "knowledge_source_doc": "Documents", "knowledge_source_api": "App (Through API)", "knowledge_source_label": "Knowledge source", - "knowledge_source_chatflow":"Agent", + "knowledge_source_composite_brain":"Agent", "api_brain": { "name": "Name", "description": "Description", diff --git a/frontend/public/locales/es/brain.json b/frontend/public/locales/es/brain.json index b8c7f322890f..e916685f6113 100644 --- a/frontend/public/locales/es/brain.json +++ b/frontend/public/locales/es/brain.json @@ -50,7 +50,7 @@ "myBrains": "Mis cerebros", "knowledge_source_doc": "Documentos", "knowledge_source_api": "API", - "knowledge_source_chatflow": "Agente", + "knowledge_source_composite_brain": "Agente", "knowledge_source_label": "Fuente de conocimiento", "api_brain":{ "name": "Nombre", diff --git a/frontend/public/locales/fr/brain.json b/frontend/public/locales/fr/brain.json index 44b0d8319af7..5c8c10bccb79 100644 --- a/frontend/public/locales/fr/brain.json +++ b/frontend/public/locales/fr/brain.json @@ -50,7 +50,7 @@ "myBrains": "Mes cerveaux", "knowledge_source_doc": "Documents", "knowledge_source_api": "API", - "knowledge_source_chatflow": "Agent", + "knowledge_source_composite_brain": "Agent", "knowledge_source_label": "Source de connaissance", "api_brain": { "name": "Nom", diff --git a/frontend/public/locales/pt-br/brain.json b/frontend/public/locales/pt-br/brain.json index 8b74afbc1e9d..23e67aa7106b 100644 --- a/frontend/public/locales/pt-br/brain.json +++ b/frontend/public/locales/pt-br/brain.json @@ -50,7 +50,7 @@ "myBrains": "Meus cérebros", "knowledge_source_doc": "Documentos", "knowledge_source_api": "API", - "knowledge_source_chatflow": "Agente", + "knowledge_source_composite_brain": "Agente", "knowledge_source_label": "Fonte de conhecimento", "api_brain":{ "name": "Name", diff --git a/frontend/public/locales/ru/brain.json b/frontend/public/locales/ru/brain.json index 28078f0d1261..12ab75dff257 100644 --- a/frontend/public/locales/ru/brain.json +++ b/frontend/public/locales/ru/brain.json @@ -50,7 +50,7 @@ "myBrains": "Мои мозги", "knowledge_source_doc": "Документы", "knowledge_source_api": "API", - "knowledge_source_chatflow": "Агент", + "knowledge_source_composite_brain": "Агент", "knowledge_source_label": "Источник знаний", "api_brain":{ "name": "Название", diff --git a/frontend/public/locales/zh-cn/brain.json b/frontend/public/locales/zh-cn/brain.json index d6105dcf0482..441765ffa71a 100644 --- a/frontend/public/locales/zh-cn/brain.json +++ b/frontend/public/locales/zh-cn/brain.json @@ -50,7 +50,7 @@ "myBrains": "我的大脑", "knowledge_source_doc": "文档", "knowledge_source_api": "API", - "knowledge_source_chatflow": "代理", + "knowledge_source_composite_brain": "代理", "knowledge_source_label": "知识来源", "api_brain":{ "name": "名称",