import { create } from 'zustand'; import type { ChatMessage, AgentResult, Finding, AgentType } from '@glmpilot/shared'; interface AIState { messages: ChatMessage[]; streamingMessage: string; isStreaming: boolean; agentResults: Partial>; agentRunning: Partial>; completionSuggestion: string | null; addMessage: (message: ChatMessage) => void; updateStreamingMessage: (content: string) => void; finishStreaming: (finalContent: string) => void; setAgentResult: (agent: AgentType, result: AgentResult) => void; setAgentRunning: (agent: AgentType, running: boolean) => void; setCompletionSuggestion: (suggestion: string | null) => void; clearChat: () => void; setIsStreaming: (streaming: boolean) => void; } export const useAIStore = create((set) => ({ messages: [], streamingMessage: '', isStreaming: false, agentResults: {}, agentRunning: {}, completionSuggestion: null, addMessage: (message) => set((state) => ({ messages: [...state.messages, message] })), updateStreamingMessage: (content) => set((state) => ({ streamingMessage: state.streamingMessage + content })), finishStreaming: (finalContent) => set((state) => ({ messages: [...state.messages, { id: `msg-${Date.now()}`, role: 'assistant' as const, content: finalContent, timestamp: Date.now(), }], streamingMessage: '', isStreaming: false, })), setAgentResult: (agent, result) => set((state) => ({ agentResults: { ...state.agentResults, [agent]: result }, })), setAgentRunning: (agent, running) => set((state) => ({ agentRunning: { ...state.agentRunning, [agent]: running }, })), setCompletionSuggestion: (suggestion) => set({ completionSuggestion: suggestion }), clearChat: () => set({ messages: [], streamingMessage: '' }), setIsStreaming: (streaming) => set({ isStreaming: streaming }), }));