import type { AgentActivityRecord } from '@excitedjs/dreamux-types'; /** One parsed native line, positioned inside its own rollout segment. */ export interface CodexActivityLine { start: number; boundaryBytes: Buffer; value: Record; } /** One neutral record, anchored to the native line that produced it. */ export interface CodexPositionedRecord { start: number; boundaryBytes: Buffer; record: AgentActivityRecord; } /** * Project chronological native lines into chronological neutral records. * * The projection is deliberately flat: it does not require a completed turn, so * an actively growing session yields records as soon as its lines are written. * Only assistant text and tool name/status cross the seam — never tool * arguments, tool results, or any native line shape. * * Codex writes an assistant message twice: a live `event_msg`/`agent_message` * first, then a finalized `response_item` message. They are two representations * of one fact, so exactly one is emitted — the live one, which is what makes an * in-progress turn visible before its response item exists. * * Pairing is therefore *directional*, matching the order Codex writes in: a * finalized record is dropped only when an earlier live record in this window * already stands for it. A live record is never suppressed, so an older * finalized message can never hide the active turn that happens to repeat its * text; the cost is that such a repeat is shown twice, once per real message. */ export declare function projectCodexActivity(lines: readonly CodexActivityLine[], includeTools: boolean): CodexPositionedRecord[]; //# sourceMappingURL=projection.d.ts.map