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 (