mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 00:40:14 +01:00
- Added API endpoints for managing MCP servers: create, read, update, and delete functionalities. - Introduced new UI components for MCP server configuration, including MCPFormPanel and MCPConfig. - Updated existing types and data provider to support MCP operations. - Enhanced the side panel to include MCP server management options. - Refactored related components and hooks for better integration with the new MCP features. - Added tests for the new MCP server API functionalities.
57 lines
1.9 KiB
TypeScript
57 lines
1.9 KiB
TypeScript
import { useEffect, useMemo } from 'react';
|
|
import { EModelEndpoint, AgentCapabilities } from 'librechat-data-provider';
|
|
import type { TConfig, TEndpointsConfig, TAgentsEndpoint } from 'librechat-data-provider';
|
|
import { AgentPanelProvider, useAgentPanelContext } from '~/Providers/AgentPanelContext';
|
|
import { useGetEndpointsQuery } from '~/data-provider';
|
|
import VersionPanel from './Version/VersionPanel';
|
|
import { useChatContext } from '~/Providers';
|
|
import ActionsPanel from './ActionsPanel';
|
|
import AgentPanel from './AgentPanel';
|
|
import { Panel } from '~/common';
|
|
|
|
export default function AgentPanelSwitch() {
|
|
return (
|
|
<AgentPanelProvider>
|
|
<AgentPanelSwitchWithContext />
|
|
</AgentPanelProvider>
|
|
);
|
|
}
|
|
|
|
function AgentPanelSwitchWithContext() {
|
|
const { conversation } = useChatContext();
|
|
const { activePanel, setCurrentAgentId } = useAgentPanelContext();
|
|
|
|
// TODO: Implement MCP endpoint
|
|
const { data: endpointsConfig = {} as TEndpointsConfig } = useGetEndpointsQuery();
|
|
|
|
const agentsConfig = useMemo<TAgentsEndpoint | null>(() => {
|
|
const config = endpointsConfig?.[EModelEndpoint.agents] ?? null;
|
|
if (!config) return null;
|
|
|
|
return {
|
|
...(config as TConfig),
|
|
capabilities: Array.isArray(config.capabilities)
|
|
? config.capabilities.map((cap) => cap as unknown as AgentCapabilities)
|
|
: ([] as AgentCapabilities[]),
|
|
} as TAgentsEndpoint;
|
|
}, [endpointsConfig]);
|
|
|
|
useEffect(() => {
|
|
const agent_id = conversation?.agent_id ?? '';
|
|
if (agent_id) {
|
|
setCurrentAgentId(agent_id);
|
|
}
|
|
}, [setCurrentAgentId, conversation?.agent_id]);
|
|
|
|
if (!conversation?.endpoint) {
|
|
return null;
|
|
}
|
|
|
|
if (activePanel === Panel.actions) {
|
|
return <ActionsPanel />;
|
|
}
|
|
if (activePanel === Panel.version) {
|
|
return <VersionPanel />;
|
|
}
|
|
return <AgentPanel agentsConfig={agentsConfig} endpointsConfig={endpointsConfig} />;
|
|
}
|