1
import { LobeChatPluginManifest } from '@lobehub/chat-plugin-sdk';
3
import { PluginModel } from '@/database/client/models/plugin';
4
import { LobeTool } from '@/types/tool';
5
import { LobeToolCustomPlugin } from '@/types/tool/plugin';
7
import { IPluginService, InstallPluginParams } from './type';
9
export class ClientService implements IPluginService {
10
installPlugin = async (plugin: InstallPluginParams) => {
11
return PluginModel.create(plugin);
14
getInstalledPlugins = () => {
15
return PluginModel.getList() as Promise<LobeTool[]>;
18
uninstallPlugin(identifier: string) {
19
return PluginModel.delete(identifier);
22
async createCustomPlugin(customPlugin: LobeToolCustomPlugin) {
23
return PluginModel.create({ ...customPlugin, type: 'customPlugin' });
26
async updatePlugin(id: string, value: LobeToolCustomPlugin) {
27
await PluginModel.update(id, value);
30
async updatePluginManifest(id: string, manifest: LobeChatPluginManifest) {
31
await PluginModel.update(id, { manifest });
34
async removeAllPlugins() {
35
return PluginModel.clear();
38
// eslint-disable-next-line @typescript-eslint/no-unused-vars
39
async updatePluginSettings(id: string, settings: any, _?: AbortSignal) {
40
await PluginModel.update(id, { settings });