/** * Claude to AG-UI Transformation Logic * * Shared transformation functions for converting raw Claude stream-json messages * to AG-UI events. Used by both: * - Backend: Real-time transformation for SSE streaming * - Frontend: Historical transformation for log replay * * @module claude-to-ag-ui */ /** * Claude stream-json message format * Based on Claude Code CLI output structure */ export interface ClaudeStreamMessage { type: "assistant" | "tool_result" | "result" | "error"; message?: { id?: string; model?: string; role?: string; content?: Array<{ type: "text" | "tool_use"; text?: string; id?: string; name?: string; input?: any; }>; stop_reason?: string; stop_sequence?: string | null; }; result?: { tool_use_id?: string; content?: Array<{ type: string; text?: string; }>; }; usage?: { input_tokens?: number; output_tokens?: number; cache_read_input_tokens?: number; cache_creation_input_tokens?: number; }; error?: { message: string; type?: string; }; } /** * AG-UI Event types * Minimal interface needed for transformation */ export interface AgUiEvent { type: string; timestamp: number; [key: string]: any; } /** * Transform a single Claude stream-json message to AG-UI events * * @param message - Raw Claude message from stream-json output * @param startSequence - Starting sequence number for events * @returns Array of AG-UI events (may be empty for unhandled message types) * * @example * ```typescript * const message = JSON.parse(line); * const events = transformClaudeMessageToAgUi(message, 0); * events.forEach(event => console.log(event)); * ``` */ export declare function transformClaudeMessageToAgUi(message: ClaudeStreamMessage, startSequence: number): AgUiEvent[]; /** * Parse array of raw execution logs (NDJSON format) to AG-UI events * * Processes each line as a separate Claude message and transforms to AG-UI events. * Handles parse errors gracefully by logging warnings and continuing. * * @param rawLogs - Array of NDJSON log lines * @returns Promise resolving to array of AG-UI events * * @example * ```typescript * const logs = await fetch('/api/executions/123/logs').then(r => r.json()); * const events = await parseExecutionLogs(logs.logs); * console.log(`Parsed ${events.length} events`); * ``` */ export declare function parseExecutionLogs(rawLogs: string[]): Promise; //# sourceMappingURL=claude-to-ag-ui.d.ts.map