@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.
40 lines (31 loc) • 1.34 kB
text/typescript
import { shallow } from 'zustand/shallow';
import { createWithEqualityFn } from 'zustand/traditional';
import { StateCreator } from 'zustand/vanilla';
import { createDevtools } from '../middleware/createDevtools';
import { AssistantAction, createAssistantSlice } from './slices/assistant/action';
import { MCPAction, createMCPSlice } from './slices/mcp';
import { ModelAction, createModelSlice } from './slices/model/action';
import { PluginAction, createPluginSlice } from './slices/plugin/action';
import { ProviderAction, createProviderSlice } from './slices/provider/action';
// =============== 聚合 createStoreFn ============ //
export type DiscoverStore = MCPAction &
AssistantAction &
ProviderAction &
ModelAction &
PluginAction;
const createStore: StateCreator<DiscoverStore, [['zustand/devtools', never]]> = (
...parameters
) => ({
...createMCPSlice(...parameters),
...createAssistantSlice(...parameters),
...createProviderSlice(...parameters),
...createModelSlice(...parameters),
...createPluginSlice(...parameters),
});
// =============== 实装 useStore ============ //
const devtools = createDevtools('discover');
export const useDiscoverStore = createWithEqualityFn<DiscoverStore>()(
devtools(createStore),
shallow,
);
export const getDiscoverStoreState = () => useDiscoverStore.getState();