UNPKG

@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.

46 lines (35 loc) 1.61 kB
import { clientDB } from '@/database/client/db'; import { PluginModel } from '@/database/models/plugin'; import { BaseClientService } from '@/services/baseClientService'; import { LobeTool } from '@/types/tool'; import { IPluginService } from './type'; export class ClientService extends BaseClientService implements IPluginService { private get pluginModel(): PluginModel { return new PluginModel(clientDB as any, this.userId); } installPlugin: IPluginService['installPlugin'] = async (plugin) => { await this.pluginModel.create(plugin); }; getInstalledPlugins: IPluginService['getInstalledPlugins'] = () => { return this.pluginModel.query() as Promise<LobeTool[]>; }; uninstallPlugin: IPluginService['uninstallPlugin'] = async (identifier) => { await this.pluginModel.delete(identifier); }; createCustomPlugin: IPluginService['createCustomPlugin'] = async (customPlugin) => { await this.pluginModel.create({ ...customPlugin, type: 'customPlugin' }); }; updatePlugin: IPluginService['updatePlugin'] = async (id, value) => { await this.pluginModel.update(id, value); }; updatePluginManifest: IPluginService['updatePluginManifest'] = async (id, manifest) => { await this.pluginModel.update(id, { manifest }); }; removeAllPlugins: IPluginService['removeAllPlugins'] = async () => { await this.pluginModel.deleteAll(); }; // eslint-disable-next-line @typescript-eslint/no-unused-vars updatePluginSettings: IPluginService['updatePluginSettings'] = async (id, settings, _?) => { await this.pluginModel.update(id, { settings }); }; }