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.

35 lines (26 loc) 1.32 kB
import { shallow } from 'zustand/shallow'; import { createWithEqualityFn } from 'zustand/traditional'; import { StateCreator } from 'zustand/vanilla'; import { createDevtools } from '../middleware/createDevtools'; import { ToolStoreState, initialState } from './initialState'; import { BuiltinToolAction, createBuiltinToolSlice } from './slices/builtin'; import { CustomPluginAction, createCustomPluginSlice } from './slices/customPlugin'; import { PluginAction, createPluginSlice } from './slices/plugin'; import { PluginStoreAction, createPluginStoreSlice } from './slices/store'; // =============== 聚合 createStoreFn ============ // export type ToolStore = ToolStoreState & CustomPluginAction & PluginAction & PluginStoreAction & BuiltinToolAction; const createStore: StateCreator<ToolStore, [['zustand/devtools', never]]> = (...parameters) => ({ ...initialState, ...createPluginSlice(...parameters), ...createCustomPluginSlice(...parameters), ...createPluginStoreSlice(...parameters), ...createBuiltinToolSlice(...parameters), }); // =============== 实装 useStore ============ // const devtools = createDevtools('tools'); export const useToolStore = createWithEqualityFn<ToolStore>()(devtools(createStore), shallow); export const getToolStoreState = () => useToolStore.getState();