import type { MessageUpdateEvent, SessionManager, ToolExecutionEndEvent, ToolExecutionStartEvent, ToolExecutionUpdateEvent } from "@earendil-works/pi-coding-agent"; import { type JsonValue, type TimelineEvent, type TimelinePartial } from "../protocol/v2/index.js"; export declare const TIMELINE_MARKER: "remote-pi:timeline-v2"; type MessageRole = "user" | "assistant" | "toolResult"; export type Correlation = { /** 内部投递令牌只在内存回调链中流转,不写入 marker 或协议帧。 */ deliveryToken?: string; clientRequestId?: string; channelId?: string; requestId?: string; origin: "pwa" | "extension" | "unknown"; delivery: "normal" | "queued" | "unknown"; senderRef?: string; }; type SessionEntry = ReturnType[number]; export type TimelineStarted = { eventId: string; groupId: string; role: MessageRole; correlation: Correlation; blocks: JsonValue[]; }; export type TimelineRuntimeOptions = { getHistoryGeneration?: () => string; onStarted?: (started: TimelineStarted) => void; onPublished?: (event: TimelineEvent, correlation: Correlation) => void; onPartial?: (partial: TimelinePartial, correlation: Correlation) => void; }; export declare class TimelineRuntime { private readonly correlations; private readonly messageCorrelations; private readonly pending; private readonly pendingByRole; private readonly published; private readonly toolAssociations; private sessionManager; private epoch; private stateRevision; private activeGroupId; private active; private readonly getHistoryGenerationValue?; private readonly onStarted?; private readonly onPublished?; private readonly onPartial?; constructor(options?: TimelineRuntimeOptions); attach(sessionManager: SessionManager): void; resetSession(sessionManager: SessionManager): void; private resetState; get sessionId(): string | null; get historyGeneration(): string | null; get currentEpoch(): number; get currentGroupId(): string | null; getPublishedEvents(): readonly TimelineEvent[]; getCorrelation(message: object): Correlation | undefined; publishSessionEntry(entry: SessionEntry, sessionManager: SessionManager): TimelineEvent | null; runWithCorrelation(correlation: Correlation, callback: () => T): T; currentCorrelation(): Correlation | undefined; onAgentStart(): void; onAgentEnd(): void; onMessageStart(message: unknown, sessionManager: SessionManager): TimelineStarted | null; onMessageUpdate(event: MessageUpdateEvent, sessionManager: SessionManager): void; onMessageEnd(message: unknown, sessionManager: SessionManager): void; onToolExecutionStart(event: ToolExecutionStartEvent, sessionManager: SessionManager): void; onToolExecutionUpdate(event: ToolExecutionUpdateEvent, sessionManager: SessionManager): void; onToolExecutionEnd(event: ToolExecutionEndEvent, sessionManager: SessionManager): void; private publishToolPartial; recover(sessionManager: SessionManager): TimelineEvent[]; private findPending; private messageIdentity; private publish; private publishPartial; private partialDeltaChunks; private correlationFor; private buildMarker; private parseMarker; private correlationFromMarker; private roleForMarker; private scanTargetAfterMarker; private toTimelineEvent; private toSystemEvent; private asMessageRecord; private messageRole; private timestamp; private userBlocks; private assistantBlocks; private textFromContent; private nonEmpty; private base64Length; } export {};