diff --git a/apps/rowboat/app/projects/[projectId]/tools/components/SelectComposioToolkit.tsx b/apps/rowboat/app/projects/[projectId]/tools/components/SelectComposioToolkit.tsx index 2e18ab71..08671297 100644 --- a/apps/rowboat/app/projects/[projectId]/tools/components/SelectComposioToolkit.tsx +++ b/apps/rowboat/app/projects/[projectId]/tools/components/SelectComposioToolkit.tsx @@ -22,13 +22,15 @@ interface SelectComposioToolkitProps { tools: z.infer; onSelectToolkit: (toolkit: ToolkitType) => void; initialToolkitSlug?: string | null; + filterByTriggers?: boolean; // New prop to filter toolkits that have triggers } export function SelectComposioToolkit({ projectId, tools, onSelectToolkit, - initialToolkitSlug + initialToolkitSlug, + filterByTriggers = false }: SelectComposioToolkitProps) { const [toolkits, setToolkits] = useState([]); const [projectConfig, setProjectConfig] = useState(null); @@ -69,7 +71,13 @@ export function SelectComposioToolkit({ // return noAuth || hasOAuth2; // }); - setToolkits(allToolkits); + // Filter toolkits that have triggers if filterByTriggers is true + let finalToolkits = allToolkits; + if (filterByTriggers) { + finalToolkits = allToolkits.filter(toolkit => toolkit.meta.triggers_count > 0); + } + + setToolkits(finalToolkits); setError(null); } catch (err: any) { setError('Unable to load all Composio toolkits. Please check your connection and try again.'); @@ -78,7 +86,7 @@ export function SelectComposioToolkit({ } finally { setLoading(false); } - }, [projectId]); + }, [projectId, filterByTriggers]); const handleSelectToolkit = useCallback((toolkit: ToolkitType) => { onSelectToolkit(toolkit); @@ -125,7 +133,9 @@ export function SelectComposioToolkit({ return (
-

Loading Composio toolkits...

+

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

); } @@ -161,7 +171,7 @@ 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 @@ -173,6 +183,7 @@ export function SelectComposioToolkit({
{filteredToolkits.length} {filteredToolkits.length === 1 ? 'toolkit' : 'toolkits'} + {filterByTriggers && ' with triggers'}
@@ -204,6 +215,7 @@ export function SelectComposioToolkit({ isConnected={isConnected} workflowTools={tools} onSelectToolkit={() => handleSelectToolkit(toolkit)} + showTriggerCounts={filterByTriggers} /> ); })} @@ -212,7 +224,12 @@ export function SelectComposioToolkit({ {filteredToolkits.length === 0 && !loading && (

- {searchQuery ? 'No toolkits found matching your search.' : 'No toolkits available.'} + {searchQuery + ? 'No toolkits found matching your search.' + : filterByTriggers + ? 'No toolkits with triggers available.' + : 'No toolkits available.' + }

)} diff --git a/apps/rowboat/app/projects/[projectId]/tools/components/ToolkitCard.tsx b/apps/rowboat/app/projects/[projectId]/tools/components/ToolkitCard.tsx index f6457c30..9b2b2a13 100644 --- a/apps/rowboat/app/projects/[projectId]/tools/components/ToolkitCard.tsx +++ b/apps/rowboat/app/projects/[projectId]/tools/components/ToolkitCard.tsx @@ -30,6 +30,7 @@ interface ToolkitCardProps { isConnected: boolean; onSelectToolkit: () => void; workflowTools: z.infer; + showTriggerCounts?: boolean; // New prop to show trigger counts instead of tool counts } export function ToolkitCard({ @@ -37,6 +38,7 @@ export function ToolkitCard({ isConnected, onSelectToolkit, workflowTools, + showTriggerCounts = false, }: ToolkitCardProps) { const handleCardClick = useCallback(() => { onSelectToolkit(); @@ -69,9 +71,11 @@ export function ToolkitCard({ variant="faded" size="sm" > - {selectedToolsCount > 0 - ? `${toolkit.meta.tools_count} tools, ${selectedToolsCount} selected` - : `${toolkit.meta.tools_count} tools` + {showTriggerCounts + ? `${toolkit.meta.triggers_count} triggers` + : selectedToolsCount > 0 + ? `${toolkit.meta.tools_count} tools, ${selectedToolsCount} selected` + : `${toolkit.meta.tools_count} tools` } diff --git a/apps/rowboat/app/projects/[projectId]/workflow/components/TriggersModal.tsx b/apps/rowboat/app/projects/[projectId]/workflow/components/TriggersModal.tsx index 8a0b05fa..ad7f4459 100644 --- a/apps/rowboat/app/projects/[projectId]/workflow/components/TriggersModal.tsx +++ b/apps/rowboat/app/projects/[projectId]/workflow/components/TriggersModal.tsx @@ -299,6 +299,7 @@ export function TriggersModal({ tools={[]} // Empty array since we're not using this for tools onSelectToolkit={handleSelectToolkit} initialToolkitSlug={null} + filterByTriggers={true} /> );