Programmer-RD-AI
feat: remove environment variables from configuration and set default endpoint directly
5dfb055
import { create } from 'zustand' | |
import { persist, createJSONStorage } from 'zustand/middleware' | |
import { | |
type PlaygroundChatMessage, | |
type SessionEntry | |
} from '@/types/playground' | |
interface Agent { | |
value: string | |
label: string | |
model: { | |
provider: string | |
} | |
storage?: boolean | |
} | |
interface PlaygroundStore { | |
hydrated: boolean | |
setHydrated: () => void | |
streamingErrorMessage: string | |
setStreamingErrorMessage: (streamingErrorMessage: string) => void | |
endpoints: { | |
endpoint: string | |
id_playground_endpoint: string | |
}[] | |
setEndpoints: ( | |
endpoints: { | |
endpoint: string | |
id_playground_endpoint: string | |
}[] | |
) => void | |
isStreaming: boolean | |
setIsStreaming: (isStreaming: boolean) => void | |
isEndpointActive: boolean | |
setIsEndpointActive: (isActive: boolean) => void | |
isEndpointLoading: boolean | |
setIsEndpointLoading: (isLoading: boolean) => void | |
messages: PlaygroundChatMessage[] | |
setMessages: ( | |
messages: | |
| PlaygroundChatMessage[] | |
| ((prevMessages: PlaygroundChatMessage[]) => PlaygroundChatMessage[]) | |
) => void | |
hasStorage: boolean | |
setHasStorage: (hasStorage: boolean) => void | |
chatInputRef: React.RefObject<HTMLTextAreaElement | null> | |
selectedEndpoint: string | |
setSelectedEndpoint: (selectedEndpoint: string) => void | |
agents: Agent[] | |
setAgents: (agents: Agent[]) => void | |
selectedModel: string | |
setSelectedModel: (model: string) => void | |
sessionsData: SessionEntry[] | null | |
setSessionsData: ( | |
sessionsData: | |
| SessionEntry[] | |
| ((prevSessions: SessionEntry[] | null) => SessionEntry[] | null) | |
) => void | |
isSessionsLoading: boolean | |
setIsSessionsLoading: (isSessionsLoading: boolean) => void | |
} | |
export const usePlaygroundStore = create<PlaygroundStore>()( | |
persist( | |
(set) => ({ | |
hydrated: false, | |
setHydrated: () => set({ hydrated: true }), | |
streamingErrorMessage: '', | |
setStreamingErrorMessage: (streamingErrorMessage) => | |
set(() => ({ streamingErrorMessage })), | |
endpoints: [], | |
setEndpoints: (endpoints) => set(() => ({ endpoints })), | |
isStreaming: false, | |
setIsStreaming: (isStreaming) => set(() => ({ isStreaming })), | |
isEndpointActive: false, | |
setIsEndpointActive: (isActive) => | |
set(() => ({ isEndpointActive: isActive })), | |
isEndpointLoading: true, | |
setIsEndpointLoading: (isLoading) => | |
set(() => ({ isEndpointLoading: isLoading })), | |
messages: [], | |
setMessages: (messages) => | |
set((state) => ({ | |
messages: | |
typeof messages === 'function' ? messages(state.messages) : messages | |
})), | |
hasStorage: false, | |
setHasStorage: (hasStorage) => set(() => ({ hasStorage })), | |
chatInputRef: { current: null }, | |
selectedEndpoint: | |
'https://sifa-classification-agentic-rag-99329044472.asia-south1.run.app', | |
setSelectedEndpoint: (selectedEndpoint) => | |
set(() => ({ selectedEndpoint })), | |
agents: [], | |
setAgents: (agents) => set({ agents }), | |
selectedModel: '', | |
setSelectedModel: (selectedModel) => set(() => ({ selectedModel })), | |
sessionsData: null, | |
setSessionsData: (sessionsData) => | |
set((state) => ({ | |
sessionsData: | |
typeof sessionsData === 'function' | |
? sessionsData(state.sessionsData) | |
: sessionsData | |
})), | |
isSessionsLoading: false, | |
setIsSessionsLoading: (isSessionsLoading) => | |
set(() => ({ isSessionsLoading })) | |
}), | |
{ | |
name: 'endpoint-storage', | |
storage: createJSONStorage(() => localStorage), | |
partialize: (state) => ({ | |
selectedEndpoint: state.selectedEndpoint | |
}), | |
onRehydrateStorage: () => (state) => { | |
state?.setHydrated?.() | |
} | |
} | |
) | |
) | |