Skip to content

Commit e563ac1

Browse files
committed
Combine aiProviderStore and chat.store
1 parent b8e6893 commit e563ac1

File tree

5 files changed

+15
-30
lines changed

5 files changed

+15
-30
lines changed

src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/AskAi/AiProviderSelector.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/** @jsxImportSource @emotion/react */
2-
import { useAiProviderStore } from './aiProviderStore'
2+
import { useChatActions, useAiProvider, type AiProvider } from './chat.store'
33
import { EuiRadioGroup } from '@elastic/eui'
44
import type { EuiRadioGroupOption } from '@elastic/eui'
55
import { css } from '@emotion/react'
@@ -22,16 +22,15 @@ const options: EuiRadioGroupOption[] = [
2222
]
2323

2424
export const AiProviderSelector = () => {
25-
const { provider, setProvider } = useAiProviderStore()
25+
const provider = useAiProvider()
26+
const { setAiProvider } = useChatActions()
2627

2728
return (
2829
<div css={containerStyles}>
2930
<EuiRadioGroup
3031
options={options}
3132
idSelected={provider}
32-
onChange={(id) =>
33-
setProvider(id as 'AgentBuilder' | 'LlmGateway')
34-
}
33+
onChange={(id) => setAiProvider(id as AiProvider)}
3534
name="aiProvider"
3635
legend={{
3736
children: 'AI Provider',

src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/AskAi/aiProviderResolver.ts

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/AskAi/aiProviderStore.ts

Lines changed: 0 additions & 18 deletions
This file was deleted.

src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/AskAi/chat.store.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { v4 as uuidv4 } from 'uuid'
22
import { create } from 'zustand/react'
33

4+
export type AiProvider = 'AgentBuilder' | 'LlmGateway'
5+
46
export interface ChatMessage {
57
id: string
68
type: 'user' | 'ai'
@@ -17,6 +19,7 @@ const sentAiMessageIds = new Set<string>()
1719
interface ChatState {
1820
chatMessages: ChatMessage[]
1921
conversationId: string | null
22+
aiProvider: AiProvider
2023
actions: {
2124
submitQuestion: (question: string) => void
2225
updateAiMessage: (
@@ -25,6 +28,7 @@ interface ChatState {
2528
status: ChatMessage['status']
2629
) => void
2730
setConversationId: (conversationId: string) => void
31+
setAiProvider: (provider: AiProvider) => void
2832
clearChat: () => void
2933
hasMessageBeenSent: (id: string) => boolean
3034
markMessageAsSent: (id: string) => void
@@ -34,6 +38,7 @@ interface ChatState {
3438
export const chatStore = create<ChatState>((set) => ({
3539
chatMessages: [],
3640
conversationId: null, // Start with null - will be set by backend on first request
41+
aiProvider: 'LlmGateway', // Default to LLM Gateway
3742
actions: {
3843
submitQuestion: (question: string) => {
3944
set((state) => {
@@ -81,6 +86,10 @@ export const chatStore = create<ChatState>((set) => ({
8186
set({ conversationId })
8287
},
8388

89+
setAiProvider: (provider: AiProvider) => {
90+
set({ aiProvider: provider })
91+
},
92+
8493
clearChat: () => {
8594
sentAiMessageIds.clear()
8695
set({ chatMessages: [], conversationId: null })
@@ -97,4 +106,5 @@ export const chatStore = create<ChatState>((set) => ({
97106
export const useChatMessages = () => chatStore((state) => state.chatMessages)
98107
export const useConversationId = () =>
99108
chatStore((state) => state.conversationId)
109+
export const useAiProvider = () => chatStore((state) => state.aiProvider)
100110
export const useChatActions = () => chatStore((state) => state.actions)

src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/AskAi/useAskAi.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { AskAiEvent, AskAiEventSchema } from './AskAiEvent'
2-
import { useAiProvider } from './aiProviderStore'
2+
import { useAiProvider } from './chat.store'
33
import { useFetchEventSource } from './useFetchEventSource'
44
import { useMessageThrottling } from './useMessageThrottling'
55
import { EventSourceMessage } from '@microsoft/fetch-event-source'

0 commit comments

Comments
 (0)