diff --git a/api/app/clients/tools/util/handleTools.js b/api/app/clients/tools/util/handleTools.js index 8aeb401950e..7a7be797d56 100644 --- a/api/app/clients/tools/util/handleTools.js +++ b/api/app/clients/tools/util/handleTools.js @@ -1,9 +1,7 @@ const { Tools } = require('librechat-data-provider'); const { ZapierToolKit } = require('langchain/agents'); const { Calculator } = require('langchain/tools/calculator'); -const { WebBrowser } = require('langchain/tools/webbrowser'); const { SerpAPI, ZapierNLAWrapper } = require('langchain/tools'); -const { OpenAIEmbeddings } = require('langchain/embeddings/openai'); const { createCodeExecutionTool, EnvVar } = require('@librechat/agents'); const { getUserPluginAuthValue } = require('~/server/services/PluginService'); const { @@ -31,12 +29,6 @@ const { loadToolSuite } = require('./loadToolSuite'); const { loadSpecs } = require('./loadSpecs'); const { logger } = require('~/config'); -const getOpenAIKey = async (options, user) => { - let openAIApiKey = options.openAIApiKey ?? process.env.OPENAI_API_KEY; - openAIApiKey = openAIApiKey === 'user_provided' ? null : openAIApiKey; - return openAIApiKey || (await getUserPluginAuthValue(user, 'OPENAI_API_KEY')); -}; - /** * Validates the availability and authentication of tools for a user based on environment variables or user-specific plugin authentication values. * Tools without required authentication or with valid authentication are considered valid. @@ -177,8 +169,6 @@ const loadTools = async ({ traversaal_search: TraversaalSearch, }; - const openAIApiKey = await getOpenAIKey(options, user); - const customConstructors = { e2b_code_interpreter: async () => { if (!functions) { @@ -191,7 +181,6 @@ const loadTools = async ({ user, options: { model, - openAIApiKey, ...options, }, }); @@ -208,14 +197,6 @@ const loadTools = async ({ options, }); }, - 'web-browser': async () => { - // let openAIApiKey = options.openAIApiKey ?? process.env.OPENAI_API_KEY; - // openAIApiKey = openAIApiKey === 'user_provided' ? null : openAIApiKey; - // openAIApiKey = openAIApiKey || (await getUserPluginAuthValue(user, 'OPENAI_API_KEY')); - const browser = new WebBrowser({ model, embeddings: new OpenAIEmbeddings({ openAIApiKey }) }); - browser.description_for_model = browser.description; - return browser; - }, serpapi: async () => { let apiKey = process.env.SERPAPI_API_KEY; if (!apiKey) { diff --git a/client/src/components/SidePanel/Agents/AgentPanel.tsx b/client/src/components/SidePanel/Agents/AgentPanel.tsx index 6d4628cc16b..b7356f3c3bf 100644 --- a/client/src/components/SidePanel/Agents/AgentPanel.tsx +++ b/client/src/components/SidePanel/Agents/AgentPanel.tsx @@ -174,15 +174,25 @@ export default function AgentPanel({ } }, [agent_id, onSelectAgent]); + const canEditAgent = useMemo(() => { + const canEdit = + agentQuery.data?.isCollaborative ?? false + ? true + : agentQuery.data?.author === user?.id || user?.role === SystemRoles.ADMIN; + + return agentQuery.data?.id != null && agentQuery.data.id ? canEdit : true; + }, [ + agentQuery.data?.isCollaborative, + agentQuery.data?.author, + agentQuery.data?.id, + user?.id, + user?.role, + ]); + if (agentQuery.isInitialLoading) { return ; } - const canEditAgent = - agentQuery.data?.isCollaborative ?? false - ? true - : agentQuery.data?.author === user?.id || user?.role === SystemRoles.ADMIN; - return (