@agentman/chat-widget
Version:
Agentman Chat Widget for easy integration with web applications
134 lines (133 loc) • 4.1 kB
TypeScript
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;
};
}
}