feat: add the flow escape new type of helpers

This commit is contained in:
Mohamed Marrouchi
2025-06-12 11:23:40 +01:00
parent d77a02032a
commit c5e7bbcd1d
11 changed files with 138 additions and 49 deletions

View File

@@ -20,8 +20,8 @@ import { PasswordInput } from "@/app-components/inputs/PasswordInput";
import { useTranslate } from "@/hooks/useTranslate";
import { EntityType, Format } from "@/services/types";
import { AttachmentResourceRef } from "@/types/attachment.types";
import { IEntityMapTypes } from "@/types/base.types";
import { IBlock } from "@/types/block.types";
import { IHelper } from "@/types/helper.types";
import { ISetting, SettingType } from "@/types/setting.types";
import { MIME_TYPES } from "@/utils/attachment";
@@ -32,6 +32,12 @@ interface RenderSettingInputProps {
isDisabled?: (setting: ISetting) => boolean;
}
const DEFAULT_HELPER_ENTITIES: Record<string, keyof IEntityMapTypes> = {
["default_nlu_helper"]: EntityType.NLU_HELPER,
["default_llm_helper"]: EntityType.LLM_HELPER,
["default_flow_escape_helper"]: EntityType.FLOW_ESCAPE_HELPER,
["default_storage_helper"]: EntityType.STORAGE_HELPER,
};
const SettingInput: React.FC<RenderSettingInputProps> = ({
setting,
field,
@@ -125,54 +131,25 @@ const SettingInput: React.FC<RenderSettingInputProps> = ({
{...rest}
/>
);
} else if (setting.label === "default_nlu_helper") {
} else if (
setting.label.startsWith("default_") &&
setting.label.endsWith("_helper")
) {
const { onChange, ...rest } = field;
return (
<AutoCompleteEntitySelect<IHelper, "name", false>
<AutoCompleteEntitySelect<any, string, boolean>
searchFields={["name"]}
entity={EntityType.NLU_HELPER}
entity={DEFAULT_HELPER_ENTITIES[setting.label]}
format={Format.BASIC}
labelKey="name"
idKey="name"
label={t("label.default_nlu_helper")}
helperText={t("help.default_nlu_helper")}
multiple={false}
onChange={(_e, selected, ..._) => onChange(selected?.name)}
{...rest}
/>
);
} else if (setting.label === "default_llm_helper") {
const { onChange, ...rest } = field;
return (
<AutoCompleteEntitySelect<IHelper, "name", false>
searchFields={["name"]}
entity={EntityType.LLM_HELPER}
format={Format.BASIC}
labelKey="name"
idKey="name"
label={t("label.default_llm_helper")}
helperText={t("help.default_llm_helper")}
multiple={false}
onChange={(_e, selected, ..._) => onChange(selected?.name)}
{...rest}
/>
);
} else if (setting.label === "default_storage_helper") {
const { onChange, ...rest } = field;
return (
<AutoCompleteEntitySelect<IHelper, "name", false>
searchFields={["name"]}
entity={EntityType.STORAGE_HELPER}
format={Format.BASIC}
labelKey="name"
idKey="name"
label={t("label.default_storage_helper")}
helperText={t("help.default_storage_helper")}
multiple={false}
onChange={(_e, selected, ..._) => onChange(selected?.name)}
labelKey={setting.config?.labelKey || "name"}
idKey={setting.config?.idKey || "name"}
label={label}
helperText={helperText}
multiple={!!setting.config?.multiple}
onChange={(_e, selected, ..._) =>
onChange(selected?.[setting.config?.idKey || "name"])
}
{...rest}
/>
);

View File

@@ -74,6 +74,7 @@ export const ROUTES = {
[EntityType.HELPER]: "/helper",
[EntityType.NLU_HELPER]: "/helper/nlu",
[EntityType.LLM_HELPER]: "/helper/llm",
[EntityType.FLOW_ESCAPE_HELPER]: "helper/flow_escape",
[EntityType.STORAGE_HELPER]: "/helper/storage",
} as const;

View File

@@ -304,6 +304,14 @@ export const LlmHelperEntity = new schema.Entity(
},
);
export const FlowEscapeHelperEntity = new schema.Entity(
EntityType.FLOW_ESCAPE_HELPER,
undefined,
{
idAttribute: ({ name }) => name,
},
);
export const StorageHelperEntity = new schema.Entity(
EntityType.STORAGE_HELPER,
undefined,
@@ -341,5 +349,6 @@ export const ENTITY_MAP = {
[EntityType.HELPER]: HelperEntity,
[EntityType.NLU_HELPER]: NluHelperEntity,
[EntityType.LLM_HELPER]: LlmHelperEntity,
[EntityType.FLOW_ESCAPE_HELPER]: FlowEscapeHelperEntity,
[EntityType.STORAGE_HELPER]: StorageHelperEntity,
} as const;

View File

@@ -38,6 +38,7 @@ export enum EntityType {
HELPER = "Helper",
NLU_HELPER = "NluHelper",
LLM_HELPER = "LlmHelper",
FLOW_ESCAPE_HELPER = "FlowEscapeHelper",
STORAGE_HELPER = "StorageHelper",
}

View File

@@ -116,6 +116,7 @@ export const POPULATE_BY_TYPE = {
[EntityType.HELPER]: [],
[EntityType.NLU_HELPER]: [],
[EntityType.LLM_HELPER]: [],
[EntityType.FLOW_ESCAPE_HELPER]: [],
[EntityType.STORAGE_HELPER]: [],
} as const;
@@ -208,6 +209,7 @@ export interface IEntityMapTypes {
[EntityType.HELPER]: IEntityTypes<IHelperAttributes, IHelper>;
[EntityType.NLU_HELPER]: IEntityTypes<IHelperAttributes, IHelper>;
[EntityType.LLM_HELPER]: IEntityTypes<IHelperAttributes, IHelper>;
[EntityType.FLOW_ESCAPE_HELPER]: IEntityTypes<IHelperAttributes, IHelper>;
[EntityType.STORAGE_HELPER]: IEntityTypes<IHelperAttributes, IHelper>;
}