import { useTranslation } from 'react-i18next'; import { z } from 'zod'; import { Operator } from '../constant'; import AkShareForm from '../form/akshare-form'; import AnswerForm from '../form/answer-form'; import ArXivForm from '../form/arxiv-form'; import BaiduFanyiForm from '../form/baidu-fanyi-form'; import BaiduForm from '../form/baidu-form'; import BeginForm from '../form/begin-form'; import BingForm from '../form/bing-form'; import CategorizeForm from '../form/categorize-form'; import CrawlerForm from '../form/crawler-form'; import DeepLForm from '../form/deepl-form'; import DuckDuckGoForm from '../form/duckduckgo-form'; import EmailForm from '../form/email-form'; import ExeSQLForm from '../form/exesql-form'; import GenerateForm from '../form/generate-form'; import GithubForm from '../form/github-form'; import GoogleForm from '../form/google-form'; import GoogleScholarForm from '../form/google-scholar-form'; import InvokeForm from '../form/invoke-form'; import IterationForm from '../form/iteration-from'; import Jin10Form from '../form/jin10-form'; import KeywordExtractForm from '../form/keyword-extract-form'; import MessageForm from '../form/message-form'; import PubMedForm from '../form/pubmed-form'; import QWeatherForm from '../form/qweather-form'; import RelevantForm from '../form/relevant-form'; import RetrievalForm from '../form/retrieval-form/next'; import RewriteQuestionForm from '../form/rewrite-question-form'; import SwitchForm from '../form/switch-form'; import TemplateForm from '../form/template-form'; import TuShareForm from '../form/tushare-form'; import WenCaiForm from '../form/wencai-form'; import WikipediaForm from '../form/wikipedia-form'; import YahooFinanceForm from '../form/yahoo-finance-form'; export function useFormConfigMap() { const { t } = useTranslation(); const FormConfigMap = { [Operator.Begin]: { component: BeginForm, defaultValues: {}, schema: z.object({ name: z .string() .min(1, { message: t('common.namePlaceholder'), }) .trim(), age: z .string() .min(1, { message: t('common.namePlaceholder'), }) .trim(), }), }, [Operator.Retrieval]: { component: RetrievalForm, defaultValues: { query: [] }, schema: z.object({ name: z .string() .min(1, { message: t('common.namePlaceholder'), }) .trim(), age: z .string() .min(1, { message: t('common.namePlaceholder'), }) .trim(), query: z.array( z.object({ type: z.string(), }), ), }), }, [Operator.Generate]: { component: GenerateForm, defaultValues: { cite: true, prompt: t('flow.promptText'), }, schema: z.object({ prompt: z.string().min(1, { message: t('flow.promptMessage'), }), }), }, [Operator.Answer]: { component: AnswerForm, defaultValues: {}, schema: z.object({}), }, [Operator.Categorize]: { component: CategorizeForm, defaultValues: { message_history_window_size: 1 }, schema: z.object({ message_history_window_size: z.number(), items: z.array( z.object({ name: z.string().min(1, t('flow.nameMessage')).trim(), }), ), }), }, [Operator.Message]: { component: MessageForm, defaultValues: {}, schema: z.object({}), }, [Operator.Relevant]: { component: RelevantForm, defaultValues: {}, schema: z.object({}), }, [Operator.RewriteQuestion]: { component: RewriteQuestionForm, defaultValues: { message_history_window_size: 6, }, schema: z.object({ llm_id: z.string(), message_history_window_size: z.number(), language: z.string(), }), }, [Operator.Baidu]: { component: BaiduForm, defaultValues: { top_n: 10 }, schema: z.object({ top_n: z.number() }), }, [Operator.DuckDuckGo]: { component: DuckDuckGoForm, defaultValues: { top_n: 10, channel: 'text', }, schema: z.object({ top_n: z.number(), }), }, [Operator.KeywordExtract]: { component: KeywordExtractForm, defaultValues: { top_n: 3 }, schema: z.object({ llm_id: z.string(), top_n: z.number(), }), }, [Operator.Wikipedia]: { component: WikipediaForm, defaultValues: { top_n: 10, }, schema: z.object({ language: z.string(), top_n: z.number(), }), }, [Operator.PubMed]: { component: PubMedForm, defaultValues: { top_n: 10 }, schema: z.object({ top_n: z.number(), email: z.string(), }), }, [Operator.ArXiv]: { component: ArXivForm, defaultValues: {}, schema: z.object({}), }, [Operator.Google]: { component: GoogleForm, defaultValues: {}, schema: z.object({}), }, [Operator.Bing]: { component: BingForm, defaultValues: {}, schema: z.object({}), }, [Operator.GoogleScholar]: { component: GoogleScholarForm, defaultValues: {}, schema: z.object({}), }, [Operator.DeepL]: { component: DeepLForm, defaultValues: {}, schema: z.object({}), }, [Operator.GitHub]: { component: GithubForm, defaultValues: {}, schema: z.object({}), }, [Operator.BaiduFanyi]: { component: BaiduFanyiForm, defaultValues: {}, schema: z.object({}), }, [Operator.QWeather]: { component: QWeatherForm, defaultValues: {}, schema: z.object({ web_apikey: z.string(), lang: z.string(), type: z.string(), user_type: z.string(), time_period: z.string().optional(), }), }, [Operator.ExeSQL]: { component: ExeSQLForm, defaultValues: {}, schema: z.object({}), }, [Operator.Switch]: { component: SwitchForm, defaultValues: {}, schema: z.object({}), }, [Operator.WenCai]: { component: WenCaiForm, defaultValues: { top_n: 20, }, schema: z.object({ top_n: z.number(), query_type: z.string(), }), }, [Operator.AkShare]: { component: AkShareForm, defaultValues: { top_n: 10, }, schema: z.object({ top_n: z.number(), }), }, [Operator.YahooFinance]: { component: YahooFinanceForm, defaultValues: {}, schema: z.object({}), }, [Operator.Jin10]: { component: Jin10Form, defaultValues: {}, schema: z.object({}), }, [Operator.TuShare]: { component: TuShareForm, defaultValues: {}, schema: z.object({}), }, [Operator.Crawler]: { component: CrawlerForm, defaultValues: {}, schema: z.object({}), }, [Operator.Invoke]: { component: InvokeForm, defaultValues: {}, schema: z.object({}), }, [Operator.Concentrator]: { component: () => <>, defaultValues: {}, schema: z.object({}), }, [Operator.Note]: { component: () => <>, defaultValues: {}, schema: z.object({}), }, [Operator.Template]: { component: TemplateForm, defaultValues: {}, schema: z.object({}), }, [Operator.Email]: { component: EmailForm, defaultValues: {}, schema: z.object({}), }, [Operator.Iteration]: { component: IterationForm, defaultValues: {}, schema: z.object({}), }, [Operator.IterationStart]: { component: () => <>, defaultValues: {}, schema: z.object({}), }, }; return FormConfigMap; }