/** * Chat Provider Interface * * Defines the contract for chat platform integrations (Discord, Slack, Matrix, etc.) */ export interface ChatMessage { id: string; channelId: string; authorId: string; authorName: string; content: string; timestamp: Date; threadId?: string; } export interface ChatCommand { command: string; args: string[]; message: ChatMessage; } export interface ThreadCreateOptions { channelId: string; name: string; message: string; } export interface ThreadMessageOptions { threadId: string; channelId: string; content: string; } export interface VerbosityLevel { level: "low" | "medium" | "high"; description: string; } /** * Chat Provider Interface * * All chat platform integrations must implement this interface */ export interface IChatProvider { /** * Connect to the chat platform */ connect(): Promise; /** * Disconnect from the chat platform */ disconnect(): Promise; /** * Check if the provider is connected */ isConnected(): boolean; /** * Send a message to a channel or thread */ sendMessage(channelId: string, content: string): Promise; /** * Create a thread for job updates */ createThread(options: ThreadCreateOptions): Promise; /** * Send a message to a thread */ sendThreadMessage(options: ThreadMessageOptions): Promise; /** * Parse a command from a message */ parseCommand(message: ChatMessage): ChatCommand | null; /** * Edit an existing message in a channel. * * Optional method for providers that support message editing * (e.g., Matrix via m.replace, Discord via message.edit). * Used for streaming AI responses with incremental updates. * * @param channelId - The channel/room ID * @param messageId - The original message/event ID to edit * @param content - The updated message content */ editMessage?(channelId: string, messageId: string, content: string): Promise; }