/**
 * Cursor Agent stream-json 输出解析器
 * 将 Cursor Agent CLI 的 JSON 流输出转换为标准化日志
 *
 * 参考 vibe-kanban Rust 实现: crates/executors/src/executors/cursor.rs
 *
 * Cursor Agent 输出 JSONL 格式，每行一个 JSON 对象，包含以下类型：
 * - system: 系统初始化信息（model, session_id, cwd 等）
 * - user: 用户消息
 * - assistant: 助手文本消息（流式文本块）
 * - thinking: 思考过程
 * - tool_call: 工具调用（subtype: "started" | "completed"）
 * - result: 执行结果元数据
 */
import type { MsgStore } from './msg-store.js';
/**
 * Cursor Agent 解析器
 * 解析 Cursor Agent CLI 的 stream-json (JSONL) 输出
 */
export declare class CursorAgentParser {
    private msgStore;
    private buffer;
    private worktreePath;
    private sessionIdReported;
    private modelReported;
    private currentAssistantBuffer;
    private currentAssistantIndex;
    private currentThinkingBuffer;
    private currentThinkingIndex;
    private lastAssistantIndex;
    private lastThinkingIndex;
    private retryEntryIndex;
    private retryEntryId;
    private callIndexMap;
    constructor(msgStore: MsgStore, worktreePath?: string);
    /** 使用 MsgStore 共享的索引提供器 */
    private get indexProvider();
    /**
     * 处理原始输出数据（可能包含多行或不完整行）
     */
    processData(data: string): void;
    /**
     * 处理 stderr 数据
     */
    processStderr(data: string): void;
    /**
     * 解析单行 JSON
     */
    private parseLine;
    /**
     * 一行中可能包含多个 JSON 对象（Cursor 在 retry/resume 时偶尔会拼到同一行）
     */
    private parseJsonSegments;
    /**
     * 处理已解析的 JSON 消息
     */
    private handleMessage;
    /**
     * 处理 system 消息
     */
    private handleSystem;
    /**
     * 处理 user 消息
     * 跳过 — 用户消息已由 SessionManager.sendMessage() 主动写入 MsgStore，
     * 这里如果再处理 Cursor Agent 的 user 回显会导致前端显示重复。
     */
    private handleUser;
    /**
     * 处理连接状态消息
     * 这类事件仅用于底层重连控制，不应直接暴露到聊天流。
     */
    private handleConnection;
    /**
     * 处理重试状态消息
     * 使用单条可更新的 entry，避免把原始 JSON 暴露给前端。
     */
    private handleRetry;
    /**
     * 处理 assistant 消息（流式文本块合并）
     */
    private handleAssistant;
    /**
     * 处理 thinking 消息（流式思考块合并）
     */
    private handleThinking;
    /**
     * 处理 interaction_query 消息
     * cursor-agent 通过此事件发起 web_search / web_fetch 等需要宿主审批的工具调用。
     * - request 子类型：作为 tool_use "started" 入库，注册 toolCallId → index 映射
     * - response 子类型：noop（审批结果已在后续 tool_call/completed 中体现）
     */
    private handleInteractionQuery;
    /**
     * 处理 tool_call 消息
     */
    private handleToolCall;
    /**
     * Extract todo items from Cursor's updateTodosToolCall
     */
    private extractTodoExtras;
    /**
     * 收到 retry 时，后续 assistant/thinking 往往是从头重放。
     * 复用上一条 entry index，并从空 buffer 重新覆盖内容，避免出现重复消息。
     */
    private beginReplayFromRetry;
    private clearRetryState;
    private formatRetryContent;
    private formatRetryDetail;
    /**
     * 刷新 assistant 缓冲区
     */
    private flushAssistant;
    /**
     * 刷新 thinking 缓冲区
     */
    private flushThinking;
    /**
     * 完成解析
     */
    finish(): void;
}
/**
 * 创建 Cursor Agent 解析器
 */
export declare function createCursorAgentParser(msgStore: MsgStore, worktreePath?: string): CursorAgentParser;
//# sourceMappingURL=cursor-agent-parser.d.ts.map