import type { EngineRunCounters, PersistedRunState, RunHaltReason, RunQueueEntry } from "../types"; export class PersistedRunStateTerminalBuilder { mergeTerminal(args: { state: PersistedRunState; engineCounters: EngineRunCounters; status: "completed" | "failed" | "halted"; reason?: RunHaltReason; queue: RunQueueEntry[]; outputsByNode: PersistedRunState["outputsByNode"]; nodeSnapshotsByNodeId: NonNullable; finishedAtIso?: string; }): PersistedRunState { return { ...args.state, engineCounters: args.engineCounters, status: args.status, reason: args.reason, pending: undefined, queue: args.queue, outputsByNode: args.outputsByNode, nodeSnapshotsByNodeId: args.nodeSnapshotsByNodeId, finishedAt: args.finishedAtIso ?? args.state.finishedAt, }; } }