@lobehub/chat
Version:
Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.
63 lines (49 loc) • 1.96 kB
text/typescript
import { InstallPluginMeta } from '@/types/tool/plugin';
import type { ToolStoreState } from '../../initialState';
const mcpPluginList = (s: ToolStoreState) => {
const installedPluginIds = new Set(s.installedPlugins.map((i) => i.identifier));
const list =
s.listType === 'mcp'
? s.mcpPluginItems
: s.mcpPluginItems.filter((p) => installedPluginIds.has(p.identifier));
return list.map<InstallPluginMeta>((p) => ({
author: p.author,
createdAt: p.createdAt,
homepage: p.homepage,
identifier: p.identifier,
meta: {
avatar: p.icon!,
description: p.description,
tags: p.tags,
title: p.name,
},
type: 'plugin',
}));
};
const isPluginInstallLoading = (id: string) => (s: ToolStoreState) => s.pluginInstallLoading[id];
const getMCPInstallProgress = (id: string) => (s: ToolStoreState) => s.mcpInstallProgress[id];
const isMCPInstalling = (id: string) => (s: ToolStoreState) => !!s.mcpInstallProgress[id];
const getPluginById = (id: string) => (s: ToolStoreState) => {
return s.mcpPluginItems.find((i) => i.identifier === id);
};
const activeMCPPluginIdentifier = (s: ToolStoreState) => s.activeMCPIdentifier;
const getMCPPluginRequiringConfig = (id: string) => (s: ToolStoreState) =>
s.mcpInstallProgress[id]?.configSchema;
const isMCPPluginRequiringConfig = (id: string) => (s: ToolStoreState) =>
!!s.mcpInstallProgress[id]?.configSchema;
// 检查插件是否正在安装中(有安装进度且不是配置阶段)
const isMCPInstallInProgress = (id: string) => (s: ToolStoreState) => {
const progress = s.mcpInstallProgress[id];
return !!progress && !progress.needsConfig && progress.step !== 'Error';
};
export const mcpStoreSelectors = {
activeMCPPluginIdentifier,
getMCPInstallProgress,
getMCPPluginRequiringConfig,
getPluginById,
isMCPInstallInProgress,
isMCPInstalling,
isMCPPluginRequiringConfig,
isPluginInstallLoading,
mcpPluginList,
};