import { defineStore } from 'pinia'; export interface ConversationSummary { id: string; title: string; updated_at: string | number; total_messages?: number; total_tools?: number; } interface ConversationState { conversations: ConversationSummary[]; searchResults: ConversationSummary[]; conversationInsertAnimations: Record; conversationListAnimationMode: 'idle' | 'create' | 'duplicate' | 'delete'; pendingDeletingConversationIds: string[]; conversationsLoading: boolean; hasMoreConversations: boolean; loadingMoreConversations: boolean; currentConversationId: string | null; currentConversationTitle: string; searchQuery: string; searchTimer: ReturnType | null; searchActive: boolean; searchInProgress: boolean; searchMoreAvailable: boolean; searchOffset: number; searchTotal: number; conversationsOffset: number; conversationsLimit: number; runningWorkspaceTasks: any[]; acknowledgedCompletedTaskIds: string[]; } export const useConversationStore = defineStore('conversation', { state: (): ConversationState => ({ conversations: [], searchResults: [], conversationInsertAnimations: {}, conversationListAnimationMode: 'idle', pendingDeletingConversationIds: [], conversationsLoading: false, hasMoreConversations: false, loadingMoreConversations: false, currentConversationId: null, currentConversationTitle: '', searchQuery: '', searchTimer: null, searchActive: false, searchInProgress: false, searchMoreAvailable: false, searchOffset: 0, searchTotal: 0, conversationsOffset: 0, conversationsLimit: 20, runningWorkspaceTasks: [], acknowledgedCompletedTaskIds: [] }), actions: { resetConversations() { this.conversations = []; this.searchResults = []; this.conversationInsertAnimations = {}; this.conversationListAnimationMode = 'idle'; this.pendingDeletingConversationIds = []; this.searchActive = false; this.searchInProgress = false; this.searchMoreAvailable = false; this.searchOffset = 0; this.searchTotal = 0; this.hasMoreConversations = false; this.loadingMoreConversations = false; this.conversationsOffset = 0; this.runningWorkspaceTasks = []; this.acknowledgedCompletedTaskIds = []; }, cancelSearchTimer() { if (this.searchTimer) { clearTimeout(this.searchTimer); this.searchTimer = null; } } } });