diff --git a/client/src/components/SidePanel/Agents/MCPToolItem.tsx b/client/src/components/SidePanel/Agents/MCPToolItem.tsx index b82fc11797..c2704956a8 100644 --- a/client/src/components/SidePanel/Agents/MCPToolItem.tsx +++ b/client/src/components/SidePanel/Agents/MCPToolItem.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { Check, Clock, Code2, Info, Zap } from 'lucide-react'; +import { Check, Clock, Code2, Captions, Info, Zap } from 'lucide-react'; import type { AgentToolType } from 'librechat-data-provider'; import OptionToggle from './OptionToggle'; import { useLocalize } from '~/hooks'; @@ -11,13 +11,19 @@ interface MCPToolItemProps { isDeferred: boolean; isProgrammatic: boolean; isBackground: boolean; + isIntent: boolean; + /** Intent labels never reach a programmatic-only tool (no card renders for + * calls made from code), so the toggle is shown inert with an explanation. */ + intentDisabled: boolean; deferredToolsEnabled: boolean; programmaticToolsEnabled: boolean; backgroundToolsEnabled: boolean; + toolIntentsEnabled: boolean; onToggleSelect: () => void; onToggleDefer: () => void; onToggleProgrammatic: () => void; onToggleBackground: () => void; + onToggleIntent: () => void; } const iconButton = @@ -33,9 +39,13 @@ export default function MCPToolItem({ onToggleProgrammatic, isBackground, onToggleBackground, + isIntent, + intentDisabled, + onToggleIntent, deferredToolsEnabled, programmaticToolsEnabled, backgroundToolsEnabled, + toolIntentsEnabled, }: MCPToolItemProps) { const localize = useLocalize(); const [expanded, setExpanded] = useState(false); @@ -100,6 +110,19 @@ export default function MCPToolItem({ onToggle={onToggleBackground} /> )} + {toolIntentsEnabled && ( + + )}