UNPKG

@agentman/chat-widget

Version:

Agentman Chat Widget for easy integration with web applications

134 lines (133 loc) 4.1 kB
import type { ChatConfig } from '../types/types'; import type { StateManager } from '../StateManager'; import type { ViewManager } from '../components/ViewManager'; import type { PersistenceManager } from '../PersistenceManager'; import type { EventBus } from '../utils/EventBus'; import type { MessageHandler } from './MessageHandler'; import type { FileHandler } from './FileHandler'; import type { ErrorHandler } from './ErrorHandler'; /** * ConversationOrchestrator - High-level conversation flow management * * This orchestrator manages: * - Complete conversation lifecycles * - Multi-turn conversation flows * - Conversation state transitions * - Integration between message, file, and view handling * - Business logic for conversation management */ export declare class ConversationOrchestrator { private config; private stateManager; private viewManager; private messageHandler; private fileHandler; private errorHandler; private eventBus; private persistenceManager; private logger; private currentConversationId; private conversationStartTime; private messageCount; constructor(config: ChatConfig, stateManager: StateManager, viewManager: ViewManager, messageHandler: MessageHandler, fileHandler: FileHandler | null, errorHandler: ErrorHandler, eventBus: EventBus, persistenceManager: PersistenceManager | null, debug?: boolean); /** * Start a new conversation */ startNewConversation(conversationId?: string, initialMessage?: string): Promise<void>; /** * Send a message in the current conversation */ sendMessage(message: string, attachments?: string[]): Promise<void>; /** * Handle prompt click from welcome screen */ handlePromptClick(prompt: string): Promise<void>; /** * Load an existing conversation */ loadConversation(conversationId: string): Promise<void>; /** * Delete a conversation */ deleteConversation(conversationId: string): Promise<void>; /** * Clear current conversation and return to welcome screen */ clearConversation(): Promise<void>; /** * Get current conversation info */ getConversationInfo(): { id: string | null; messageCount: number; startTime: number | null; duration: number | null; }; /** * Check if there's an active conversation */ hasActiveConversation(): boolean; /** * Setup event listeners */ private setupEventListeners; /** * Auto-save conversation if persistence is enabled */ private autoSaveConversation; /** * Gather client metadata for API calls */ private gatherClientMetadata; /** * Generate a unique conversation ID */ private generateConversationId; /** * Clean up resources */ destroy(): void; } declare module '../types/events' { interface EventTypeRegistry { 'conversation:started': { conversationId: string; hasInitialMessage: boolean; source: string; timestamp: number; }; 'conversation:message_sent': { conversationId: string; messageCount: number; hasAttachments: boolean; source: string; timestamp: number; }; 'conversation:error': { conversationId: string; error: Error; operation: string; source: string; timestamp: number; }; 'conversation:deleted': { conversationId: string; source: string; timestamp: number; }; 'conversation:switch_requested': { conversationId: string; source: string; timestamp: number; }; 'conversation:delete_requested': { conversationId: string; source: string; timestamp: number; }; 'conversation:new_requested': { source: string; timestamp: number; }; } }