From bf09c3eb1010dcca83a1dcb06829d83f33e0a860 Mon Sep 17 00:00:00 2001 From: twwu Date: Tue, 2 Sep 2025 10:43:57 +0800 Subject: [PATCH] feat(rag): integrate RAG recommended plugins into workflow component --- .../workflow/block-selector/all-tools.tsx | 9 +++++++-- .../block-selector/rag-tool-suggestions.tsx | 20 +++++++++++-------- web/app/components/workflow/types.ts | 4 ++++ web/service/use-tools.ts | 10 +++++++++- 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/web/app/components/workflow/block-selector/all-tools.tsx b/web/app/components/workflow/block-selector/all-tools.tsx index 93b7a301da..b7e56c3289 100644 --- a/web/app/components/workflow/block-selector/all-tools.tsx +++ b/web/app/components/workflow/block-selector/all-tools.tsx @@ -26,6 +26,7 @@ import { PluginType } from '../../plugins/types' import { useMarketplacePlugins } from '../../plugins/marketplace/hooks' import { useGlobalPublicStore } from '@/context/global-public-context' import RAGToolSuggestions from './rag-tool-suggestions' +import { useRAGRecommendedPlugins } from '@/service/use-tools' type AllToolsProps = { className?: string @@ -117,6 +118,10 @@ const AllTools = ({ const isSupportGroupView = [ToolTypeEnum.All, ToolTypeEnum.BuiltIn].includes(activeTab) const isShowRAGRecommendations = isInRAGPipeline && activeTab === ToolTypeEnum.All && !searchText + const { data: ragRecommendedPlugins = [] } = useRAGRecommendedPlugins(isShowRAGRecommendations) + const recommendedPlugins = useMemo(() => { + return ragRecommendedPlugins.filter(plugin => !plugin.installed) + }, [ragRecommendedPlugins]) return (
@@ -147,9 +152,9 @@ const AllTools = ({ className='max-h-[464px] overflow-y-auto' onScroll={pluginRef.current?.handleScroll} > - {isShowRAGRecommendations && ( + {recommendedPlugins.length > 0 && ( = ({ - // tools, - // viewType, - // onSelect, + tools, + viewType, + onSelect, onTagsChange, }) => { const { t } = useTranslation() const loadMore = useCallback(() => { - onTagsChange(prev => [...prev, 'rag']) + onTagsChange((prev) => { + if (prev.includes('rag')) + return prev + return [...prev, 'rag'] + }) }, [onTagsChange]) return ( @@ -31,7 +35,7 @@ const RAGToolSuggestions: React.FC = ({
{t('pipeline.ragToolSuggestions.title')}
- {/* = ({ toolType={ToolTypeEnum.All} viewType={viewType} hasSearchText={false} - /> */} + />
{ + return useQuery({ + queryKey: [NAME_SPACE, 'rag-recommended-plugins'], + queryFn: () => get('/rag/pipelines/recommended-plugins'), + enabled, + }) +}