import { type Credentials } from "../credentials"; /** * Schema of one action record. Mirrors `ReplayActionRecord` in * `packages/service/codegen/replay/types.ts` — kept inline here to keep * the published `@builder.io/dev-tools` package free of cross-package * type imports. * * Only the user-visible content is captured: assistant `text` blocks * and `thinking` blocks. Tool calls and chapter markers are * deliberately excluded. */ export interface ReplayActionRecord { /** Wall-clock timestamp in ms epoch. */ ts: number; type: "text" | "thinking" | "checkpoint"; content?: string; label?: string; imageUrl?: string; } /** * Buffers user-visible agent blocks (`text`, `thinking`) during a * `browser-testing` run and POSTs them as JSON to * `/codegen/replay/:uuid/actions`. The main service appends them to * `replay.actionsStr` on the Firestore doc inside a transaction, so * concurrent uploads can't drop entries. * * Failures are intentionally swallowed: replay is a nice-to-have and * must never affect the agent run. */ export declare class ReplayActionUploader { #private; constructor(opts: { credentials: Credentials; replayId: string; debug?: boolean; }); /** * `ts` should be the moment the assistant *began* streaming this * block, not when it finished. Defaults to `Date.now()` for * back-compat but callers are expected to pass an earlier timestamp. */ recordText(content: string, ts?: number): void; recordReasoning(content: string, ts?: number): void; recordCheckpoint(ts?: number, label?: string, imageUrl?: string): void; flush(): Promise; close(): Promise; }