import { UIMessage } from '@ai-sdk/react'; import { ChatOnDataCallback } from 'ai'; import { Component, Editor } from 'grapesjs'; import { UpdatesFromStream } from './components/utils'; import { AiChatToolName, AiChatTools, AiChatToolsArguments, ChatApi, ChatToolAgentCode, ToolDataAddComponent, ToolDataAddPage, ToolDataAddProjectPage, ToolDataEditComponent, ToolDataTypes } from './types'; export interface ToolAddComponentSetupResult { target: Component | undefined; at: number | undefined; domPosition: InsertPosition; tempDOM: HTMLDivElement; tempTargetEl: HTMLElement | undefined; updatePreview: (content: string) => void; cleanUp: () => void; } export interface ToolEditComponentSetupResult { toUpdate: { cleanup(): void; update: (content: string) => Map; }; mapUpdates: Map; cleanUp: () => void; } export interface ToolAddPageSetupResult { pageId: string; cmpRoot: Component; cleanUp: () => void; } export interface ToolAddProjectPageSetupResult { cmpRoot: Component; pageName: string; isEmail: boolean; cleanUp: () => void; } interface ToolStatusAddComponent { type: ChatToolAgentCode.ADD_COMPONENT_CODE; toolSetup: ToolAddComponentSetupResult; content: string; completed?: boolean; } interface ToolStatusEditComponent { type: ChatToolAgentCode.EDIT_COMPONENT_CODE; toolSetup: ToolEditComponentSetupResult; content: string; completed?: boolean; } interface ToolStatusAddPage { type: ChatToolAgentCode.ADD_PAGE_CODE; toolSetup: ToolAddPageSetupResult; content: string; completed?: boolean; } interface ToolStatusAddProjectPage { type: ChatToolAgentCode.ADD_PROJECT_PAGE_CODE; toolSetup: ToolAddProjectPageSetupResult; content: string; completed?: boolean; } /** * Generic tool status entry for buffering streaming content * Used for tools that don't have a specific processor */ export interface ToolStatusGeneric { type: 'generic'; content: string; completed?: boolean; } export type ToolStatusProgressEntry = ToolStatusAddComponent | ToolStatusEditComponent | ToolStatusAddPage | ToolStatusAddProjectPage | ToolStatusGeneric; export type ToolStatusProgressMap = Map; export declare function toolAddComponentSetup(editor: Editor, args: AiChatToolsArguments[AiChatToolName.ADD_NEW_COMPONENT]): ToolAddComponentSetupResult; export declare function toolAddComponentEnd(editor: Editor, toolSetup: ToolAddComponentSetupResult, content: string): Component | undefined; export declare function processToolAddComponent(props: { editor: Editor; toolStatus: ToolDataAddComponent; toolStatusProgress: ToolStatusProgressMap; }): void; export declare function toolEditComponentEnd(editor: Editor, toolSetup: ToolEditComponentSetupResult): void; export declare function processToolEditComponent(props: { editor: Editor; toolStatus: ToolDataEditComponent; toolStatusProgress: ToolStatusProgressMap; }): void; export declare function toolAddPageEnd(toolSetup: ToolAddPageSetupResult, content: string): void; export declare function processToolAddPage(props: { editor: Editor; toolStatus: ToolDataAddPage; toolStatusProgress: ToolStatusProgressMap; }): void; export declare function toolAddProjectPageEnd(editor: Editor, content: string, name: string): void; export declare function processToolNewProjectPage(props: { editor: Editor; toolStatus: ToolDataAddProjectPage; toolStatusProgress: ToolStatusProgressMap; }): void; type DataToolStatusProcessor = (props: { editor: Editor; toolStatus: ToolDataTypes; toolStatusProgress: ToolStatusProgressMap; }) => void; export declare const dataToolStatusProcessors: { [K in ChatToolAgentCode]?: DataToolStatusProcessor; }; export declare const processDataToolsStatus: ({ editor, data, toolStatusProgress, tools, chatApi }: { editor: Editor; data: Parameters>[0]; toolStatusProgress: ToolStatusProgressMap; tools: AiChatTools; chatApi?: ChatApi; }) => void; export {};