import { type ResolvedConfig } from "../types.js"; /** * Read this project's signals, amend a skill, and keep the amendment only if * the frozen set still holds. * * Its own function because it is the one subcommand that writes, and the one * that has to be held under a lock while it does. */ export interface ImproveOptions { /** * An automatic trigger is calling: skip free (no model call) whenever the * outcome could only be a proposal, because a proposal is a file waiting * for a person and the person-facing nudges cover that case for nothing. */ auto?: boolean; /** A person explicitly agreeing to spend on a proposal-only outcome. */ propose?: boolean; /** Ignore the watermark and replay every signal ever gathered. */ allSignals?: boolean; } /** * One improve at a time. * * An amendment is written by replacing this project's skill layer and rolled * back by restoring whatever was there before, so a second improve running over * the top of the first would restore the first's "before" and quietly delete an * amendment that had already passed the gate. It is also the lock the page * reads to say lookout is learning right now. */ export declare function improveSkills(resolved: ResolvedConfig, model: string, opts?: ImproveOptions): Promise;