+ {fields.map((field, index) => {
+ const typeField = `query.${index}.type`;
+ const typeValue = form.watch(typeField);
+ return (
+
+ (
+
+ {/* City */}
+
+
+
+
+
+
+ )}
+ />
+ (
+
+ {/* State */}
+
+
+ {typeValue === VariableType.Reference ? (
+
+ ) : (
+
+ )}
+
+
+
+ )}
+ />
+ remove(index)}
+ />
+
+ );
+ })}
+
+
+ );
+}
diff --git a/web/src/pages/agent/form/retrieval-form/next.tsx b/web/src/pages/agent/form/retrieval-form/next.tsx
new file mode 100644
index 000000000..c387feb38
--- /dev/null
+++ b/web/src/pages/agent/form/retrieval-form/next.tsx
@@ -0,0 +1,49 @@
+import { KnowledgeBaseFormField } from '@/components/knowledge-base-item';
+import { RerankFormFields } from '@/components/rerank';
+import { SimilaritySliderFormField } from '@/components/similarity-slider';
+import { TopNFormField } from '@/components/top-n-item';
+import {
+ Form,
+ FormControl,
+ FormField,
+ FormItem,
+ FormLabel,
+ FormMessage,
+} from '@/components/ui/form';
+import { Textarea } from '@/components/ui/textarea';
+import { useTranslate } from '@/hooks/common-hooks';
+import { INextOperatorForm } from '../../interface';
+import { DynamicVariableForm } from '../components/next-dynamic-input-variable';
+
+const RetrievalForm = ({ form, node }: INextOperatorForm) => {
+ const { t } = useTranslate('flow');
+ return (
+