From 94c1f5f51877efdfbe644d7d7b7d1512e22f04d3 Mon Sep 17 00:00:00 2001 From: Atef Bellaaj Date: Mon, 23 Jun 2025 11:31:18 +0200 Subject: [PATCH] selected view only agents injected in the drop down --- api/server/controllers/agents/v1.js | 2 +- .../SidePanel/Agents/AgentDetail.tsx | 23 ++++++++++--------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/api/server/controllers/agents/v1.js b/api/server/controllers/agents/v1.js index ddd51f9c40..ec09c7eb5b 100644 --- a/api/server/controllers/agents/v1.js +++ b/api/server/controllers/agents/v1.js @@ -433,7 +433,7 @@ const getListAgentsHandler = async (req, res) => { }); const publiclyAccessibleIds = await findPubliclyAccessibleResources({ resourceType: 'agent', - requiredPermissions: requiredPermission, + requiredPermissions: PermissionBits.VIEW, }); // Use the new ACL-aware function const data = await getListAgentsByAccess({ diff --git a/client/src/components/SidePanel/Agents/AgentDetail.tsx b/client/src/components/SidePanel/Agents/AgentDetail.tsx index 4e77a0a496..7a9c86b83f 100644 --- a/client/src/components/SidePanel/Agents/AgentDetail.tsx +++ b/client/src/components/SidePanel/Agents/AgentDetail.tsx @@ -2,7 +2,7 @@ import React, { useRef, useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import type t from 'librechat-data-provider'; - +import { AgentListResponse, PERMISSION_BITS, QueryKeys } from 'librechat-data-provider'; interface SupportContact { name?: string; email?: string; @@ -14,17 +14,10 @@ interface AgentWithSupport extends t.Agent { import useLocalize from '~/hooks/useLocalize'; import { useToast } from '~/hooks'; -import { - Dialog, - DialogContent, - Button, - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from '~/components/ui'; +import { Dialog, DialogContent, Button } from '~/components/ui'; import { DotsIcon } from '~/components/svg'; import { renderAgentAvatar } from '~/utils/agents'; +import { Query, useQueryClient } from '@tanstack/react-query'; interface AgentDetailProps { agent: AgentWithSupport; // The agent data to display @@ -42,7 +35,7 @@ const AgentDetail: React.FC = ({ agent, isOpen, onClose }) => const dialogRef = useRef(null); const dropdownRef = useRef(null); const [dropdownOpen, setDropdownOpen] = useState(false); - + const queryClient = useQueryClient(); // Close dropdown when clicking outside the dropdown menu useEffect(() => { const handleClickOutside = (event: MouseEvent) => { @@ -66,6 +59,14 @@ const AgentDetail: React.FC = ({ agent, isOpen, onClose }) => */ const handleStartChat = () => { if (agent) { + const keys = [QueryKeys.agents, { requiredPermission: PERMISSION_BITS.EDIT }]; + const listResp = queryClient.getQueryData(keys); + if (listResp != null) { + if (!listResp.data.some((a) => a.id === agent.id)) { + const currentAgents = [agent, ...JSON.parse(JSON.stringify(listResp.data))]; + queryClient.setQueryData(keys, { ...listResp, data: currentAgents }); + } + } navigate(`/c/new?agent_id=${agent.id}`); } };