From c41a6c389914afe7798800f7f24e354b3a72da14 Mon Sep 17 00:00:00 2001 From: Faisal Amir Date: Mon, 9 Jun 2025 20:58:09 +0700 Subject: [PATCH] fix: tools call available dropdown (#5222) --- web-app/src/containers/ChatInput.tsx | 73 +++++++++++-------- .../src/containers/DropdownToolsAvailable.tsx | 34 ++++----- web-app/src/containers/ProvidersMenu.tsx | 4 +- web-app/src/containers/RenderMarkdown.tsx | 5 +- 4 files changed, 66 insertions(+), 50 deletions(-) diff --git a/web-app/src/containers/ChatInput.tsx b/web-app/src/containers/ChatInput.tsx index 806e613a5..44c0b15b3 100644 --- a/web-app/src/containers/ChatInput.tsx +++ b/web-app/src/containers/ChatInput.tsx @@ -64,6 +64,8 @@ const ChatInput = ({ const { selectedModel } = useModelProvider() const { sendMessage } = useChat() const [message, setMessage] = useState('') + const [dropdownToolsAvailable, setDropdownToolsAvailable] = useState(false) + const [tooltipToolsAvailable, setTooltipToolsAvailable] = useState(false) const [uploadedFiles, setUploadedFiles] = useState< Array<{ name: string @@ -407,7 +409,6 @@ const ChatInput = ({ useLastUsedModel={initialMessage} /> )} - {/* File attachment - always available */}
- {/* Microphone - always available - Temp Hide */} {/*
*/} - {selectedModel?.capabilities?.includes('vision') && ( - +
@@ -441,7 +440,6 @@ const ChatInput = ({
)} - {selectedModel?.capabilities?.includes('embeddings') && ( @@ -463,32 +461,49 @@ const ChatInput = ({ {selectedModel?.capabilities?.includes('tools') && hasActiveMCPServers && ( - - -
+ + +
{ + setDropdownToolsAvailable(false) + e.stopPropagation() + }} + > - {(isOpen, toolsCount) => ( -
- - {toolsCount > 0 && ( -
- - {toolsCount > 99 ? '99+' : toolsCount} - -
- )} -
- )} + {(isOpen, toolsCount) => { + setDropdownToolsAvailable(isOpen) + if (tooltipToolsAvailable && isOpen) { + setTooltipToolsAvailable(false) + } + return ( +
+ + {toolsCount > 0 && ( +
+ + {toolsCount > 99 ? '99+' : toolsCount} + +
+ )} +
+ ) + }}
@@ -498,7 +513,6 @@ const ChatInput = ({
)} - {selectedModel?.capabilities?.includes('web_search') && ( @@ -516,7 +530,6 @@ const ChatInput = ({ )} - {selectedModel?.capabilities?.includes('reasoning') && ( diff --git a/web-app/src/containers/DropdownToolsAvailable.tsx b/web-app/src/containers/DropdownToolsAvailable.tsx index 28ff5c285..eb8bc2e93 100644 --- a/web-app/src/containers/DropdownToolsAvailable.tsx +++ b/web-app/src/containers/DropdownToolsAvailable.tsx @@ -99,36 +99,34 @@ export default function DropdownToolsAvailable({ {renderTrigger()} - + Available Tools -
+
{tools.map((tool) => { const isChecked = isToolChecked(tool.name) return (
-
-
-
-
-

+
+
+
+
+ {tool.name} -

- {tool.description && ( -

- {tool.description} -

- )} +
+ {tool.description && ( +

+ {tool.description} +

+ )} +
+
diff --git a/web-app/src/containers/ProvidersMenu.tsx b/web-app/src/containers/ProvidersMenu.tsx index 5afd5ec8e..f2dfa1bdc 100644 --- a/web-app/src/containers/ProvidersMenu.tsx +++ b/web-app/src/containers/ProvidersMenu.tsx @@ -96,7 +96,9 @@ const ProvidersMenu = ({ } > - {getProviderTitle(provider.provider)} +
+ {getProviderTitle(provider.provider)} +
) diff --git a/web-app/src/containers/RenderMarkdown.tsx b/web-app/src/containers/RenderMarkdown.tsx index 77ffe149b..926a513e8 100644 --- a/web-app/src/containers/RenderMarkdown.tsx +++ b/web-app/src/containers/RenderMarkdown.tsx @@ -80,7 +80,10 @@ function RenderMarkdownComponent({ {getReadableLanguageName(language)}