/** Avoid an expensive remote workspace export when a turn never touched the computer. */ export function createRunWorkspaceCheckpoint(checkpoint: () => Promise) { let dirty = false; return { markDirty() { dirty = true; }, markFiles(files: readonly unknown[]) { if (files.length > 0) dirty = true; }, async flush() { if (!dirty) return false; dirty = false; try { await checkpoint(); return true; } catch (error) { dirty = true; throw error; } }, }; }