🔧 refactor: Enhance Model & Endpoint Configurations with Global Indicators 🌍 (#6578)

* 🔧 fix: Simplify event handling in Badge component by always preventing default behavior and stopping propagation on toggle

* feat: show Global agents icon in ModelSelector

* feat: show Global agents icon in ModelSelector's search results

* refactor(Header): remove unused import

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor(EndpointModelItem): remove unused import of useGetStartupConfig

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Marco Beretta 2025-03-27 23:07:07 +01:00 committed by GitHub
parent b9ebdd4aa5
commit e630c0a00d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 76 additions and 127 deletions

View file

@ -1,73 +0,0 @@
import { isAgentsEndpoint, isAssistantsEndpoint } from 'librechat-data-provider';
import { ExtendedEndpoint } from '~/common';
export const filterMenuItems = (
searchTerm: string,
mappedEndpoints: ExtendedEndpoint[],
agents: any[],
assistants: any[],
modelsData: any,
): ExtendedEndpoint[] => {
if (!searchTerm.trim()) {
return mappedEndpoints;
}
const lowercaseSearchTerm = searchTerm.toLowerCase();
return mappedEndpoints
.map((ep) => {
if (ep.hasModels) {
if (isAgentsEndpoint(ep.value)) {
const filteredAgents = agents.filter((agent) =>
agent.name?.toLowerCase().includes(lowercaseSearchTerm),
);
if (ep.label.toLowerCase().includes(lowercaseSearchTerm) || filteredAgents.length > 0) {
return {
...ep,
models: filteredAgents.map((agent) => agent.id),
agentNames: filteredAgents.reduce((acc: Record<string, string>, agent) => {
acc[agent.id] = agent.name || '';
return acc;
}, {}),
};
}
return null;
} else if (isAssistantsEndpoint(ep.value)) {
const filteredAssistants = assistants.filter((assistant) =>
assistant.name?.toLowerCase().includes(lowercaseSearchTerm),
);
if (
ep.label.toLowerCase().includes(lowercaseSearchTerm) ||
filteredAssistants.length > 0
) {
return {
...ep,
models: filteredAssistants.map((assistant) => assistant.id),
assistantNames: filteredAssistants.reduce(
(acc: Record<string, string>, assistant) => {
acc[assistant.id] = assistant.name || '';
return acc;
},
{},
),
};
}
return null;
} else {
const allModels = modelsData?.[ep.value] ?? [];
const filteredModels = allModels.filter((model: string) =>
model.toLowerCase().includes(lowercaseSearchTerm),
);
if (ep.label.toLowerCase().includes(lowercaseSearchTerm) || filteredModels.length > 0) {
return { ...ep, models: filteredModels };
}
return null;
}
} else {
return ep.label.toLowerCase().includes(lowercaseSearchTerm) ? { ...ep, models: [] } : null;
}
})
.filter(Boolean) as ExtendedEndpoint[];
};
export default filterMenuItems;

View file

@ -20,7 +20,6 @@ export { default as logger } from './logger';
export { default as buildTree } from './buildTree';
export { default as getLoginError } from './getLoginError';
export { default as cleanupPreset } from './cleanupPreset';
export { default as filterMenuItems } from './endpointFilter';
export { default as buildDefaultConvo } from './buildDefaultConvo';
export { default as getDefaultEndpoint } from './getDefaultEndpoint';