From 9304c1e5fd8bf50dddd5faaaa3e7511bbc03974e Mon Sep 17 00:00:00 2001 From: akhisud3195 Date: Fri, 15 Aug 2025 12:59:32 +0800 Subject: [PATCH] Filter out zero tool toolkits --- .../components/SelectComposioToolkit.tsx | 43 +++++++++++-------- .../tools/components/ToolsConfig.tsx | 1 + 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/apps/rowboat/app/projects/[projectId]/tools/components/SelectComposioToolkit.tsx b/apps/rowboat/app/projects/[projectId]/tools/components/SelectComposioToolkit.tsx index 08671297..f62eda6b 100644 --- a/apps/rowboat/app/projects/[projectId]/tools/components/SelectComposioToolkit.tsx +++ b/apps/rowboat/app/projects/[projectId]/tools/components/SelectComposioToolkit.tsx @@ -23,6 +23,7 @@ interface SelectComposioToolkitProps { onSelectToolkit: (toolkit: ToolkitType) => void; initialToolkitSlug?: string | null; filterByTriggers?: boolean; // New prop to filter toolkits that have triggers + filterByTools?: boolean; // New prop to filter toolkits that have tools } export function SelectComposioToolkit({ @@ -30,7 +31,8 @@ export function SelectComposioToolkit({ tools, onSelectToolkit, initialToolkitSlug, - filterByTriggers = false + filterByTriggers = false, + filterByTools = false }: SelectComposioToolkitProps) { const [toolkits, setToolkits] = useState([]); const [projectConfig, setProjectConfig] = useState(null); @@ -61,20 +63,13 @@ export function SelectComposioToolkit({ cursor = response.next_cursor; } while (cursor !== null); - // // Only show those toolkits that - // // - either do not require authentication, OR - // // - have oauth2 managed by Composio - // const filteredToolkits = allToolkits.filter(toolkit => { - // const noAuth = toolkit.no_auth; - // const hasOAuth2 = toolkit.auth_schemes.includes('OAUTH2'); - // const hasComposioManagedOAuth2 = toolkit.composio_managed_auth_schemes.includes('OAUTH2'); - // return noAuth || hasOAuth2; - // }); - - // Filter toolkits that have triggers if filterByTriggers is true + // Filter toolkits based on the filter props let finalToolkits = allToolkits; if (filterByTriggers) { - finalToolkits = allToolkits.filter(toolkit => toolkit.meta.triggers_count > 0); + finalToolkits = finalToolkits.filter(toolkit => toolkit.meta.triggers_count > 0); + } + if (filterByTools) { + finalToolkits = finalToolkits.filter(toolkit => toolkit.meta.tools_count > 0); } setToolkits(finalToolkits); @@ -86,7 +81,7 @@ export function SelectComposioToolkit({ } finally { setLoading(false); } - }, [projectId, filterByTriggers]); + }, [projectId, filterByTriggers, filterByTools]); const handleSelectToolkit = useCallback((toolkit: ToolkitType) => { onSelectToolkit(toolkit); @@ -134,7 +129,12 @@ export function SelectComposioToolkit({

- {filterByTriggers ? 'Loading Composio toolkits with triggers...' : 'Loading Composio toolkits...'} + {filterByTriggers + ? 'Loading Composio toolkits with triggers...' + : filterByTools + ? 'Loading Composio toolkits with tools...' + : 'Loading Composio toolkits...' + }

); @@ -171,7 +171,13 @@ export function SelectComposioToolkit({ setSearchQuery(e.target.value)} className="w-full pl-8 pr-4 py-2 text-sm border border-gray-200 dark:border-gray-700 rounded-md @@ -184,6 +190,7 @@ export function SelectComposioToolkit({
{filteredToolkits.length} {filteredToolkits.length === 1 ? 'toolkit' : 'toolkits'} {filterByTriggers && ' with triggers'} + {filterByTools && ' with tools'}
@@ -228,7 +235,9 @@ export function SelectComposioToolkit({ ? 'No toolkits found matching your search.' : filterByTriggers ? 'No toolkits with triggers available.' - : 'No toolkits available.' + : filterByTools + ? 'No toolkits with tools available.' + : 'No toolkits available.' }

diff --git a/apps/rowboat/app/projects/[projectId]/tools/components/ToolsConfig.tsx b/apps/rowboat/app/projects/[projectId]/tools/components/ToolsConfig.tsx index 908dcb4f..ed8b141b 100644 --- a/apps/rowboat/app/projects/[projectId]/tools/components/ToolsConfig.tsx +++ b/apps/rowboat/app/projects/[projectId]/tools/components/ToolsConfig.tsx @@ -73,6 +73,7 @@ export function ToolsConfig({ tools={tools} onSelectToolkit={handleSelectToolkit} initialToolkitSlug={initialToolkitSlug} + filterByTools={true} />