@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
text/typescript
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();